Пока вы не выполняете никаких инструкций INSERT / UPDATE / DELETE непосредственно на подчиненном устройстве, ваше подчиненное устройство должно быть в порядке. В противном случае MySQL Replication может прерваться, если вы ВСТАВИТЕ новую строку в mydb.mytable на подчиненном устройстве, и через репликацию Slave позже обнаружит INSERT строки в mydb.mytable с тем же PRIMARY KEY. Это приводит к ошибке 1062 (Duplicate Key).
Единственный способ написать в Slave без прерывания MySQL Replication - это:
- Мастер имеет базы данных db1, db2, db3
- Ведомый реплицирует базы данных db1, db2, db3 от Master
- Ты бежишь
CREATE DATABASE db4;
на Раба
- Вы делаете INSERTs / UPDATEs / DELETEs только для db4 на Slave
- Вы не делаете INSERT / UPDATEs / DELETEs только для db1, db2, db3 на подчиненном устройстве.
Чтобы обнаружить несинхронизацию главного и подчиненного без загрузки каких-либо инструментов, выберите любую таблицу и запустите CHECKSUM TABLE. главного и подчиненного для таблицы на главном и копии ведомой этой же таблицы.
ПРИМЕР
Если у вас есть таблица mydb.mytable
, выполните команду против нее:
mysql> CHECKSUM TABLE mydb.mytable;
Если значения не совпадают, значит что-то не синхронизировано.
Если вы хотите изучить кучу столов в большом количестве, вы можете использовать MAATKIT от Percona. Вам понадобятся два специальных инструмента (у Percona также есть Percona Toolkit, который они сами разделили из MAATKIT, который теперь продвигается больше)
или
pt-table-checksum
выполнит ТАБЛИЦУ КОНТРОЛЯ СУММ против всех столов на Master и Slave. Вы можете настроить его, чтобы сделать все базы данных только на определенные.
pt-table-sync
можно запустить на Рабе против любого стола. Используя опции --print и --sync-to-master, вы можете увидеть, какие операторы SQL необходимо выполнить на подчиненном устройстве, чтобы оно полностью соответствовало мастеру. Этот инструмент не работает с таблицей, в которой отсутствует PRIMARY KEY или UNIQUE KEY.
Я использовал MAATKIT в течение многих лет. Я все еще делаю. Я еще не пробовал Percona Toolkit, но я уверен, что он должен быть того же качества, что и MAATKIT.