Установка Percona-toolkit на Centos 6
http://www.percona.com/downloads/
Отсюда загружаем пакет
percona-toolkit-XXXXX. noarch.rpm
1 |
# yum install perl-IO-Socket-SSL |
1 |
# rpm -ihv percona-toolkit-2.2.5-2.noarch.rpm |
1.Определяем активный master-сервер баз данных
Ssh lb01.domain.com/lb02.domain.com
1 |
lb01 ~ # mmm_control show | grep writer |
1 |
db02(XXX.XXX.XXX.XXX) master/ONLINE. Roles: writer(yyy.yyy.yyy.yyy) |
2.На активном мастер сервере (ssh db02.domain.com)
Проверка конкретной таблицы(например, mybase.mytable) на наличие рассинхронизации с мастером(есть ли Errors или DIFFS отличны от нуля)
1 |
db02 ~ # pt-table-checksum --no-check-binlog-format --databases mybase --tables mytable |
1 2 3 |
………………………………………………………………………………………………… TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE 11-24T21:34:16 0 1 69650 4 0 0.482 mybase.mytable |
3.Проверка, какие именно slave-сервера имеют проблемы с этой таблицей
1 |
db02 ~ # pt-table-checksum --no-check-binlog-format --databases mybase --tables mytable --replicate-check-only |
1 2 3 4 5 6 7 8 |
………………………………… Differences on db06.domain.com TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY mybase.mytable 2 -4 1 PRIMARY 5697692 23250912 Differences on db03.domain.com TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY mybase.mytable_sort 2 -1 1 PRIMARY 5697692 23250912 |
Как видно из вывода, db03 и db06 имеют рассинхронизированную таблицу
4. Исправляем для db03 сначала
Смотрим какие транзакции будут произведены
1 |
db02 ~ # pt-table-sync --sync-to-master h=db03.domain.com --print --databases mybase --tables mytable |
5.Собственно,вносим изменения
1 |
db02 ~ # pt-table-sync --sync-to-master h=db03.domain.com --execute --databases mybase --tables mytable |
После чего снова проверяем на наличие рассинхронизации этой таблицы(пункт2)
1 |
db02 ~ # pt-table-checksum --no-check-binlog-format --databases mybase --tables mytable |
1 2 3 |
………………………… TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE 11-24T21:56:39 0 1 69678 4 0 0.475 mybase.mytable |
Проверяем каким серверам принадлежит проблемная таблица(пункт3)
1 |
db02 ~ # pt-table-checksum --no-check-binlog-format --databases mybase --tables mytable --replicate-check-only |
1 2 3 4 |
………………………… Differences on db06.domain.com TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY mybase.mytable_sort 2 -4 1 PRIMARY 5697692 23251292 |
По аналогии с db03 исправляем db06
1 |
db02 ~ # pt-table-sync --sync-to-master h=db06.domain.com --print --databases mybase --tables mytable |
1 |
db02 ~ # pt-table-sync --sync-to-master h=db06.domain.com --execute --databases mybase --tables mytable |
Убеждаемся, что таблица синхронизирована на всех slave-серверах
1 |
db02 ~ # pt-table-checksum --no-check-binlog-format --databases mybase --tables mytable |
1 2 |
TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE 11-24T22:21:30 0 0 69688 4 0 0.469 mybase.mytable |