首页 > 数据库 >MySQL的在sync_binlog!=1造成1236报错【转】

MySQL的在sync_binlog!=1造成1236报错【转】

时间:2024-04-23 15:36:51浏览次数:29  
标签:binlog 1236 Slave mysql 报错 MySQL 日志 从库

前言

本文总结了主从复制的原理及日常运维的坑

1.主从复制简介

MySQL 复制是指从一个 MySQL 主服务器(master)将数据拷贝到另一台或多台 MySQL 从服务器(slaves)的过程,将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器上,然后在从服务器上对这些日志重新执行,从而使得主从服务器的数据保持同步。

2.主从复制原理

图片

MySQL复制的基本过程如下:

  1. Slave上面的 IO 线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
  1. Master接收到来自 Slave 的 IO 线程的请求后,通过复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave端的 IO 线程。
  1. Slave的 IO 线程接收到信息后, 将接收到的日志内容依次写入到 Slave端的 Relay Log 文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的 Master 端的 binlog 的文件名和位置记录到 master-info 文件中.
  1. Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的SQL 语句,并在自身执行这些 SQL。

3.机房掉电主从故障

3.1 故障现象

机房掉电,数据库非正常关机。
MySQL拉起后,从库报如下错误。
Slave_IO_Running: No
Slave_SQL_Running: Yes

图片

发现从库的GTID比主库的GTID要大

--主库的GTID
mysql> show master status\G
*************************** 1. row ***************************
             File: MMK-JEM-Master1-ip31-bin.000002
         Position: 195
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: c5833cbf-fa39-11ee-ae67-0242c0a8441f:1-5
1 row in set (0.00 sec)

--从库执行的GTID
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 46081bff-fa3a-11ee-9d8b-0242c0a84420:1-7,
c5833cbf-fa39-11ee-ae67-0242c0a8441f:1-2:6
                Auto_Position: 1

3.2 故障处理

1)在从上执行 reset master;
在从库上执行这个命令的作用是清空从库的 gtid
2)然后从库重置即可
mysql> stop slave;
mysql> reset slave;
mysql> start slave; 
mysql> show slave status\G
3)查询从库被执行过的gtid
mysql> select  @@GLOBAL.gtid_executed;
+------------------------------------------+
| @@GLOBAL.gtid_executed                   |
+------------------------------------------+
| c5833cbf-fa39-11ee-ae67-0242c0a8441f:1-2 |
+------------------------------------------+

图片

此时我们发现有报错信息,显示为同步用户重复导致,可以跳过

图片

--解决方案,跳过从库gtid,原来事务最大为2
mysql> stop slave;
mysql> set gtid_next='c5833cbf-fa39-11ee-ae67-0242c0a8441f:3';
mysql> begin;commit;
mysql> set gtid_next='automatic';

mysql> start slave;
mysql> SHOW SLAVE STATUS\G
--此时发现同步一切OK
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

图片

4.知识点

在MySQL中,sync_binlog参数用于控制二进制日志(binlog)的同步方式。它决定了事务提交到binlog的时机以及是否需要等待数据同步完成才返回客户端

根据实际需求,设置sync_binlog参数的值。
0: 表示不进行同步,即异步写入binlog。
1: 表示在事务提交后立即将binlog同步到磁盘。
n: 表示在事务提交后等待n次fsync操作后将binlog同步到磁盘。

图片

5.故障总结

从二进制日志读取数据时,从主机收到致命错误1236:“使用主机的SERVER_UUID,从机的GTID比主机多。这可能表示二进制日志的末尾被截断,或者最后一个二进制日志文件丢失,例如,在sync_binlog!=1.主服务器可能已回滚或可能未回滚已复制到从属服务器的事务。建议将master已从slave回滚到master的任何事务复制到master

转自

又成长了,异常掉电踩到了MySQL主从同步的坑!
https://mp.weixin.qq.com/s/adeM1rWkMuTeGPHpLs77hQ

标签:binlog,1236,Slave,mysql,报错,MySQL,日志,从库
From: https://www.cnblogs.com/paul8339/p/18152963

相关文章

  • centos8报错错误:为 repo 'appstream' 下载元数据失败 : Cannot prepare internal mirr
    出现如下错误的错误:为repo‘appstream’下载元数据失败:Cannotprepareinternalmirrorlist:NoURLsinmirrorlist原因在2022年1月31日,CentOS团队终于从官方镜像中移除CentOS8的所有包。CentOS8已于2021年12月31日寿终正非,但软件包仍在官方镜像上保留了一段时间。现在......
  • Mysql 密码报错 You must reset your password ... 和 Your password does N
    如果MySQL数据库用户的密码设置过于简单,数据库在用户登录后会提示重置密码,并且不接受简单的密码。提示需要重置密码:ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstatementbeforeexecutingthisstatement.Mysql数据库版本:5.7.1操作系统:CentOS7这......
  • Pycharm报错:ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org‘
    今天在pycharm里面pipinstall库的时候报了这个错,如图所示:第一种,设置超时时间,命令如下:pip--default-timeout=1000install-U模块名第二种,用镜像网站进行下载,这种方法下载的速度超快的哦=.=,命令如下:pip--default-timeout=100install库名称-ihttp://pypi.douban.com/......
  • 无root权限,解决conda环境的报错ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6:
    网上的方法都需要sudo或者root权限,但是服务器多是实验室公用,没有ruuto权限,因此更好的办法是通过conda只改自己虚拟环境的环境变量。问题原因问题的根本原因是Linux系统没有GLIBCXX_3.4.30动态链接库。这个库和gcc版本有关。因此要么你更换版本,要么找一个别的so链接到这个连接......
  • feign调用接口报错No qualifying bean of type '***HttpMessageConverters' available
    在整合springcloudgeateway时,调用了feign接口,报错Noqualifyingbeanoftype'org.springframework.boot.autoconfigure.http.HttpMessageConverters'available报错信息feign.codec.EncodeException:Noqualifyingbeanoftype'org.springframework.boot.autocon......
  • 记录一次Prism报错
    前提:我的WPF程序在进入主程序之前显示登录界面此时不想登录,点击退出的时候报错了报错提示Anexceptionoccurredwhileinitializingmodule'ShellModule'.-Theexceptionmessagewas:Anexceptionhasoccurredwhiletryingtoaddaviewtoregion'AsideRegion'......
  • react native 安装app时报错 ”已安装了签名冲突的应用“
    1.问题描述:reactnative开发完app,手动安装app,报错”已安装了签名冲突的应用“。或者执行命令安装npxreact-nativerun-android--mode=release,报错2.解决方法:直接卸载原来的app发现无效,于是执行:adbuninstall"xxxxx"xxxxx换成你的app名,在这里可以找到:......
  • 蓝牙打印开发代码示例(日拱一卒,有点进步,UUID仍报错)
     packagecom.lingrui.btprint;importandroid.Manifest;importandroid.app.AlertDialog;importandroid.bluetooth.BluetoothAdapter;importandroid.bluetooth.BluetoothDevice;importandroid.bluetooth.BluetoothSocket;importandroid.content.DialogInterface......
  • 使用pyppeteer 下载chromium 报错 python pyppeteer 调用谷歌翻译api
    https://registry.npmmirror.com/binary.html?path=chromium-browser-snapshots/Win_x64/手动下载安装包 修改文件C:\Users\luyan\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyppeteer\chromium_downloader.py #修改这段代码defdownload_chromium()-......
  • mysql添加数据报错
    1452-Cannotaddorupdateachildrow:aforeignkeyconstraintfails('db_student_manager_web'.'s_student',CONSTRAINT'student_clazz_id_foreign'FOREIGNKEY('clazz_id)REFERENCES's_clazz'('id')......