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

Не удается подключить ведущее устройство MySQL EC2 к ведомому устройству RDS

У меня возникают проблемы с настройкой репликации между экземпляром MySQL RDS и внешним мастером на EC2. Насколько я могу судить, все настроено правильно, но ведомое устройство никогда не достигает ведущего и не обновляется.

Мастер - это MySQL версии 5.5, я пробовал настроить подчиненное устройство с 5.5, 5.6 и 5.7, чтобы проверить, была ли проблема несовместимостью версий, но получаю тот же результат независимо от версии.

Главный EC2 и подчиненный RDS находятся в одном регионе и VPC, и их группы безопасности имеют доступ друг к другу через порт 3306.
Я подумал, что это может быть проблема с брандмауэром, поэтому я использовал те же настройки для создания ведомого устройства EC2 (версия 5.5) в той же группе безопасности, что и ведомое устройство RDS, и тот смог подключиться, так что, вероятно, это не так.

Подчиненное устройство EC2 такого же размера, так что, скорее всего, это не проблема с местом.

Настроил соединение с инструментом AWS RDS:

call mysql.rds_set_external_master \
    ('[ec2_master].compute.amazonaws.com', \
     3306, \
     '[master_username]', \
     '[master_password]', \
     'mysql-bin.000015', \
     17072930, \
     0);

Подчиненное устройство остается в состоянии «подключения» и не отображает ошибок в Last_IO_Errno, но журнал дает следующее (повторяет одни и те же сообщения снова и снова):

[Примечание] Инициализирован подчиненный поток SQL, запуск репликации в журнале mysql-bin.000015 с позиции 17072930, позиция в журнале реле «/rdsdbdata/log/relaylog/relaylog.000001»: 4
[Примечание] Ошибка чтения журнала событий реле: подчиненный поток SQL был убит
[ERROR] Slave I / O: ошибка подключения к главному серверу '[master_username] @ [ec2_master] .compute.amazonaws.com: 3306' - время повтора: 60 ​​попыток: 1, код ошибки: 2003
[Примечание] Ведомый поток ввода-вывода прерван при подключении к ведущему
[Примечание] Выход из потока ввода-вывода ведомого устройства, чтение журнала 'mysql-bin.000015', позиция 17072930

Вот результат команды show slave status для моего экземпляра RDS:

               Slave_IO_State: Connecting to master
                  Master_Host: [ec2_master].compute.amazonaws.com
                  Master_User: [master_username]
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000015
          Read_Master_Log_Pos: 17072930
               Relay_Log_File: relaylog.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000015
             Slave_IO_Running: Connecting
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table: mysql.plugin,mysql.rds_monitor,mysql.rds_sysinfo,mysql.rds_replication_status,mysql.rds_history,innodb_memcache.config_options,innodb_memcache.cache_policies
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 17072930
              Relay_Log_Space: 950
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 0
                  Master_UUID:
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0

Что я делаю не так с настройкой EC2-> RDS?

[ec2_master].compute.amazonaws.com выглядит как имя хоста для публичного IP-адреса. Вы должны использовать частный IP-адрес компьютера EC2 внутри VPC.

Экземпляры RDS могут не иметь доступа к преобразователю DNS VPC, что в противном случае привело бы к преобразованию общедоступного имени хоста в частный IP-адрес для запросов, исходящих изнутри, если VPC настроен правильно ... но в любом случае вы хотите использовать частный IP.