共计 1799 个字符,预计需要花费 5 分钟才能阅读完成。
自动写代码机器人,免费开通
这期内容当中丸趣 TV 小编将会给大家带来有关 MySQL 中怎么忽略 binlog 事件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1、未启用 GTID 模式时
只需通过设定 SQL_SLAVE_SKIP_COUNTER 的值,即可忽略一些复制事件。例如:
#需要先关闭 SLAVE 服务
root@imysql.com [test] STOP SLAVE;
#忽略 N 个事件(event),通常一个 SQL 是一个事件
root@imysql.com [test] SET SQL_SLAVE_SKIP_COUNTER=N;
#再次启动 SLAVE 服务
root@imysql.com [test] START SLAVE;
2、启用 GTID 模式时
启用 GTID,想要忽略某些错误事件就稍微麻烦一点点了。
首先,我们需要先查看当前 SLAVE 复制的进度:
mysql SHOW SLAVE STATUS\G 从中看到,当前 SLAVE 复制的 GTID 进展是:
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
Last_Error: …Duplicate…key‘PRIMARY’, Error_code: 1062;…
Master_UUID: f2b6c829-9c87-11e4-84e8-deadeb54b599
Retrieved_Gtid_Set: 3a16ef7a-75f5-11e4-8960-deadeb54b599:1-283,f2b6c829-9c87-11e4-84e8-deadeb54b599:1-33
Executed_Gtid_Set: 3a16ef7a-75f5-11e4-8960-deadeb54b599:1-283,f2b6c829-9c87-11e4-84e8-deadeb54b599:1-31
Auto_Position: 1 从上面的信息可以看到,当前从 MASTER 取到了 1 -33 的事务列表,并且已执行 (看 Executed_Gtid_Set) 到了 31 这个事务 GTID 位置,在这下一个位置 (32) 上发生错误。
这时候,我们需要手工调整 SLAVE 已清除的 GTID 列表 GTID_PURGED,人为通知 SLAVE 哪些事务已经被清除了,后续可以忽略:
root@imysql.com [test] STOP SLAVE;
root@imysql.com [test] RESET MASTER;
root@imysql.com [test] SET @@GLOBAL.GTID_PURGED =“3a16ef7a-75f5-11e4-8960-deadeb54b599:1-283,f2b6c829-9c87-11e4-84e8-deadeb54b599:1-32”;
root@imysql.com [test] START SLAVE; 上面这些命令的用意是,忽略 f2b6c829-9c87-11e4-84e8-deadeb54b599:32 这个 GTID 事务,下一次事务接着从 33 这个 GTID 开始,即可跳过上述错误。
3、无论是否启用 GTID,使用 pt-slave-restart 工具
首先不得不说,percona toolkit 工具集对 DBA 而言实在太方便了。pt-slave-restart 工具的作用是监视某些特定的复制错误,然后忽略,并且再次启动 SLAVE 进程(Watch and restart MySQL replication after errors)。
简单用法示例:
#忽略所有 1062 错误,并再次启动 SLAVE 进程
[yejr@imysql.com]# pt-slave-resetart -S./mysql.sock —error-numbers=1062
#检查到错误信息只要包含 test.yejr,就一概忽略,并再次启动 SLAVE 进程
[yejr@imysql.com]# pt-slave-resetart -S./mysql.sock —error-text=”test.yejr”综上,我们虽然可以利用工具来快速忽略复制错误,但还是要掌握如何人为忽略复制错误的方法,在没有工具的时候也能了然于胸。
上述就是丸趣 TV 小编为大家分享的 MySQL 中怎么忽略 binlog 事件了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。
向 AI 问一下细节