Русский
Русский
English
Статистика
Реклама

Postgre

Сравнение схем двух баз данных

14.09.2020 10:18:41 | Автор: admin

При разработке приложений иногда возникает потребность в сравнении двух баз данных (например 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

Подробнее..

PostgreSQL кому и зачем нужны продвинутые навыки работы?

22.10.2020 18:09:59 | Автор: admin

Совместно с Евгением Аристовым, экспертом по работе с различными СУБД, рассказываем об актуальности специализации и программе онлайн-курса PostgreSQL.

Специалисты PostgreSQL на рынке в дефиците

Популярность этой бесплатной СУБД постоянно растет. Недавно мы проводили опрос, согласно которому преобладающая часть компаний сразу выбирают Postgres или планируют переход на нее с целью сокращения расходов.

На фоне этого на рынке ощущается постоянная нехватка специалистов. Речь идет о тех администраторах и разработчиках, которые умеют не просто работать с PostgreSQL, но и могут проектировать базы данных и развертывать высоконагруженные кластера в облаках, оптимизировать запросы, поддерживать и масштабировать.

Такие специалисты могут претендовать на зарплату 200-300 тыс. рублей.

Однажды я ненадолго открыл свою резюме, а в результате еще месяц отбивался от звонков. Те, кто умеют профессионально строить базы данных под управлением PostgreSQL, действительно нарасхват.


Евгений Аристов

Какие навыки нужны рынку?

Кроме уверенного понимания Postgres, понадобятся навыки работы с самым популярным инструментом контейнеризации Kubernetes, умение настраивать все это в различных облаках AWS, GCP, Azure, работать в Docker и комфортно чувствовать себя с Linux.

Все это мы учли в программе курса PostgreSQL. Она состоит из 7 модулей и рассчитана на 4 месяца обучения.

В первом вводном модуле вы научитесь работать в облаке Google и установите Postgre в различных вариантах. На занятиях обсудим различные логические и физические уровни, разберем, как все работает из коробки, чтобы понять, из чего вообще состоит PostgreSQL.

Научитесь работать с многоверсионностью, журналами и блокировками. Разберетесь, как настраивать бэкапы и репликацию.

В каждую тему будем погружаться глубоко, чтобы вы были готовы к любым неожиданностям в работе. Казалось бы блокировки что там сложного? Но по факту там глубокий пласт проблем, который вы, возможно, не знаете.

И это единственный практико-ориентированный хардовый курс по этой СУБД в России. По сути программы других курсов дают то, что мы проходим в первых двух модулях.

Евгений Аристов

Один из самых важных модулей посвящен оптимизации и секционированию. В этой области люди, как правило, сталкиваются с большим количеством проблем, о которых даже не подозревали. После обучения вы сможете правильно джойнить, правильно брать индексы и знать, в чем их разница. Узнаете про OLAP нагрузку и чем она отличается от OLTP.

Еще два модуля посвящены кластерам: узнаете, что такое Kubernetes и с чем его едят, а дальше в Kubernetes в облаках будете разворачивать высоконагруженные и параллельные кластера.

Заключительный модуль выделен под проектную работу, которая поможет закрепить все навыки и пополнить портфолио готовым проектом.

После обучения вам не составит труда одной командой поднять виртуальную машину, развернуть базу данных Postgres, поместить это все в контейнеры докера с Java-приложением и в итоге развернуть это все двумя кнопками через Docker-Compose.

Евгений Аристов

Курс для тех, кто хочет погрузиться проектирование с использованием Postgres, прокачать свои навыки DBA, научиться работать в Kubernetes и облаках. Если вы используете сейчас платные БД, например MS Oracle, работаете с большими базами данными, планируете перейти на бесплатные БД. Если это про вас, по ссылке вас ждет вступительный тест и возможность попробовать курс еще до старта на демо-занятии Секционирование таблиц PostgreSQL, который пройдет 26 октября в 20:00. Вы получите ценные знания, познакомитесь с одним из преподавателей курса Владимиром Крокодиловым и сможете задать ему свои вопросы по обучению. До встречи в OTUS!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru