Обратный туннель работает вручную, а не для репликации
Мой MASTER MySQL сервер находится в локальной сети, и у меня есть новый ведомый, который является удаленным (то есть в Интернете). Поскольку MASTER не имеет доступного IP-адреса, я узнал из документов, что я должен установить обратный туннель. Я выполняю это:
ssh -f -N -T -R 7777: локальный хост:3306 user@slave.slave.com
на МАСТЕР. Кажется, что соединение работает - я могу перейти к slave и без проблем подключиться с mysql к MASTER. Однако по какой-то причине репликация не начинается. MASTER уже без проблем выполняет репликацию на два других ведомых устройства - кажется, конфигурация там правильная.
Я инициировал репликацию на подчиненном как:
CHANGE MASTER TO MASTER_HOST='127.0.0.1',
MASTER_PORT=7777,
MASTER_USER='my_repl',
MASTER_PASSWORD='xxxxx',
MASTER_LOG_FILE='mysql-bin.nnnnn',
MASTER_LOG_POS=mm;
SLAVE STATUS сообщает, что mysql пытается подключиться к удаленному, но не удается:
error connecting to master 'my_repl@127.0.0.1:7777' - retry-time: 60 retries: 86400
Кто-нибудь может подсказать, как диагностировать эту проблему?
Кстати: ОС - это Linux.
1 ответ
Мои извинения... Я не осознавал, что должен был определить нового пользователя с 127.0.0.1 в качестве IP.
Таким образом, "интранет" соединения используют
replication_user@machine_name
как идентификатор, соединение, которое идет через обратный туннель, использует
replication_user@127.0.0.1
как идентификатор Оба должны быть объявлены в MySQL отдельно. Остальная информация в исходном сообщении действительна - может быть, это кому-то поможет...
Привет Джон
PS: забыл упомянуть - я отлаживал это удаленно (MASTER и SLAVE мне не нужны), используя tcpdump:
tcpdump -i lo 'tcp port 7777'
на Рабской стороне, и
tcpdump -i lo 'tcp port 3306'
на MASTER (конечно, это было бы не очень полезно, когда есть много трафика).