背景: 主从复制的2个节点,通过keepalived进行vip绑定,原来的主库是在虚拟机里的docker容器里,而从库是安装在虚拟机环境下。在进行vip切换后,程序侧反馈无法连接vip数据库,但是,在从库中却能看到有会话连接进来。研发经过几次重启程序无果后,决定回退。回退后,发现业务数据,已经有写入数据到从库中。当再次进行主从同步时,就会产生1062主键冲突的问题。
bash./dbcompare --master-host=主库主机 --master-port=主库端口 --master-user=用户名 --mast
--slave-host=从库主机 --slave-port=从库端口 --slave-user=用户名 --slave-p
--start-time="2025-04-27 19:06:47" --end-time="2025-04-27 19:32:18"
bash./dbcompare --master-host=主库主机 --master-user=用户名 --master-password=密码 \
--slave-host=从库主机 --slave-user=用户名 --slave-password=密码 \
--schemas="jicai_member,jicai_product"
--master-host
: 主库主机地址 (默认: localhost)--master-port
: 主库端口 (默认: 3306)--master-user
: 主库用户名 (默认: root)--master-password
: 主库密码--slave-host
: 从库主机地址 (默认: localhost)--slave-port
: 从库端口 (默认: 3307)--slave-user
: 从库用户名 (默认: root)--slave-password
: 从库密码--start-time
: 比对开始时间 (格式: YYYY-MM-DD HH:MM)--end-time
: 比对结束时间 (格式: YYYY-MM-DD HH:MM)如果未指定时间范围,默认为当前时间的前24小时到当前时间。
--schemas
: 指定要比对的数据库列表,以逗号分隔。如果不指定,则比对所有非系统数据库### 确认表数据影响的行 ```sql SELECT * FROM jicai_member.`es_member_comment` WHERE create_time>=1745752007 AND create_time<=1745753538; -- comment_id:722527-722550 -- 24条记录需要处理
sqlalter table jicai_member.`es_member_comment` AUTO_INCREMENT=724920; -- 旧值:724884
sqlDELETE FROM jicai_member.`es_member_comment` WHERE comment_id>=722527 AND comment_id<=722550;;
ALTER TABLE jicai_member.`es_member_comment` AUTO_INCREMENT=722527;
mysql> start slave; Query OK, 0 rows affected (0.01 sec) mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.3.8.160 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.001561 Read_Master_Log_Pos: 704393411 Relay_Log_File: relay-bin.001569 Relay_Log_Pos: 33686424 Relay_Master_Log_File: mysql-bin.001560 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 35678151 Relay_Log_Space: 7027999946 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: 241231 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: 1 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode: optimistic SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Reading event from the relay log Slave_DDL_Groups: 0 Slave_Non_Transactional_Groups: 0 Slave_Transactional_Groups: 4265 1 row in set (0.00 sec) ERROR: No query specified mysql>
本文作者:Kevin@灼华
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!