#mysql #database
Вопрос:
У меня есть приложение с 2 environments
, т. е. одно — «разработка», другое — «производство». Теперь проблема в том , что раньше мы часто вносили изменения в базу данных для «разработки» db
, но всякий раз, когда нам приходится развертывать production
build
, поэтому нам приходится вручную обновлять всю таблицу scehma
и stored procedures
т. Д. Итак, есть ли какой-либо бесплатный инструмент или jenkins
метод, с помощью которого я могу написать script
, который будет исполняемым, когда мне нужно будет развернуть production
build
, чтобы затем я запустил этот сценарий, и обновления development
бд будут синхронизироваться production
db
?
Комментарии:
1. Мне нравится, как rails обрабатывает миграции, и похоже, что некоторые люди потратили время на то, чтобы превратить кишки в отдельные драгоценные камни, возможно, взгляните на них (я не пробовал ни один из них). github.com/thuss/standalone-migrations или github.com/jhollinger/otr-activerecord или github.com/rosenfeld/active_record_migrations
Ответ №1:
Нет отдельного инструмента, с помощью которого вы могли бы это сделать, но вот шаги по созданию базы данных CI/CD :
- во-первых, управление исходным кодом вашей базы данных с помощью git, для этой цели существует множество инструментов.
- найдите инструмент сравнения файлов схемы / данных , который предоставляет вам дельта-файл на основе папки проекта с возможностью запуска из командной строки, чтобы вы могли автоматизировать его в Jenkins. что-то вроде sqldelta или dbforge studio , которые не являются бесплатными. ты можешь найти что-нибудь бесплатное. или вы можете подготовить их вручную и перейти ко второму шагу.
- вы можете использовать flyway (бесплатный инструмент) для управления сценарием миграции и даже для простого управления версиями
- используйте Дженкинса для автоматизации процесса.
Комментарии:
1. а как насчет всех хранимых процедур? как я сделаю процесс копирования всех этих хранимых процедур из базы данных разработки в рабочую базу данных?
2. Это включает в себя все изменения данных и схем
Ответ №2:
Используйте Apache NiFi(https://nifi.apache.org/) и запланируйте задания для извлечения. Это может быть запланировано через Windows или планировщик кукурузы. В нем так много источников и опций приемника, что вы можете настроить его в соответствии с вашими потребностями. Создайте первый поток для извлечения данных из исходной базы данных, и вывод этого потока будет вводом второго потока. Второй поток считает выходные данные первого потока и загружает данные в целевую БД. Он является открытым исходным кодом и имеет хорошую поддержку пользовательского интерфейса. Мы также работаем над PoC для StreamSet(https://streamsets.com/) для облачных миграций.
Комментарии:
1. Итак, в основном я хочу перенести свои изменения схемы и сохраненные прецеденты из одной БД в другую БД, так можно ли это сделать с помощью упомянутого вами инструмента?
2. Если вас интересует миграция объектов схемы и БД, пожалуйста, используйте Liquibase или Flyway. У нас есть конвейер GitLab, и оттуда мы можем развернуть эти изменения в Dev, Pilot и Prod env. Оба они совместимы с Maven/Java/Jenkins. мы используем и то, и другое в разных проектах. Лично мне нравится FlyWay, так как мы пишем отдельный сценарий для отката. Если у вас есть объекты управления версиями БД, вы можете добавить этап в свою работу в конвейере, чтобы переместить ее в Dev или Prod env. Используйте контроль версий для изменений схемы и объектов и NiFi для миграции данных БД.
3. не могли бы вы дополнить свой ответ этими предложениями? @Тушарк
4. @mcint Обычно мы храним наш Java или любой другой код в репозитории на основе Git. Затем мы создаем PR, чтобы продвигать код в другой среде. Конвейер CICD развернет этот код в вашей соответствующей среде. Давайте рассмотрим ваши сценарии DB DDL DML в качестве кода. Вы продвигаете свой код и повышаете PR. Как только PR будет одобрен и код объединен, FlyWay/Liquibase подключится к БД из конвейера и развернет недавно добавленные сценарии в среду разработки/тестирования БД. Это может быть простой java-проект или просто файл Maven pom со структурой папок для хранения сценариев БД. И создайте конвейер соответственно. Изображения докеров также доступны для обоих.