Não é possível conectar o mestre do MySQL EC2 ao escravo RDS

1

Estou tendo problemas para configurar a replicação entre uma instância do MySQL RDS e um mestre externo no EC2. Tanto quanto eu posso dizer, tudo está configurado corretamente, mas o escravo nunca chega ao mestre e não atualiza.

Master é o MySQL versão 5.5, eu tentei configurar slave com 5.5, 5.6 e 5.7 para verificar se a incompatibilidade de versão era o problema, mas obtém o mesmo resultado independentemente da versão.

O mestre EC2 e o RDS escravo estão na mesma região e VPC, e seus grupos de segurança têm acesso um ao outro na porta 3306.
Eu pensei que poderia ser um problema de firewall, então eu usei as mesmas configurações para criar um escravo EC2 (versão 5.5) no mesmo grupo de segurança que o escravo RDS, e aquele era capaz de se conectar, então provavelmente não é isso.

O escravo EC2 é do mesmo tamanho, portanto, provavelmente não é um problema de espaço.

Eu configurei a conexão com a ferramenta AWS RDS:

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

O escravo permanece no status 'conectando' e não exibe nenhum erro no Last_IO_Errno, mas o registro informa o seguinte (repete as mesmas mensagens repetidas vezes):

[Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000015' at position 17072930, relay log '/rdsdbdata/log/relaylog/relaylog.000001' position: 4
[Note] Error reading relay log event: slave SQL thread was killed
[ERROR] Slave I/O: error connecting to master '[master_username]@[ec2_master].compute.amazonaws.com:3306' - retry-time: 60 retries: 1, Error_code: 2003
[Note] Slave I/O thread killed while connecting to master
[Note] Slave I/O thread exiting, read up to log 'mysql-bin.000015', position 17072930

Aqui está a saída de 'show slave status' para minha instância do 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

O que estou fazendo errado na configuração do EC2- > RDS?

    
por blep 25.06.2016 / 00:59

1 resposta

1

[ec2_master].compute.amazonaws.com se parece com o nome do host de um endereço IP público. Você deve estar usando o endereço IP privado da máquina EC2, dentro da VPC.

As instâncias de RDS podem não ter acesso ao resolvedor de DNS da VPC, que faria com que o nome de host público fosse resolvido para o endereço IP privado de consultas originadas de dentro, se a VPC estivesse configurada corretamente ... mas em qualquer evento, você vai querer usar o IP privado.

    
por 25.06.2016 / 03:28