Как я могу восстановить репликацию MySQL, не выгружая мастер?

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

Как я могу восстановить репликацию MySQL, не выгружая мастер?

5 ответов

Взгляните на Percona Toolkit. pt-table-checksum может помочь вам найти таблицы не синхронизированы, и вы можете использовать pt-table-sync после этого.

В дополнение к ответу @quanta, если вам не удалось попытаться сравнить и восстановить репликацию, вы можете использовать инструмент innobackupex, поставляемый с инструментом percona xtra-backup, для создания быстрой копии вашего мастера, которую вы можете восстановить в раб. (требуется некоторое время для запуска, но блокирует таблицы на гораздо меньшее время, чем mysqldump)

В основном, innobackupex работает как с таблицами innodb, так и с таблицами myisam, и использует преимущества базовых реализаций для значительного сокращения времени экспорта и создания согласованных резервных копий с минимальным временем блокировки.

На сайте приведен пошаговый пример создания раба из мастера; http://www.percona.com/doc/percona-xtrabackup/howtos/setting_up_replication.html

Предложение Тома Х тоже здорово. Если вы можете восстановить работу Xtra, это очень приятно. Я не уверен, что лучше в этом случае, это поможет узнать:

Версия MySQL All InnoDB? Все MyISAM? Или смешанный? Если InnoDB, вы используете файл на таблицу? Насколько большой большой? (50 ГБ против 500 ГБ?)

Если по какой-то причине вы не можете заставить работать Xtra back up или совет @quanta с помощью инструментов pt, вам, возможно, придется пойти по старому пути и остановить mysql и скопировать каталог данных в ведомое устройство, настроить его соответствующим образом и начать выполнять репликацию обратно. Если вы имеете дело с сотнями гигабайт и вам нужно сделать копию по сети, и у вас есть многоядерные процессоры, вы можете захотеть использовать pigz для своей копии http://zlib.net/pigz/ Это помогло нам где копирование файла дампа ИЛИ каталога заняло 4,5 часа, сократив до 2 часов.

Удачи, я знаю, насколько это может вызвать стресс.

Если раздел MySQL находится на LVM, то вы можете mylvmbackup. Он сделает снимок, а также сохранит координаты. Самый быстрый способ перестроить MySQL - использовать резервную копию каталога данных. Затем вы можете запустить оптимизацию для оптимизации.

Если у вас нет LVM и вы можете отключить MySQL-сервер.
1. Сделайте блокировку чтения на мастере и запишите позицию.
2. Отключение MySQL
3. Скопируйте каталог данных на целевой компьютер. Вы можете создать локальную копию каталога данных, которая обычно быстрее, чем передача по сети, чтобы минимизировать время простоя mysql.
4. Запустите MySQL
5. На целевой машине убедитесь, что настройки ib_logfile такие же, как и у master, иначе mysql будет жаловаться.

Редко копирование данных не происходит чисто, поэтому может потребоваться попробовать еще раз.

Это написано в документации MySQL -> http://dev.mysql.com/doc/refman/5.5/en/replication-howto-rawdata.html

Другие вопросы по тегам