[mysql] pt-table-sync: проверяем и устраняем рассинхрон между базами/таблицами

Для тех, кто не знает, есть замечательный набор утилит для администрирования баз данных mysqlpercona tools . В данной статье хотелось бы рассказать не обо всех утилитах, а только о pt-table-sync. Если кратко — то она позволяет узнать рассинхрон между базами/таблицами и, если есть, то устранить его.

Для своей работы, она потребует отдельного юзера с очень расширенными правами (CREATE, DROP, ALTER,…). Если какое-то право не дали — то pt-table-sync об этом скажет.

Пример команды, которая проверит рассинхрон касательно базы db1 между серверами master (1.1.1.1)-slave (2.2.2.2):

$ pt-table-sync --print --nobin-log --check-slave --databases=db1 --lock=0 --user=pt-user --password=pt-user-pass --verbose h=1.1.1.1 h=2.2.2.2

Это команда dry-run, то есть выведет что будет делать. Если всё устраивает, то параметр —print нужно заменить на —execute. При этом она проверит, действительно ли данные сервера связаны как master-slave.

Вот ещё несколько важных параметров:

—charset: указывает кодировку базы
—lock: уровень блокировки

VALUE  MEANING
=====  =======================================================
0      Never lock tables.
1      Lock and unlock one time per sync cycle (as implemented
       by the syncing algorithm).  This is the most granular
       level of locking available.  For example, the Chunk
       algorithm will lock each chunk of C rows, and then
       unlock them if they are the same on the source and the
       destination, before moving on to the next chunk.
2      Lock and unlock before and after each table.
3      Lock and unlock once for every server (DSN) synced, with
       C.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *