Назад | Перейти на главную страницу

Репликация RDS с удаленного мастера за пределами моего VPC

Я пытаюсь выполнить репликацию с внешнего мастера MySQL на экземпляр RDS. Я действительно не хочу отправлять данные в открытом виде через Интернет, поэтому у меня есть экземпляр EC2, на котором я настроил туннель ssh. Туннель открывает порт 3307 на экземпляре EC2 и подключается к внешнему экземпляру, на котором запущена целевая основная база данных MySQL. Из этого экземпляра EC2 я могу запустить

mysql -u <user> -p -h 127.0.0.1 -P3307

и подключитесь к целевой удаленной БД. Там все хорошо. Кроме того, я могу без проблем подключиться к БД RDS из этого экземпляра.

У меня проблема в том, что когда я настраиваю параметры репликации в своем экземпляре RDS, я не могу подключиться к удаленному экземпляру. Я делаю что-то вроде (из экземпляра EC2, имеющего доступ к обеим БД):

mysql.rds_set_external_master('<host>', 3307, 'repl_user', '<repl_pass>', 'mysql-bin.000001', 107, 0);

... где было 'localhost', '127.0.0.1', частное DNS-имя экземпляра EC2, частный IP-адрес, общедоступный IP-адрес и общедоступный DNS. При каждой попытке бега SHOW SLAVE STATUS\G отображает ошибку в строках:

Last_IO_Error: error connecting to master 'repl_user@<host>:3307'

Мой вопрос: при запуске вызова rds_set_external_master, является ли хост относительно клиента, отправляющего вызов, или относительно экземпляра RDS? Если последнее, как я могу подключиться к удаленному экземпляру?

Хорошо, пусть это будет уроком для любого в моем положении. Если при настройке туннеля вы не укажете IP-адрес машины (или 0.0.0.0), он будет привязан к loopback и, следовательно, будет частным для экземпляра, который его породил.

Сделай это:

ssh -N -f -L *:3307:<external IP>:3306 user@remote