Для тех, кто не знает, есть замечательный набор утилит для администрирования баз данных mysql – percona 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.