查了一下昨天的记录数量:select count(*) from tbl where time > '2009-08-19 00:00:00' and time < '2009-08-20 00:00:00';结果从服务器比主服务器少了3508条记录,有没有什么方法找出症结呢? 现在也就能确定昨天一天的记录存放在哪个bin-log里!
我在binlog中确实找到了那条insert语句: 该语句及其附近的信息如下:# at 812168928 #090819 14:03:14 server id 1 end_log_pos 812169541 Query thread_id=818249 exec_time=0 error_code=0 SET TIMESTAMP=1250661794/*!*/; INSERT INTO E_info( ... )/*!*/; # at 812169541不知道这上下两个 #at 后边的数字指的是不是这条insert into语句的pos?
INSERT INTO E_info( ... )/*!*/; 这条语句的pos为开始为812168928,结束为812169541
mysqld.log日志中也没有记录到底发生了什么!
看看slave上是否有什么出错日志没有?
如果确定知道master上对应的数据日志还存在且日志位置情况,则可以把slave上对应的数据删除掉,然后用CHANGE MASTER TO重新同步下看看是否有问题吧
不对,binlog上有这些数据!
但从库中没有这条记录!
该语句及其附近的信息如下:# at 812168928
#090819 14:03:14 server id 1 end_log_pos 812169541 Query thread_id=818249 exec_time=0 error_code=0
SET TIMESTAMP=1250661794/*!*/;
INSERT INTO E_info( ... )/*!*/;
# at 812169541不知道这上下两个 #at 后边的数字指的是不是这条insert into语句的pos?
这条语句的pos为开始为812168928,结束为812169541
按照这个方法测试了几个,将master_log_file和master_log_pos移到缺失的sql语句后,在重新执行,语句被成功执行,相应的记录成功插入了!