無法將 MySQL EC2 主伺服器連接到 RDS 從伺服器
我在設置 MySQL RDS 實例和 EC2 上的外部主伺服器之間的複制時遇到問題。據我所知,一切都設置正確,但奴隸永遠不會到達主人並且不會更新。
Master 是 MySQL 5.5 版本,我嘗試使用 5.5、5.6 和 5.7 設置 slave 來檢查版本不兼容是否是問題,但無論版本如何都得到相同的結果。
Master EC2和slave 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 中沒有顯示錯誤,但日誌給出以下資訊(一遍又一遍地重複相同的消息):
$$ Note $$從屬 SQL 執行緒已初始化,在位置 17072930 的日誌“mysql-bin.000015”中開始複製,中繼日誌“/rdsdbdata/log/relaylog/relaylog.000001”位置:4
$$ Note $$讀取中繼日誌事件時出錯:從屬 SQL 執行緒被殺死
$$ ERROR $$從站 I/O: 連接到主站時出錯’$$ master_username $$@$$ ec2_master $$.compute.amazonaws.com:3306’ - 重試時間:60 次重試:1,錯誤程式碼:2003
$$ Note $$從 I/O 執行緒在連接到主時被殺死
$$ Note $$從 I/O 執行緒退出,讀取日誌 ‘mysql-bin.000015’,位置 17072930
這是我的 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 地址的主機名。您應該在 VPC 內使用 EC2 機器的私有 IP 地址。RDS 實例可能無法訪問 VPC 的 DNS 解析器,否則如果 VPC 配置正確,這將導致公共主機名解析為來自內部的查詢的私有 IP 地址……但無論如何,您將想使用私有IP。