pt-table-sync, Странные проблемы, связанные с именем хоста - PullRequest
0 голосов
/ 18 февраля 2012

Я пытаюсь запустить pt-table-sync для повторной синхронизации репликации MYSQL Master-Slave. У меня есть две системы VPS, на которых запущен Debian 5, и репликация работает без проблем.

Проблема, с которой я столкнулся, заключается в том, что когда я запускаю pt-table-sync на сервере MASTER, он не может подключиться к серверу SLAVE. Я запускаю следующую команду:
pt-table-sync --dry-run --sync-to-master h = «ip подчиненного сервера», u = «пользователь», p = «пароль»
Который возвращается:
Хосту "мой адрес веб-сайта" не разрешено подключаться к этому серверу MySQL по адресу ...

Однако, если я пытаюсь подключиться к подчиненному серверу MySQL удаленно с главного сервера:
mysql -h 'ip подчиненного сервера' -u 'пользователь' -p'password '

Тогда у меня нет никаких проблем, и я могу нормально обращаться к базе данных.

На своем подчиненном сервере я попытался настроить учетную запись пользователя mysql, которую MASTER использует при подключении к нему, настроить хосты и даже временно установить для них значение «any», чтобы посмотреть, будет ли оно работать.

Что мне также показалось странным, так это то, что в зависимости от точной команды pt-table-sync, которую я запускаю, имя хоста машины, похоже, менялось. Например:

pt-table-sync --dry-run --sync-to-master h = «ip подчиненного сервера», u = «пользователь», p = «пароль»
-> Хост «Мой адрес веб-сайта» не может подключиться к этому серверу MySQL по адресу ...

pt-table-sync --dry-run --sync-to-master 'ip подчиненного сервера'
-> Доступ запрещен для пользователя 'root' @ '' my VPS name '' (с использованием пароля: НЕТ)

Я не уверен, почему он предоставляет разные имена хостов в зависимости от двух команд? Любые идеи, почему это не будет работать, если я могу подключиться напрямую к MySQL удаленно?

Ответы [ 3 ]

1 голос
/ 01 июня 2012

У меня была похожая проблема, вызванная разными паролями для пользователя root MySQL на обоих серверах.После того, как я установил одинаковый пароль на обоих концах, все начало работать.

0 голосов
/ 23 января 2014

Да, как ты и сказал user3207102 , я решил проблему.

Вот что я сделал.

  1. Сначала я проверил, может ли мой пользователь просто войти в мастер с подчиненного или нет.

    $ mysql -uroot -pmypassword123 -h master.ip.addr
    ERROR 1045 (28000): Access denied for user 'root'@'zeronepal.local' (using password: YES)
    
  2. Я знаю, я мог войти в мастер с его собственной машины, поэтому я проверил, может ли root пользователь войти в систему с другого хоста или нет.

mysql> show grants для 'root' @ '%';
ERROR 1141 (42000): для этого гранта не определенопользователь 'root' на хосте '%'

Dooh !!У меня не было грантов ... Поэтому я даю пользователю root привилегию с password такой же, как у slave

mysql> Предоставляю все привилегии на . в 'root' @ '%', идентифицированный как 'mypassword123';
Запрос в порядке, затронуто 0 строк (0,00 с)
mysql> привилегии сброса;
Запрос в порядке, затронуто 0 строк (0,00sec)

Наконец, при запуске команды от моего мастера ...

$. / pt-table-sync -uroot --execute --sync-to-master slave.ip.addr --tables employee.blah --ask-pass
Введите пароль для 192.168.2.214:

... tadaa ... все заработало, ура (рад).Спасибо, парень.

0 голосов
/ 17 января 2014

Я решил эту проблему: ошибка не от подчиненного сервера БД, а от самого мастера! pt-table-check пытается сначала подключиться к ведомому, а затем к ведущему, используя того же пользователя и пароль! Вот почему у вас есть другой пользователь на ошибку, если вы поставили неправильный пароль (в этом случае ошибка исходит от ведомого).

В моем случае он пытался подключиться к мастеру как user @ [IP address] вместо user @ localhost (я выполнял команду на мастере), и такой пользователь не был определен. Надеюсь, это поможет.

Davide

...