[MySQL, Oracle, PostgreSQL, SQL, Microsoft SQL Server] Сравнение схем двух баз данных
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
При разработке приложений иногда возникает потребность в сравнении двух баз данных (например prod и dev).Существует ряд подходов для решения этого вопроса - от создания dump-файла со структурой db и последующим использованием diff, до использования специализированных платных решений типа dbForge или RedGate (большой список здесь).Одним из таких решений, сочетающих бесплатность и удобство использования, является Compalex. Compalex - это набор скриптов для быстрого сравнения двух схем баз даных. Для облегчения использования, все это упаковано в Docker-контейнер, который содержит как непосредственно скрипты, так и настроенное окружение для подключения к DB.Для запуска контейнера необходимо указать:
docker run -it -e DATABASE_DRIVER='mysql' \
-e DATABASE_ENCODING='utf8' \
-e SAMPLE_DATA_LENGTH='100' \
-e DATABASE_HOST='host.docker.internal' \
-e DATABASE_PORT='3306' \
-e DATABASE_NAME='compalex_dev' \
-e DATABASE_USER='root' \
-e DATABASE_PASSWORD='password' \
-e DATABASE_DESCRIPTION='Developer database' \
-e DATABASE_HOST_SECONDARY='host.docker.internal' \
-e DATABASE_PORT_SECONDARY='3306' \
-e DATABASE_NAME_SECONDARY='compalex_prod' \
-e DATABASE_USER_SECONDARY='root' \
-e DATABASE_PASSWORD_SECONDARY='password' \
-e DATABASE_DESCRIPTION_SECONDARY='Production database' \
-p 8000:8000 dlevsha/compalex
Где: DATABASE_DRIVER - используемый драйвер для подключения
- mysql - для MySQL
- pgsql - для PostgreSQL
- dblib - для Microsoft SQL Server
- oci - для Oracle
DATABASE_HOST and DATABASE_HOST_SECONDARY - имя хоста или IP для подключения к первому и второму серверу. Если базы развернуты локально на localhost:Для пользователей MacOS и Windows: используйте host.docker.internal вместо localhost , поскольку скрипт, запущенный внутри контейнера должен подключиться на хостовую машину. Для пользователей Linux: используйте опцию --network host (в этом случае контейнер "делит" сеть с хостовой машиной) и в качестве имя хоста для подключения к DB используйте localhost, либо с помощью команды ip a в секции docker0 посмотрите ip адрес хостовой машины.
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500
link/ether 02:42:e8:a9:95:58 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
Вариант с пробросом коннектов к DB через SSHЕсли вы имеете только SSH доступ на машины DB и вам не хочется открывать порты наружу - вы можете воспользоваться пробросом портов через SSH на localhost на разные порты, чтобы потом использовать эти подключения локально. Пример:
ssh -L 1522:localhost:1521 [user name]@[remote host 1]
ssh -L 1523:localhost:1521 [user name]@[remote host 2]
Пробросит 1521 порт с удаленных хостов remote host 1 и remote host 2 на localhost порты 1522 и 1523 соответственно. Если у вас есть удаленный коннект не непосредственно на машину с DB, а на некоторый application сервер, который уже имеет подключение к DB, то подключения будут выглядеть так:
ssh -L 1522:[remote database server 1]:1521 [user name]@[remote application host 1]
ssh -L 1523:[remote database server 2]:1521 [user name]@[remote application host 2]
Во всех описанных выше случаях соединение будет проброшено на локальную машину и в переменных DATABASE_HOST and DATABASE_HOST_SECONDARY нужно будет использовать ip, по схеме, описанной выше.Если базы развернуты удаленно - для подключения просто используйте IP адрес машины с DB (убедитесь что на удаленной машине открыт порт и он доступен с машины, где запущен контейнер).DATABASE_PORT and DATABASE_PORT_SECONDARY - порт для подключения к хосту баз данных. Порты по умолчанию:
- 3306 - Mysql
- 5432 - PostgreSQL
- 1433 - MSSQL
- 1521 - Oracle
DATABASE_NAME and DATABASE_NAME_SECONDARY - название сравниваемых баз данныхDATABASE_USER / DATABASE_PASSWORD and DATABASE_USER_SECONDARY / DATABASE_PASSWORD_SECONDARY - логин и пароль для доступа к базам данныхDATABASE_DESCRIPTION and DATABASE_DESCRIPTION_SECONDARY - описание баз данных (опционально, в справочных целях).После того как вы запустите контейнер, откройте браузер и перейдите http://localhost:8000. Должна отобразиться схема-сравнение, состоящая из двух колонок, в соответствии с указанными параметрами баз данных.
Иногда нет возможности организовать прямое локальное подключение к базам данных и изменения необходимо посмотреть прямо на сервере из консоли. Для этих целей я рекомендую использовать консольный браузер eLinks, который поддерживает HTML-форматирование и цвета в разметке.Необходимо установить скрипт на сервере, запустить контейнер (как это описано выше) и выполнить:
$ elinks http://localhost:8000
В своем терминале вы увидите примерно следующее:
Более подробная информация на сайте (на английском) http://compalex.net/.Здесь можно попробовать как все это работает http://demo.compalex.net/.Проект на GitHub https://github.com/dlevsha/compalexПосмотреть на DockerHub https://hub.docker.com/r/dlevsha/compalex
===========
Источник:
habr.com
===========
Похожие новости:
- [IT-компании, Социальные сети и сообщества] Microsoft выходит из гонки. Oracle выкупит часть активов TikTok в США
- [IT-инфраструктура, Будущее здесь, Системное администрирование, Управление сообществом] Инфосистемы Джет продали в Беларусь оборудование для блокировки интернета
- [Системное администрирование, Разработка под Linux, DevOps, Разработка под Windows] Нужен ли еще один курс по Git?
- [Java, Oracle] Репликация Oracle и UCP Fast Connection Failover
- [Java, Программирование] Что нового в Java 15? (перевод)
- [DevOps, Kubernetes, Серверное администрирование, Системное администрирование] Оценка производительности CNI для Kubernetes по 10G сети (август 2020) (перевод)
- [Oracle, Администрирование баз данных] Метод научного тыка, или как подобрать конфигурацию субд с помощью бенчмарков и оптимизационного алгоритма
- [Информационная безопасность, Системное администрирование, Антивирусная защита, IT-инфраструктура] Взаимодействие с Check Point SandBlast через API
- [Системное администрирование, IT-инфраструктура, Визуализация данных, DevOps] VictoriaMetrics и мониторинг приватных облаков. Павел Колобаев
- [Системное администрирование, Программирование, DevOps] Какой язык программирования быстрее работает, проще изучается, легче пишется и вообще всех прекрасней на свете?
Теги для поиска: #_mysql, #_oracle, #_postgresql, #_sql, #_microsoft_sql_server, #_administrirovanie (администрирование), #_sql, #_mysql, #_mssql, #_oracle, #_postgre, #_mysql, #_oracle, #_postgresql, #_sql, #_microsoft_sql_server
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:34
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
При разработке приложений иногда возникает потребность в сравнении двух баз данных (например prod и dev).Существует ряд подходов для решения этого вопроса - от создания dump-файла со структурой db и последующим использованием diff, до использования специализированных платных решений типа dbForge или RedGate (большой список здесь).Одним из таких решений, сочетающих бесплатность и удобство использования, является Compalex. Compalex - это набор скриптов для быстрого сравнения двух схем баз даных. Для облегчения использования, все это упаковано в Docker-контейнер, который содержит как непосредственно скрипты, так и настроенное окружение для подключения к DB.Для запуска контейнера необходимо указать: docker run -it -e DATABASE_DRIVER='mysql' \
-e DATABASE_ENCODING='utf8' \ -e SAMPLE_DATA_LENGTH='100' \ -e DATABASE_HOST='host.docker.internal' \ -e DATABASE_PORT='3306' \ -e DATABASE_NAME='compalex_dev' \ -e DATABASE_USER='root' \ -e DATABASE_PASSWORD='password' \ -e DATABASE_DESCRIPTION='Developer database' \ -e DATABASE_HOST_SECONDARY='host.docker.internal' \ -e DATABASE_PORT_SECONDARY='3306' \ -e DATABASE_NAME_SECONDARY='compalex_prod' \ -e DATABASE_USER_SECONDARY='root' \ -e DATABASE_PASSWORD_SECONDARY='password' \ -e DATABASE_DESCRIPTION_SECONDARY='Production database' \ -p 8000:8000 dlevsha/compalex
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500
link/ether 02:42:e8:a9:95:58 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever ssh -L 1522:localhost:1521 [user name]@[remote host 1]
ssh -L 1523:localhost:1521 [user name]@[remote host 2] ssh -L 1522:[remote database server 1]:1521 [user name]@[remote application host 1]
ssh -L 1523:[remote database server 2]:1521 [user name]@[remote application host 2]
Иногда нет возможности организовать прямое локальное подключение к базам данных и изменения необходимо посмотреть прямо на сервере из консоли. Для этих целей я рекомендую использовать консольный браузер eLinks, который поддерживает HTML-форматирование и цвета в разметке.Необходимо установить скрипт на сервере, запустить контейнер (как это описано выше) и выполнить: $ elinks http://localhost:8000
Более подробная информация на сайте (на английском) http://compalex.net/.Здесь можно попробовать как все это работает http://demo.compalex.net/.Проект на GitHub https://github.com/dlevsha/compalexПосмотреть на DockerHub https://hub.docker.com/r/dlevsha/compalex =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:34
Часовой пояс: UTC + 5