最近在测试环境测试验证主从同步。发现一个问题:我用source 命令导入的测试数据无法同步到从库,不知道是什么地方需要设置一下。
我直接在命令行创建表,新增数据,是可以同步到从库的。
请各位神仙解答一下。
MySQL主从同步的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在MySQL主从复制中,如果你通过
SOURCE
命令导入数据到主库,这些操作可能不会被binlog记录下来,因此从库就无法接收到相应的更新信息进行同步。这是因为SOURCE
命令是直接将SQL脚本执行结果写入数据库,而不是通过SQL语句发送给服务器,所以不触发binlog记录。要解决这个问题,你需要确保数据修改的操作能被binlog记录。有以下几种方法可以实现:
-
使用
LOAD DATA INFILE
替代SOURCE
命令加载数据。这会生成binlog事件,从而允许从库同步。LOAD DATA INFILE 'yourfile.csv' INTO TABLE yourtable FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
-
如果你坚持使用
SOURCE
命令,可以尝试在执行它之前设置binlog格式为ROW(默认可能是STATEMENT或MIXED):SET GLOBAL binlog_format = 'ROW';
这将会记录每一行数据的变化,但可能会增加binlog的大小。在完成数据导入后,记得恢复原来的binlog格式,比如回滚到STATEMENT模式:
SET GLOBAL binlog_format = 'STATEMENT';
-
为了确保所有操作都被记录,你也可以在导入数据前运行以下命令,这样所有的SQL语句都会被记录在binlog中:
SET SQL_LOG_BIN = 1;
在完成数据导入后,可以将其恢复为默认值:
SET SQL_LOG_BIN = 0;
-
另外一种方式是手动创建一个包含插入语句的SQL文件,然后使用
SOURCE
命令执行这个文件,这样也能产生binlog记录。例如,先将CSV文件转换成INSERT语句的SQL文件,再执行:mysql -u username -p database_name < convert_csv_to_inserts.sql
以上就是针对你遇到的问题的一些解决方案。根据你的具体需求选择合适的方法,并确保在生产环境中谨慎处理binlog格式和日志大小,因为这可能影响性能。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
- ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
- ¥15 PPOCRLabel
- ¥15 混合键合键合机对准标识
- ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
- ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
- ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
- ¥200 C++表格文件处理-悬赏
- ¥15 Windows Server2016本地登录失败
- ¥15 复合卡卡号轨道写入芯片卡