查看: 1031|回复: 1

slave是如何同步load data infile的?

 关闭 [复制链接]

签到天数: 2623 天

连续签到: 2 天

[LV.Master]至尊海神IIIIII

发表于 2010-12-17 21:18 |广东| 显示全部楼层 |阅读模式
slave是如何同步load data infile的?





   以前一直以为slave同步load data infile是转换成insert into (),(),()...写入slave的,今天发现并非如此,我了解到的情况如下:


   Master上执行
      mysql> load data INFILE '/tmp/del_proid.txt' INTO table del_proid;
   在Binlog中记录的SQL是这样的
      load data LOCAL INFILE '/tmp/SQL_LOAD_MB-1-0' INTO table del_proid
   并且在/tmp目录中也确实出现了这个文件,内容和del_proid.txt一模一样


   同步时,Master的Binlog Dump进程会读取SQL_LOAD_MB-1-0文件的数据传,送给Slave的IO进程写入Relaylog,当Slave同步到该语句时,SQL进程从Relaylog中解出数据,仍以文件名SQL_LOAD_MB-1-0写入slave-load-tmpdir参数打定的目录下,然后执行
   load data LOCAL INFILE '/tmp/SQL_LOAD_MB-1-0' INTO table del_proid
   完成后,删除该文件
   slave-load-tmpdir参数,在默认或未设置的情况下,使用tmpdir参数值
   
   有一点不清楚的是,Master会在什么时候清理掉SQL_LOAD_MB-1-0文件的,测试时看到的是,当Slave同步完这条SQL后,Master上这个文件就没有了,如果Master清理SQL_LOAD_MB-1-0文件的策略是在Slave都同步完后清除,那就有个问题,假设有一台Slave,在Master执行load data之前是stop slave;的,当其他的Slave都同步完了或过了很长时间后,这台Slave才被start slave;,这时Master上已经没有SQL_LOAD_MB-1-0文件了,这台Slave要如何同步load data呢?MySQL的手册上也没看到。




PCOS系统下载站:http://zhuangji.wang

签到天数: 56 天

连续签到: 1 天

[LV.5]灵化蟹将I

发表于 2011-1-4 00:33 |陕西| 显示全部楼层
首先感谢分享
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

本版积分规则