Dashboard > СУБД > Home > Порядок восстановления репликации на MySQL > Information > Сравнение Страницы
  СУБД Вход | Зарегистрироваться   Вариант для печати.  
  Порядок восстановления репликации на MySQL
Ключ
Эти линии были удалены. Это слово было удалено.
Эти линии были добавлены. Это слово было добавлено.

Просмотреть историю страницы


there.are.num.changes

 Так уж иногда случается, что репликация разваливается. Причин к этому может быть масса. Например:
  Иногда репликация разваливается. Причин к этому может быть масса. Например:
 1. закончилось место на слейвах (к примеру, при наложении индекса, секционировании или еще какой фигне, потому что СУБД сначала колбасит все хозяйство во временные файлы и, соответственно, места нужно больше, а потом заменяет рабочие)
 2. килл запроса на мастере тоже вполне может развалить реплику (по крайней мере, на myisam)
 3. myisam, судя по отзывам, может разваливаться вообще на ровном месте (сам не сталкивался).
  
 При простых ошибках, когда отставание между слейвом и мастером еще не слишком большое, можно сказать слейву SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;SLAVE START;SHOW SLAVE STATUS и двигаться дальше. Если слейв безнадежно отстал (он, в принципе, может догнать, но вопрос во времени), то может статься, что быстрее перелить актуальные файлы с мастера.
  
 1. Делаем эталонную копию файлов, предварительно залочив операции на базе:
  mysql> flush tables with read lock;
 2. Смотрим на узле, с которого снимаем эталонную копию, show master status, запоминаем File и Position (к примеру, mysql1-bin.000002 и 301102610)
2.1. Если имеются таблицы на InnoDB, то перед выполнением п.3 нужно остановить мастер.
 3. Копируем файлы в отдельную директорию, с которой потом можем перелить на все слейвы
 4. Снимаем блокировку (просто достаточно закрыть сессию в п.1)
 5. Стопаем mysql на слейве
 6. Удаляем старые файлы БД на слейве, заменяем эталонными
 7. Правим скрипт запуска mysql (к примеру) /etc/init.d/mysql, добавив во флаги запуска --skip-slave-start
 8. Запускаем mysql
 9. Из под рута говорим мускулу подхватывать обозначенный бинарный лог и позицию (см. выше): slave stop; CHANGE MASTER TO MASTER_LOG_FILE='mysql1-bin.000002', MASTER_LOG_POS=301102610; slave start;
 10. Правим скрипт запуска mysql, убрав из флагов запуска фигню, добавленную в п.7.
 11. Переходим к следующему слейву.
 12. Профит.
  
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5 Build:#805 Apr 26, 2007) - Запрос Bug/feature - Связаться с администраторами