Проблема дублирования базы данных репликации Mysql Master-Slave

Я выполнил репликацию главный-подчиненный для выполнения зеркалирования веб-сервера. Веб-содержимое воспроизводится правильно. Но я столкнулся с проблемой репликации базы данных. База данных реплицируется, и ведомое устройство также может читать позицию главного журнала. Я видел различные блоги и видел ошибки пропуска как решение, но это плохо для нашей среды, так как теряет согласованность базы данных. Я попытался сделать подчиненное устройство доступным только для чтения, используя read-only = 1 в подчиненной базе данных my.cnf, но это не сработало. Мне просто интересно, как данные таблицы базы данных дублируются даже после выполнения новой репликации.

Ошибка:

Last_Error: Ошибка «Повторяющаяся запись« 155251 »для ключа« PRIMARY »» в запросе. База данных по умолчанию: ...............

0
задан 18 May 2018 в 11:11
1 ответ

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

Прежде всего, посмотрите на главные файлы журнала, если ошибка существует. В этом случае проблема не на уровне репликации.

Итак, если ошибка отсутствует на главном устройстве, вам следует повторить цикл дампа / восстановления.

Для обеспечения согласованности вам необходимо прекратите запись ( SET GLOBAL read_only = 1; ) на ведущем устройстве, пока вы дампите все базы данных. Когда дамп будет выполнен, вы можете отключить read_only. Убедитесь, что вы включили - single-transaction --add-drop-database --master-data в качестве параметров для mysqldump.

- add-drop-database: удалить базу данных на ведомом устройстве перед восстановлением . Так как не осталось ничего, что могло бы нарушить согласованность

- мастер-данные: включить мастер-файл и главную позицию. Нет необходимости вставлять его вручную

Не забудьте START SLAVE; после того, как будет выполнено восстановление на ведомом устройстве!

Надеюсь, это поможет;)

1
ответ дан 4 December 2019 в 15:58

Теги

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