mysql 从库_库管的技能与要求

mysql 从库_库管的技能与要求想必从库异常中断的情况不在少数,其中报错信息中1032及1062的错误占了不少的比重 错误1032指的是从库中找不到对应行的记录 错误1062指的是主键冲突 遇到此报错时,大多DBA会使用如下方法进行

MySQL从库实用技能(一)-

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

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

错误1062指的是主键冲突

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

1 手动处理

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

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

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

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

/* 传统点位模式复制 */
SQL>set global sql_slave_skip_counter=1;
SQL>start sql_thread;

/* GTID模式复制 */
SQL>set gtid_next="e29d3917-9dbb-11e9-8b64-e4434b6e2c80:11103335-16054791";
SQL>begin;commit;
SQL>set gtid_next="AUTOMATIC";

代码100分

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

2  持续跳过错误

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

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

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

代码100分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工具跳过错误(填写错误号)*/
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

 

代码100分slave-skip-errors=1032,1062

 

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

3  幂等模式

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

/*  在线动态修改 */
SQL > set global slave_exec_mode="IDEMPOTENT";

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

 

4. 结语

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

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

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

mysql 从库_库管的技能与要求

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9072.html

(0)
上一篇 2023-02-16
下一篇 2023-02-16

相关推荐

  • 用Python中的beautifulsoup4(bs4)库进行网页解析

    用Python中的beautifulsoup4(bs4)库进行网页解析现代互联网中,网站数量多达数十亿,每一个网站都包含了数量巨大的信息,大部分的信息都被储存在网页中。如果我们希望从网站中获取自己所需要的信息,就需要使用网页解析的技术。在Python中,beautifulsoup4(bs4)是一个强大的网页解析库,它可以轻松地从HTML或XML文件中提取并筛选信息。

    2024-07-03
    48
  • Oracle学习(四) — DQL语法

    Oracle学习(四) — DQL语法标准DQL语法 select distinct * | 列名 as 别名, 列表2 as 别名2… | 聚合函数 from 表名 as 别名, 表名2 as 别名2 ,…. where 查询…

    2023-03-05
    151
  • mysql的事务是分布式的还是单机的_innodb事务实现原理

    mysql的事务是分布式的还是单机的_innodb事务实现原理本地事务 事务特性:ACID,其中C一致性是目的,AID是手段。 实现隔离性 写锁:数据加了写锁,其他事务不能写也不能读。 读锁:数据加了读锁,其他事务不能加写锁可以加读锁,可以允许自己升级为写锁。

    2023-04-24
    151
  • 包含python中display什么意思的词条

    包含python中display什么意思的词条display()是一种函数,功能是显示输出函数。

    2023-10-30
    129
  • 线上服务器cpu很高怎么排查问题_CPU怎么放

    线上服务器cpu很高怎么排查问题_CPU怎么放告警 正在开会,突然钉钉告警声响个不停,同时市场人员反馈客户在投诉系统登不进了,报504错误。查看钉钉上的告警信息,几台业务服务器节点全部报CPU超过告警阈值,达100%。 赶紧从会上下来,SSH登录

    2023-03-19
    140
  • 解决PS闪退问题

    解决PS闪退问题Photoshop(简称PS)是一款功能强大的图像编辑软件,它被广泛应用于广告、摄影和设计等领域。但是,有时候我们可能会遇到PS闪退的问题,这会影响到我们的工作效率。本文将从多个方面探讨PS闪退问题的原因及解决方法。

    2024-05-07
    53
  • SQL 入门教程:创建表(CREATE TABLE)

    SQL 入门教程:创建表(CREATE TABLE)目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 SQL 不仅用于表数据操纵,而且还用来执行数据库和表的所有操作,包括表本身的创建和处理。 一般有两种创建表的方法: 多数 DBMS 都具有交互

    2023-04-21
    132
  • Python Strip Diagram Template – 优化代码可读性和调试效率的利器

    Python Strip Diagram Template – 优化代码可读性和调试效率的利器Python是一种高级编程语言,广泛应用于各种领域,如Web开发、人工智能、数据分析与科学计算等。在编写代码时,我们不仅要追求程序的功能性,还要注重代码的可读性、可维护性以及调试效率。Python Strip Diagram Template就是一种优化代码可读性和调试效率的利器。

    2024-01-16
    86

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注