pt-stable-checksum с рабами с использованием нестандартных портов

dba.stackexchange https://dba.stackexchange.com/questions/11988

Вопрос

Попытка запустить pt-checksum, чтобы обнаружить дрейф раба в репликации MySQL. Однако мои рабы не используют стандартный порт прослушивания TCP, и поэтому, когда я запускаю инструмент, я получаю ошибку:

Cannot connect to P=3306,h=,p=...

Он все еще контролирует таблицы мастера, но, не имея возможности подключаться к рабам, это не очень полезно. Я не могу понять, как указать альтернативные порты для рабов при запуске команды. Моя текущая команда выглядит как

pt-table-checksum -h  -P 3388 -p 
Это было полезно?

Решение

Проблема в том, что реплики не сообщают о своих портах мастеру. По умолчанию pt-checksum пытается подключиться, заполняя неизвестные по умолчанию; Если неизвестные не используют значения по умолчанию, это потерпит неудачу. В этом случае есть два варианта:

1) Используйте опцию--рекурсионную метод, чтобы изменить от проверки Show ProcessList на осмотр хостов Show подчиненных и настройки рабов, чтобы сообщить о своем хосте. Я не рекомендую это.

2) Вместо этого я рекомендую, чтобы вы использовали-recursion-method = dsn и создать таблицу, полную инструкций DSN (имя источника данных), которые сообщают инструменту, как подключиться к каждой копии. Если эта таблица является foo.bar, то вы будете использовать-recursion-method = dsn = d = foo, t = bar.

Это доступно только в серии 2,0 инструментария, но вы должны использовать это в любом случае, потому что PT-Cleble-Checksum значительно улучшается в 2.0.

Другие советы

Инструменты Percona не принимают стандартные аргументы клиента MySQL. Вам нужно указать DSN в их формате. Видеть http://www.percona.com/doc/percona-toolkit/2.0/pt-table-checksum.html#dsn-options

Тебе понадобится что -то вроде

pt-table-checksum h=myhost,u=user,p=pass,P=port

Лично мне не нравится размещать учетные данные в чем -то, что появится в списке процессов, чтобы вы могли сделать

pt-table-checksum --defaults-file=/path/to/my.cnf h=myhost,P=port

где выглядит my.cnf

[client]
user=usernameXYZ
password=asdf234JKL

Если вы хотите, чтобы это повторилось в своих рабах, вам нужно указать -повторно Опция, которая сообщает ему таблицу, чтобы поместить контрольные суммы (и, следовательно, поместить значения подчиненных на каждого соответствующего рабов). Если вы впервые захотите, чтобы он создал эту таблицу для вас с -Create-Replicate Table.

Ему не нужно будет напрямую подключаться к рабам, если вы не хотите, чтобы он следил за рабами для отставания. Это в основном проблемы, подобные запросам

Заменить в контрольные устройства ... (Masterv1, Masterv2, (выберите Blah ...))

где буквальные основные значения записываются в Binlog вдоль избранной части замены. Когда это выполняется на рабах, выбор делает, подумайте, чтобы получить контрольные суммы рабов.

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

Примечание: если вы запускаете

export PTDEBUG=1

Перед каким -либо скриптом Percona он даст вам тонны информации отладки, которая может помочь вам указать вам в направлении того, что идет не так. Также помните, что все это скрипт Perl, так что вы можете проверить источник самостоятельно, чтобы (возможно) посмотреть, что идет не так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top