перезаписывают значения с помощью mysql master-slave replication

У меня есть производственная база данных, на которой выполняется репликация главный-подчиненный. Резервное копирование производственной БД выполняется с ведомого сервера.

I ' Я хотел бы сделать так, чтобы произвольное количество сред разработки могло быть репликой ведомого устройства. Проблема в том, что, в то время как подчиненный сервер ничего не записывает на него, серверы разработки могут. Например, даже простой вход через веб-интерфейс на сайт разработчика может вызвать INSERT в таблицу loginLog или что-то подобное, что может привести к остановке репликации ведомого устройства с ошибками, подобными этой:

Не удалось выполнить событие Write_rows для таблицы dbname. tablename; Повторяющаяся запись "15610534" для ключа "PRIMARY", код ошибки: 1062; ошибка обработчика HA_ERR_FOUND_DUPP_KEY; главный журнал событий bin-log.000829, end_log_pos 8209872

Мой вопрос: можно ли настроить подчиненную БД таким образом, чтобы при обнаружении конфликтов данные главной БД перезаписывали подчиненную БД ' s data?

Преимущество этого будет означать, что разработчики могут иметь доступ к данным в реальном времени в среде разработки. Например, если разработчик разрабатывает какой-то отчет о продажах в реальном времени (например, «таблицу лидеров»), эти данные в реальном времени могут быть полезны.

0
задан 11 March 2017 в 21:57
1 ответ

Нет, вы не можете устранить такие проблемы с репликацией mysql.

Но почему при разработке отчета должны возникать ключевые ошибки нарушения?

Большой вопрос в том, насколько актуальной должна быть созданная вами копия производственных данных? И о каком количестве данных идет речь?

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

Или, если это небольшая база данных, просто используйте rsync.

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

.
1
ответ дан 4 December 2019 в 16:20

Теги

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