Що стосується реплікації MySQL Master / Slave, що буде, якщо я напишу до Slave?


17

Кілька питань

  • Чи залишатиметься підлеглий запис до тих пір, поки в таблиці головного пристрою не буде вставлення / оновлення / видалення, що може вплинути на підлеглого?

  • Якщо ні, то як я можу забезпечити, щоб підлеглий не синхронізувався з головним майстром, який рухається вперед (видаляючи підлеглий запис або копіюючи цей запис до головного вручну)?

  • Найголовніше, як я можу виявити, що таблиці не синхронізовані?


будь ласка, поясніть своє запитання належним чином ...
Абдул Манаф

1
Чи не відносини між господарем / рабовласником є ​​односторонньою синхронізацією від ведучого до раба, але не навпаки? Я запитую, що було б, якщо ви напишете рабу в такому режимі.
kfmfe04

Відповіді:


14

Поки ви не виконуєте жодних тверджень INSERT / UPDATE / DELETE безпосередньо на Slave, ваш Slave повинен бути просто чудовим. В іншому випадку реплікація MySQL може зламатися, якщо ВСТУПИТИ новий рядок у mydb.mytable на підлеглому, і через реплікацію підлеглий пізніше виявить ВСТУП рядка до mydb.mytable з тим самим ПЕРВИЧНИМ КЛЮЧ. Це призводить до помилки 1062 (дублікат ключа).

Єдиний спосіб, який ви можете написати на Slave, не порушуючи реплікацію MySQL, це:

  • Майстер має бази даних db1, db2, db3
  • Slave реплікує бази даних db1, db2, db3 від Master
  • Біжи CREATE DATABASE db4; на Раба
  • Ви робите ВСТАВКИ / ОНОВЛЕННЯ / ВИДАЛЕННЯ лише до db4 на підлеглому
  • Ви не робите ВСТАВКИ / ОНОВЛЕННЯ / УДАЛЕННЯ лише для db1, db2, db3 на підлеглому

Щоб виявити, що Master і Slave не синхронізовані, не завантажуючи жодних інструментів, виберіть будь-яку таблицю і запустіть таблицю CHECKSUM проти таблиці на Master та копії Slave тієї ж таблиці.

ПРИКЛАД

Якщо у вас є таблиця mydb.mytable, запустіть команду проти неї:

mysql> CHECKSUM TABLE mydb.mytable;

Якщо значення не повертаються однаковими, то щось не відповідає синхронізації.

Якщо ви хочете обстежити купу столу масою, можете опустити MAATKIT Percona. Вам знадобляться два конкретні інструменти (Percona також має інструментарій Percona, який вони самі розщедрили від MAATKIT, який зараз просувається більше)

або

pt-table-checksumвиконає таблицю CHECKSUM проти всіх таблиць на Master і Slave. Ви можете налаштувати його для роботи з усіма базами даних лише на конкретних.

pt-table-syncможна запустити на раба проти будь-якого столу. Використовуючи параметри --print та --sync-to-master, ви можете побачити, які оператори SQL потрібно виконати на Slave, щоб вони повністю відповідали Master. Цей інструмент не працює з таблицею, у якій відсутні ПЕРВІЙНИЙ КЛЮЧ або УНІКАЛЬНИЙ КЛЮЧ.

Я використовую MAATKIT роками. Я все ще роблю. Я ще не пробував інструментарій Percona, але впевнений, що він повинен бути такої ж якості, як і MAATKIT.


для детальної відповіді. Я думав, що у мене більше запитань, але я думаю, що ваші відповіді охопили всі випадки (pt-table-sync здається дуже корисним).
kfmfe04
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.