@sportik174

Как импортировать с сохранением старых данных?

Есть проект который работает в продакшне и там есть данные которые создают пользователи
Я делаю доработки проекта локально, и в процессе доработок добавляются новые таблицы в базе
Как мне их правильно добавить в продакшн?
На сколько я понимаю нужно сделать бэкап локальной базы с доработками и импортировать в базу которая на продакшне
Как это сделать чтобы при этом данные в базе данных которая в продакшне не стерлись?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
@versetty777
Для начала создайте резервную копию существующей базы данных, используя команду mysqldump
mysqldump -u [username] -p [database_name] > [backup_file.sql]

Потом импортируйте новую базу данных из файла SQL:
mysql -u [username] -p [database_name] < [new_database.sql]

Восстановите данные:
mysql -u [username] -p [database_name] < [backup_file.sql]

Тут объединится новая и старая базы данных, но старые данные будут сохранены.
Ответ написан
@rPman
Универсально и полностью автоматически такое провести очень сложно.

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

Это и ddl изменения и правки данных.

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

Это может сильно усложнить миграции и даже заставить добавлять временные структуры в базе для обеспечения этой работы.

Все это должна сделать программа миграции.

Хорошим подспорьем могут являться утилиты сравнения двух баз данных, с ddl точно видел готовые утилиты, дающие sql, то для данных обычно не так удобно. Проще под каждую ситуацию писать что то свое.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы