pt-stable-checksum с рабами с использованием нестандартных портов
-
16-10-2019 - |
Вопрос
Попытка запустить 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, так что вы можете проверить источник самостоятельно, чтобы (возможно) посмотреть, что идет не так.