文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL从库实用技能(一)-

2017-04-18 03:46

关注

MySQL从库实用技能(一)-

想必从库异常中断的情况不在少数,其中报错信息中1032及1062的错误占了不少的比重

错误1032指的是从库中找不到对应行的记录

错误1062指的是主键冲突

遇到此报错时,大多DBA会使用如下方法进行处理

方法一: 找出引起异常的数据然后手动在从库处理后重启SQL线程继续观察;

根据报错的信息,通过mysqlbinlog解析binlog日志,找到对应的数据,然后查看从库是否缺失数据或者已存在对应主键的数据,然后手动在从库处理对应记录的数据。处理完毕后再次开启同步。

但是,后续还得观察是否再次出现错误

方法二: 手动跳过1个或更多个事务,然后继续观察。


SQL>set global sql_slave_skip_counter=1;
SQL>start sql_thread;


SQL>set gtid_next="e29d3917-9dbb-11e9-8b64-e4434b6e2c80:11103335-16054791";
SQL>begin;commit;
SQL>set gtid_next="AUTOMATIC";

注意,手动跳过事务的方式存在一个很大的缺点: 1个事务中存在多个sql,用此方式,本事务中的其他SQL也会被跳过(具体的和binlog-format有关,对于当前常用的ROW格式均有影响)。

但是,如果一直报错,但是,这些报错又可以忽略可以怎么处理,此时也有很多方法,通常使用的是如下几种:

方法一:  使用pt-slave-restart工具跳过对应错误

但是使用pt-slave-restart工具跳过报错时,必须关闭多线程复制,因为工具分不清到底哪个线程复制出了问题,然后会报类似如下的报错:

Cannot skip transactions properly because GTID is enabled and slave_parallel_workers > 0.  See "GLOBAL TRANSACTION IDS" in the tool"s documentation

处理步骤为:


SQL> set global slave_parallel_workers=0;


pt-slave-restart  --user=root --password="Admin@123" --socket=/data/mysql3306/tmp/mysql.sock  --error-numbers=1062


mysql> set global slave_parallel_workers=8;

方法二:  在配置文件里配置跳过指定错误

在配置文件[mysqld]项里加入参数slave-skip-errors

 

slave-skip-errors=1032,1062

 

但是,此方法存在一个致命缺点:该参数是静态参数,无法动态修改,需要修改配置文件后重启数据库方可生效。

因为手动跳过事务时,会忽略相同事务下的其他正常的SQL在从库的应用;pt-slave-restart工具需要停止多线程复制,影响从库应用速度;配置slave-skip-errors又需要重启数据库方可生效。那么有没有一种方式既不会跳过多余的SQL,又无需重启数据库也不影响从库应用SQL的速度呢?答案是有的,也就是将slave_exec_mode参数设置为IDEMPOTENT,即幂等模式(默认为严格模式STRICT)。


SQL > set global slave_exec_mode="IDEMPOTENT";

改为幂等模式后,可以忽略1032及1062的错误,对同一事务内的其他SQL无影响,依旧能正常执行。

 

本文中没有举具体案例进行实战演示,不过建议大家还是自行搭建环境进行场景复现的演示(在从库先插入部分数据或先更新部分数据),然后再在主库执行,即可出现1062或1032的错误。

很多初学者或实战经验不足的同学可能不知道该参数,因此,更加建议在多种场景下测试。

如想和更多的数据库技术爱好者及时交流,可以关注公众号:数据库干货铺  回复“加群”,进入技术交流群进行沟通。

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯