GTID复制下的Slave_SQL_Running: No

来源:5-6 基于GTID的复制

qq_慕UI3019677

2019-10-22

老师您好!
我用GTID作主从复制,主机和从机1都能正常运行,但是从机2的Slave_SQL_Running就起不来。
从机2的复制步骤:

1、my.cnf配置:
server_id=3
log-bin=/usr/local/mysql/log/mysql-bin.log
relay_log=/usr/local/mysql/log/server3_relay_log
gtid_mode=on
enforce-gtid-consistency
log-slave-updates=on
read_only=on
master_info_repository=TABLE
relay_log_info_repository=TABLE

2、用navicat复制主机的数据库,还原到从机2。

3、192.168.233.11是主机
change master to master_host=‘192.168.233.11’,
master_user=‘replication1’,
master_password=‘12341234’,
master_auto_position=1;

4、start slave;

show slave status G后,显示:
Last_Errno: 1062
Last_Error: Could not execute Write_rows event on table mytest1.test1; Duplicate e
ntry ‘1’ for key ‘PRIMARY’, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event’s master log mysql-bin.000006, end_log_pos 397

主键冲突了,这是为什么啊?

(最开始做主库和从库1的主从复制时,主库中是没有数据的)
最后我把从库2中的数据删除,然后重启从库2,GTID复制生效了,也就是说,当主库中有数据时,如果要做GTID主从复制,只要把表结构导进从库就行了么?但是当数据库数据量足够大时,启动slave会不会很慢?

谢谢老师!

写回答

1回答

sqlercn

2019-10-22

因该是你的数据同步方式不对,在做主从同步时需要使用 mysqldump命令并增加--master-data参数记录下当前主库的gtid,然后再在从库上进行恢复才成。具体的过程你可以参考一下课程的内容。

0
1
qq_慕UI3019677
老师,我一开始就是用了--master-data参数,导致了dump文件里有gtid信息,刚才我根据提示的消息,把--master-data删除后从新导出dump,此时dump文件中不存在GTID信息,然后把dump导入到从库中,再start slave,成功。
2019-10-22
共1条回复

MySQL提升课程 全面讲解MySQL架构设计

面面俱到讲解影响MySQL性能的各个因素,让MySQL架构了然于胸。

4419 学习 · 547 问题

查看课程