Репликация MySQL: не передавать неудачные запросы на подчиненные серверы

Репликация MySQL: не передавать неудачные запросы на подчиненные серверы

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

Мне кажется, что если запрос на Master завершается неудачей, то MySQL не должен беспокоиться о его распространении на Slaves. Можно ли настроить MySQL таким образом? Как? Я пробовал гуглить и просматривать документацию MySQL, но не вижу этого.

решение1

Репликация MySQL происходит через binlog. В binlog будут записаны только успешные транзакции, поэтому если запрос не будет выполнен на главном сервере, он не появится в binlog. Это означает, что такие запросы не появятся на репликах. Если у вас есть ошибки, например, репликация останавливается на slave1 из-за отсутствия столбца для обновления (и т. д.), то это означает, что ваш master и slaves отличаются. Вам следует установить percona-toolkit и проверить ваши таблицы с помощью pt-table-checksum.

Связанный контент