我刚刚启动了两个 EC2 实例,并为每个实例获取了一个弹性 IP。我似乎无法连接。以下是我的配置主要部分:
auto_increment_offset=2
log-bin=master2-bin
binlog-ignore-db=mysql
server-id = 2
master-host = 10.122.191.151
master-user = slaverep
master-password = *********
master-port = 3306
另一台服务器的配置非常相似(但在一些方面 IP 不同)。
当我跑步时:
mysql> show slave status\G;
我看到以下内容:
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 107.20.178.31
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.000002
Read_Master_Log_Pos: 1145380
Relay_Log_File: mysqld-relay-bin.000005
Relay_Log_Pos: 618
Relay_Master_Log_File: mysqld-bin.000002
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1062
Last_Error: Error 'Duplicate entry '2124' for key 'PRIMARY'' on query. Default database: 'phpmyfaq'. Query: 'INSERT INTO
faqsessions
(sid, user_id, ip, time)
VALUES
(2124, -1, '10.223.61.111', 1314625795)'
Skip_Counter: 0
Exec_Master_Log_Pos: 472
Relay_Log_Space: 1148388
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: 1130
Last_IO_Error: error connecting to master '[email protected]:3306' - retry-time: 60 retries: 86400
Last_SQL_Errno: 1062
Last_SQL_Error: Error 'Duplicate entry '2124' for key 'PRIMARY'' on query. Default database: 'phpmyfaq'. Query: 'INSERT INTO
faqsessions
(sid, user_id, ip, time)
VALUES
(2124, -1, '10.223.61.111', 1314625795)'
1 row in set (0.00 sec)
ERROR:
No query specified
我现在不知道该怎么办...
编辑:
我已修复我的设置以匹配以下内容:MASTER1:
auto_increment_increment = 1
auto_increment_offset = 2
大师2:
auto_increment_increment = 2
auto_increment_offset = 2
答案1
两个服务器都尝试使用相同的自动增量 ID 集,从而导致复制时发生冲突。
要解决此问题,您需要调整auto_increment_offset
(第一台服务器上为 1,第二台服务器上为 2)和auto_increment_increment
(为 2)。如果您最终添加第三台服务器,则auto_increment_offset
需要为 3,并且所有三台服务器都需要auto_increment_increment
3。
这将导致服务器 1 使用自动增量 ID 1、3、5、7、9...,而服务器 2 将使用 2、4、6、8、10,从而防止冲突。