Назад | Перейти на главную страницу

Мастер-репликация прерывается после перезагрузки сервера

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

МАСТЕР 1:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

bind-address=Master 1
port=3306
query_cache_size=16M
query_cache_limit=4M
tmp_table_size=64M
max_heap_table_size=64M
key_buffer_size=32M
table_open_cache=32
innodb_file_per_table=1
max_connections=1000
server_id=2
binlog_format='MIXED'
log-bin=/var/log/mariadb/mariadb-bin.log
max_allowed_packet=1000M
general_log=1
auto_increment_increment=2
auto_increment_offset=2



[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

!includedir /etc/my.cnf.d

МАСТЕР2:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
bind-address=Master2
port=3306
query_cache_size=16M
query_cache_limit=4M
tmp_table_size=64M
max_heap_table_size=64M
key_buffer_size=32M
table_open_cache=32
innodb_file_per_table=1
#innodb_force_recovery=5
max_connections=1000
server_id=1
binlog_format='MIXED'
log-bin=/var/log/mariadb/mariadb-bin.log
max_allowed_packet=1000M
general_log=1
auto_increment_increment=2
auto_increment_offset=1

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

!includedir /etc/my.cnf.d

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

ОШИБКА:

190428 3:21:02 [ОШИБКА] Slave SQL: не удалось выполнить событие Update_rows в таблице nagios.nagios_servicestatus; Не удается найти запись в nagios_servicestatus, код ошибки: 1032; ошибка обработчика HA_ERR_KEY_NOT_FOUND; главный журнал событий mariadb-bin.000002, end_log_pos 259533668, Error_code: 1032

190428 3:21:02 [Предупреждение] Ведомый: не удается найти запись в 'nagios_servicestatus' Код ошибки: 1032

190428 3:21:02 [ОШИБКА] Ошибка при выполнении запроса, ведомый поток SQL прерван. Устраните проблему и перезапустите подчиненный поток SQL с «SLAVE START». Остановились на логе mariadb-bin.000002, позиция 259532745

190429 9:31:32 [ОШИБКА] Ошибка чтения пакета с сервера: потеряно соединение с сервером MySQL во время запроса (server_errno = 2013)

190429 9:31:32 [Примечание] Ведомый поток ввода-вывода прерван во время чтения события

190429 9:31:32 [Примечание] Выход из потока ввода-вывода ведомого устройства, чтение до журнала 'mariadb-bin.000002', позиция 369070380

190429 9:31:33 [Примечание] Инициализирован подчиненный поток SQL, запуск репликации в журнале 'mariadb-bin.000002' в позиции 259532745, в журнале реле './mariadb-relay-bin.000002' позиция: 143476361

190429 9:31:33 [Примечание] 'SQL_SLAVE_SKIP_COUNTER = 1' выполняется в relay_log_file = '. / Mariadb-relay-bin.000002', relay_log_pos = '143476361', master_log_name = 'mariadb-bin.000002', master_log_pos = '259532745 'и новая позиция в relay_log_file ='. / mariadb-relay-bin.000002 ', relay_log_pos =' 143477368 ', master_log_name =' mariadb-bin.000002 ', master_log_pos =' 259533752 '

190429 9:31:33 [ОШИБКА] Slave SQL: не удалось выполнить событие Update_rows для таблицы nagios.nagios_customvariablestatus; Не удается найти запись в nagios_customvariablestatus, код ошибки: 1032; ошибка обработчика HA_ERR_KEY_NOT_FOUND; главный журнал событий mariadb-bin.000002, end_log_pos 259534029, Error_code: 1032

190429 9:31:33 [Предупреждение] Подчиненное устройство: не удается найти запись в 'nagios_customvariablestatus' Код ошибки: 1032

190429 9:31:33 [ОШИБКА] Ошибка при выполнении запроса, ведомый поток SQL прерван. Устраните проблему и перезапустите подчиненный поток SQL с помощью «SLAVE START». Остановились на логе mariadb-bin.000002, позиция 259533752

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

Спасибо,

Я думаю, что вторичный мастер не был синхронизирован, и приложения обращаются к вторичному мастеру, чтобы изменить запись, пожалуйста, проверьте основной мастер, если он исправен, и укажите подключения приложений к нему. Если вы используете haproxy, это может быть проще для вас. Я думаю, что лучший вариант - снова настроить вторичный мастер.