GTID模式下的replication,跳过错误日志的解决方法
2015-01-21 11:01
661 查看
日志错误:
大多数replication错误都是因为日志错误引起的。
主日志和中继日志都可能出错。
评判日志错误的辨别方法:
跳过日志错误1:
可以使用手动跳过日志错误,可能会造成数据不一致
如果主日志出错,可以再slave上执行(如果有多个错误可能需要多次操作)
这个方法不适用于DTID模式的replication,GTIDs模式不允许sql_slave_skip_counter
跳过错误日志2: 不支持GTID
如果是中举日志出错,可以再slave上查看replication状态,根据日志信息跳过出错的日志:
如果master上的binlog除了问题,导致slave无法继续,
如果replication工作在GTID模式下,则需要以下操作:
模拟故障:基于DTID模式
IN slave;
handler error HA_ERR_END_OF_FILE; the event's master log localhost-bin.000006, end_log_pos 1360
并且:
Retrieved_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-18
Executed_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-17
不一致
切回到master
这时由于slave故障,所以slave不再会有任何新的数据同步过来。
Retrieved_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-19
Executed_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-17
这是我们跳过这个error,
gtid的好处是,如果有两台slave,只修复一台slave。另一台会自动更新到正常状态。
大多数replication错误都是因为日志错误引起的。
主日志和中继日志都可能出错。
评判日志错误的辨别方法:
mysqlbinlog master_binlog_file > /dev/null屏幕有输出则表示这个binlog有错误,如果没有则表示binlog正常、
mysqlbinlog slave_binlog_file >/dev/null
跳过日志错误1:
可以使用手动跳过日志错误,可能会造成数据不一致
如果主日志出错,可以再slave上执行(如果有多个错误可能需要多次操作)
mysql>stop slave; mysql>set global sql_slave_skip_counter=1; mysql>start slave;
这个方法不适用于DTID模式的replication,GTIDs模式不允许sql_slave_skip_counter
跳过错误日志2: 不支持GTID
如果是中举日志出错,可以再slave上查看replication状态,根据日志信息跳过出错的日志:
mysql>stop slave; mysql>change master to master_log_file='relay_master_log_file'; master_log_pos=<exec_master_log_pos>; mysql>start slave;跳过错误日志3 : GDIT的好处是,计算机自行处理,无需像以前的那样繁琐。
如果master上的binlog除了问题,导致slave无法继续,
如果replication工作在GTID模式下,则需要以下操作:
mysql>stop slave; mysql>set GTID_NEXT='uuid.next_id'; mysql>begin; mysql>commit; mysql>set GTID_NEXT='AUTOCOMMIT'; mysql>start slave; uuid:nextid 例如:8a1f84c4-9d67-11e4-8a9a-3085a9eb338b:12 into
模拟故障:基于DTID模式
in master: mysql>use viewdb mysql> select * from t1; +------+ | id | +------+ | 112 | | 113 | | 114 | | 115 | | 116 | | 117 | | 118 | | 119 | | 120 | | 1000 | | 110 | | 109 | mysql>show vaiiables like "%bin%" 找到 sql_bin_log
sql_log_bin | ON 全局参数,当前所发生的操作会记录到二进制日中、
mysql> set sql_log_bin=OFF;表示不记录当前的操作到二进制日志中。接下来的操作会不会同步到slave,这样就会错误
mysql> insert into t1 values (200); Query OK, 1 row affected (0.00 sec) mysql> select * from t1; +------+ | id | +------+ | | | 200 | +------+ 13 rows in set (0.00 sec
mysql> set sql_log_bin=ON; 再次打开, Query OK, 0 rows affected (0.00 sec)
mysql> insert into t1 values (201); 这是201会被同步到salve,200确不会同步到slave Query OK, 1 row affected (0.03 sec) in master
mysql> select * from t1; +------+ | id | +------+ | | 200 | 201 | in SLAVE
mysql> select * from t1; +------+ | id | +------+ | | | 201 |切回到master
mysql>delect from t1 where id=200;此步骤完了后,此操作记录到binlog,而且会同步到slave,此时slave报错,并指出master的那个binlog end_log_pos出错。
IN slave;
mysql>show salve status\G; Last_SQL_Error: Could not execute Delete_rows event on table viewdb.t1; Can't find record in 't1', Error_code: 1032;
handler error HA_ERR_END_OF_FILE; the event's master log localhost-bin.000006, end_log_pos 1360
并且:
Retrieved_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-18
Executed_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-17
不一致
切回到master
mysql>insert into t1 valuses(202);in slave
这时由于slave故障,所以slave不再会有任何新的数据同步过来。
Retrieved_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-19
Executed_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-17
这是我们跳过这个error,
mysql> stop slave; Query OK, 0 rows affected (0.01 sec) mysql> set gtid_next='61816754-9d68-11e4-8a9f-000c29c1d1ea:18'; mysql> begin; mysql> commit; mysql> set gtid_next='automatic'; mysql> start slave; mysql>show slave status\G; mysql>select * from t1; 发现数据已经保持一致。
gtid的好处是,如果有两台slave,只修复一台slave。另一台会自动更新到正常状态。
相关文章推荐
- MySQL5.6 GTID模式,同步复制报错不能跳过解决方法
- MySQL5.6 GTID模式 同步复制跳过报错解决方法
- windows2003事件日志中出现错误代码1000008e 解决方法
- 服务器一大堆错误日志的解决方法
- Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法
- PASV模式失败正在尝试PORT或数据Sock错误的解决方法
- ubuntu 开机后接着自动重启 //单用户模式如何进入//解决错误配置的方法
- 解决SPS平台列表视图切换为数据表模式错误解决方法
- SVN强制添加日志出现E205000错误解决方法
- windows 日志记录系统错误解决方法
- 存档日志ORA-16032错误解决方法
- xp系统下,Replication编程时28037错误的解决方法
- (2010-08-06)存档日志ORA-16032错误解决方法
- DNS服务器407和408错误日志的解决方法
- vs连接数据库时出现“日志文件已满”错误的解决方法
- SVN强制添加日志出现E205000错误解决方法
- 运行java程序产生hs_err_pid之类错误日志解决方法!
- vs连接数据库时出现“日志文件已满”错误的解决方法
- 网站建设中,错误日志中提示找不到favicon.ico的解决方法
- SQL 日志文件错误,9004错误的解决方法: