处理mysql主从不同步问题

问题描述:发现主库操作数据从库没有变动问题,可能原因是从库重启导致的无法同步问题。

排查思路

1、查看主从复制状态

发现从库的IO 和SQL 进程都是no(正常状态应该是yes)

注意:mysql replication 中slave 机器上有两个关键进程,死一个都不行,一个是slave_sql_running,一个是slave_io_running ,一个负责与主机的IO 通信,一个负责自己的slave mysql 进程。

2、解决办法如下:

stop slave; ##停止同步

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; ##设置counter 为1,启动同步

show slave status\G; ##查看同步状态

3、发现SQL 进程还是No

提示信息显示如下:

Last_Errno: 1396

Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ‘fab1fc64-d0f2-11ec-a2a6-000c2950bca1:9’ at master log mybinlog.000001, end_log_pos 1966. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

处理mysql主从不同步问题

4、根据上面的提示,查询到的异常数据出现在opp_starck 表中

select * from performance_schema.replication_applier_status_by_worker\G; 确定事务发生在表opp_strack 上,定位在表上,再去排查是哪张表

可以参考https://blog.csdn.net/memory6364/article/details/86152717 ;

5、主从数据恢复一致后需要在slave 上跳过报错的事务,在从库中执行

使用 GTID 跳过错误的方法:找到错误的GTID 跳过(通过exec_master_log_pos 去binlog 里找GTID ,或者则通过监控表replication_applier_status_by_worker 找到GTID ,也可以通过excured_gtid_set 算GTID ),这里使用监控来找到错误的GTID 。找到GTID 之后,跳过错误的步骤:

stop slave; #停止同步

set @@session.gtid_next=’fab1fc64-d0f2-11ec-a2a6-000c2950bca1:9′; #跳过错误的GTID

begin; #提交一个空事务,因为设置gtid_next 后,gtid 的生命周期就开始了,必须通过显性的提交一个事务来结束,否则报错:ERROR

commit

set @@session.gtid_next=automatic; #设置回自动模式

start slave; #启动同步

show slave status\G; #再次确认状态

6 、如下图主从复制恢复正常

GTID:是对于一个已提交事务的唯一编号,并且是一个全局(主从复制)唯一的编号。

GTID 核心参数

重要参数:

gtid-mode=on –启用gtid 类型,否则就是普通的复制架构

enforce-gtid-consistency=true –强制GTID 的一致性

log-slave-updates=1 –slave 更新是否记入日志

Original: https://www.cnblogs.com/rickenl/p/16293811.html
Author: RickenL
Title: 处理mysql主从不同步问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505363/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 定时调度的线程池

    定时调度线程池 当我们需要定时进行线程的调度 @Slf4j public class Test5 { public static void main(String[] args) …

    数据库 2023年6月11日
    0116
  • idea 导入项目MAVEN报错,jdk与jms问题,以及@override报错

    一: Plugins报错: compiler Failed to execute goal org.apache.maven.plugins:maven-compiler-plug…

    数据库 2023年6月11日
    0162
  • 第八章:变量、常量和基础类型

    本篇翻译自《Practical Go Lessons》 Chapter 8: Variables, constants and basic types 1 你将在本章中学到什么? …

    数据库 2023年6月6日
    0178
  • VSCode 常用插件

    自定义相关 语言包、主题、快捷键等 plugins description Chinese 中文简体语言包 Material Theme Google Material 主题(附带…

    数据库 2023年6月6日
    0173
  • JavaWeb核心篇(3)——JSP,MVC,三层架构

    JavaWeb核心篇(3)——JSP,MVC,三层架构 在本篇文章中我们会学习到JSP,MVC,三层架构 虽然JSP已经快被时代所淘汰,但是在一些老旧的工作场所还是有在使用,所以了…

    数据库 2023年6月14日
    0127
  • MySQL让人又爱又恨的多表查询

    前言 在SQL开发当中,多表联查是绝对绕不开的一种技能。同样的查询结果不同的写法其运行效率也是千差万别。 在实际开发当中,我见过(好像还写过~)不少又长又臭的查询SQL,数据量一上…

    数据库 2023年5月24日
    0114
  • Python–生成器

    学习生成器之前,首先需要认识列表生成式,直奔主题。 1、简单列表生成式示例: 看样子好像很NB的样子,其实它等价于: 其实还是有点NB的,毕竟代码少了,手动嘻嘻嘻! 2、削微高级点…

    数据库 2023年6月9日
    0162
  • go test 的内联问题

    写单测的时候遇到一个问题,在使用 gomonkey 进行打桩时,使用 gland 的 debug 运行测试时,测试程序正常跑通,而使用 run 或者命令行运行 go test -v…

    数据库 2023年6月9日
    0170
  • MySQL架构

    1_逻辑架构 1.1.连接层 系统(客户端)访问MySQL服务器前,做的第一件事就是 建立TCP连&#x6…

    数据库 2023年5月24日
    0139
  • MySQL变量、流程控制和游标

    变量、流程控制和游标 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果的数据 系统变量 变量由系统定义,属于服务器级别 […

    数据库 2023年5月24日
    0117
  • CentOS 安装 Docker CE

    CentOS 安装 Docker CE 警告:切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker. 准备工作 系统要求 Docker CE 支…

    数据库 2023年6月6日
    0132
  • leetcode 101. Symmetric Tree 对称二叉树(简单)

    一、题目大意 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3]输出:true 示例 2: 输入:root =…

    数据库 2023年6月16日
    0137
  • writeset参数配置探索——究竟在哪个角色上配置参数?

    关于writeset,一直以来我都是所有节点同时配置下面参数: binlog_transaction_dependency_tracking=WRITESET transactio…

    数据库 2023年6月16日
    0116
  • Linux 目录

    以下是对这些目录的解释: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放的是启动 Linux 时使用的…

    数据库 2023年6月6日
    0143
  • 笔记-docker学习-2

    继续之前的docker学习 16、 docker commit从容器创建一个新的镜像 OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像…

    数据库 2023年6月9日
    0106
  • 【黄啊码】linux利用lvs+Keepalived实现负载均衡

    负载均衡:两台(一主一备) LVS + Keepalived+三台HTTP服务器 这是我的第一台HTTP服务器【这里使用的是现成lnmp,然后复制出三台一模一样的】 在每台(HTT…

    数据库 2023年6月16日
    0145
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球