mysqldump导出数据搭建从库,导出数据期间更新的数据未能同步到从库

使用mysqldump导出数据搭建从库。
导出过程中我在主库插入了一条数据,这条插入的数据不能同步到从库。我漏了什么东西吗?
查看主库master_log_pos
'binlog.000002', master_log_pos=1300

mysqldump -uroot -p -h192.168.1.11 --master-data=2 --single-transaction dbname >dbname.sql

导出过程中我在主库插入了一条数据:再次查看
'binlog.000002', master_log_pos=1345

导入到从库:192.168.1.12

mysql -uroot -p < dbname.sql

从库执行:

change master to master_host='192.168.1.11' , 
master_port=3306 , 
master_user='repl' , 
master_password='repl' , 
master_auto_position=1;

启动slave线程之前状态:

mysql >show slave status;
master_log_pos=4

启动slave线程

mysql >start slave;

启动从库线程之后的slave状态:

mysql >show slave status;
master_log_pos=1345

启动从库线程后:从库的master_log_pos跟主库一样master_log_pos=1345
更新主库数据,正常同步数据

发现问题: 导出过程中我在主库插入的那一条数据,没有同步到从库。

指定master_log_file也一样的问题。

change master to master_host='192.168.1.11' , 
master_port=3306 , 
master_user='repl' , 
master_password='repl' ,
master_log_file='binlog.000002', master_log_pos=1300;

启动slave线程

start slave;

启动从库线程后:从库的master_log_pos跟主库一样master_log_pos=1345
更新主库数据,正常同步数据

还是这个问题: 导出过程中我在主库插入的那一条数据,没有同步到从库

参考GPT和自己的思路:根据你提供的情况,可能是因为在导出数据期间,你使用的是--single-transaction参数,这意味着mysqldump会使用事务来确保数据的一致性。而如果在导出期间插入新数据,它不会在同一个事务中,因此它不会被导出到从库中。建议你在导出数据之前停止插入新数据,以确保从库中的数据与主库中的数据完全一致。另外,你可以考虑使用其他工具如Percona XtraBackup等来实现无锁备份和还原。

该回答引用GPTᴼᴾᴱᴺᴬᴵ,如下:


您可能忘记了在主库上启用binlog日志功能。在主库上必须开启binlog日志才能进行数据同步,否则从库将无法接收主库发送的更改日志。
您可以通过在主库上编辑my.cnf文件来启用binlog日志功能,或者在运行mysqld命令时指定--log-bin选项来启用它。
另外,还需要确保主库和从库的MySQL版本相同,以便能够正确解析和应用binlog日志。


如果以上回答对您有所帮助,望采纳~谢谢