@udi

Синхронизация БД MySQL

Стоит задача синхронизации двух почти идентичных баз данных MySQL (CMS). Одна стоит на тестовом домене, вторая на рабочем. Хостинги разные. Изменения вносятся только на тестовом домене, затем должны по команде админа попадать на рабочий домен. В базе есть записи, которые должны быть различны на двух разных доменах (имена доменов, пути к файлам на хостингах).
Как можно настроить синхронизацию подобной системы? Оптимально было бы, если бы синхронизировались только изменения, а не дампы целиком.
  • Вопрос задан
  • 8080 просмотров
Решения вопроса 1
ptchol
@ptchol
Linux system administrator
То есть вы хотите с теста на продакшен перевозить не только схему но и данные ?
Мне кажется здесь существует только 1 вариант:
Некий скрипт дампит ту часть схемы которую нужно перенести, необходимым образом осуществляет замену некоторых строк, заливает дамп на прод.
В переносе только новых данных, Вам может помочь утиилитка mysqldiff.
Но в следствие того что у вас подменяются некоторые данные, чтобы не произошло такого что все данные случайно определились как "новые", вам придется делать промежуточную базу, которая будет содержать базу теста, но с подставленными с продакшена именами, и уже эту базу сравнивать, и получать diff.
Либо после того как сделали изменения в промежуточной базе синкать ее с продом при помощи утилиты table-sync из набора percona tools.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
скорее всего очень кастомные скрипты под Вас, подвешенные на post-commit hook в git, хотя автоматически я бы такое не аппрувил на боевой сервер
Ответ написан
@Masterme
имена доменов, пути к файлам на хостингах нужно хранить в файлах, исключённых из системы контроля версий. в базе такие настройки не хранятся

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

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

Похожие вопросы