使用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日志。
如果以上回答对您有所帮助,望采纳~谢谢