MySQL运维实战(7.2) MySQL复制server_id相关问题

作者:俊达

主库server_id没有设置

主库没有设置server_id

Got fatal error 1236 from master when reading data from binary log: 'Misconfigured master - server_id was not set'

主库查看server_id

mysql> show variables like 'server_id';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| server_id      | 1     |

即使没有设置server_id,show variables命令查看server_id为1,

解决办法:
1、 主库设置server_id
建议不要将server_id设置为1

mysql> set global server_id=234;

同时在配置文件中设置server_id,避免数据库重启后参数设置失效。
2、备库上重新启动复制

stop slave;
start slave;
show slave status\G

备库server_id没有设置

如果备库没有设置server_id,也无法启动复制

mysql> set global server_id=default;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO

从错误日志中可以看到无法启动备库的原因:

2023-06-12 16:36:15 18518 [ERROR] Server id not set, will not start slave

解决方法:设置server_id,同时在配置文件中加入server_id配置。

mysql> set global server_id=236;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

主备库server_id相同

主备库server_id相同

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

解决方法:
设备库将server_id设置成不一样。

server_id重复导致的问题

mysql复制关系中,主库和备库的server_id如果相同,IO线程会直接报错中断。但是在级联复制的架构下,肯能会出现server_id相同的问题。
在这里插入图片描述
如上图的例子中,主和备1的server_id不同,备2和备1的server_id也不同,但是备2和备1的server_id相同,这会导致一个问题:备2的IO线程从备1获取binlog事件时,发现事件的server_id和自己的server_id一样,就会忽略这些事件,从而备2缺少数据。这种情况下,备2不会产生任何异常日志。show slave status查看seconds_behind_master可能也没有问题。

级联复制修改复制架构导致的问题

级联复制架构下,修改复制架构时操作不当,可能会引起binlog事件无限循环复制的问题。下面是一个例子:
原先的复制结构如下:
在这里插入图片描述
当前主库为主,由于某个原因,需要下线主,备1和备2组成新的双向复制架构:
在这里插入图片描述
执行的操作如下:
1、备1上执行stop slave;
2、备2上执行show master status,查看当前binlog位点
3、备1上执行change master to备2,指向步骤2获取到的binlog位点。

如果执行上述的第2步的时候,备2上有延迟,那么获取到的位点之后,可能还会产生server_id为100的binlog事件(从备1上复制过来的,来源于主的事物),当备1复制指向备2时,这些server_id为100的事件,就可能会一直循环执行。具体是否会循环执行,还依赖于binlog格式以及具体的事件。
在row模式下,如果是insert事件,且涉及的表无主键和唯一约束,insert会一直循环执行。
在statement模式下,如果是update语句(update t set c = c + 1),则该update语句会一直循环执行。

复制架构中存在环路的情况下,修改server_id也可能会产生类似的问题。
这类问题需要从源头上避免:
1、保证server_id全局唯一。
2、不随意修改server_id。
3、修改复制架构时,如果备库存在延迟,需要特别注意。
4、开启GTID。如果开启了GTID,则不会重复执行事务。

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/407062.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 笔记 029 用户模块

1.1 用户信息需要在多个链接使用,所以需要用pinia持久化 1.1.1 定义store import {defineStore} from pinia import {ref} from vue const useUserInfoStore defineStore(userInfo,()>{//定义状态相关的内容const info ref({})const setInfo (newInfo)>{i…

基于ElementUI封装省市区四级联动下拉选择

基于ElementUI封装的省市区下拉级联选择 效果 数据 最新省市区JSON数据获取:https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/ 参数说明 参数说明inputNumShow下拉框的数量,最多4个defaultAddress默认显示省市区 例:[‘安徽’, …

C语言:指针的进阶讲解

目录 1. 二级指针 1.1 二级指针是什么? 1.2 二级指针的作用 2. 一维数组和二维数组的本质 3. 指针数组 4. 数组指针 5. 函数指针 6. typedef的使用 7. 函数指针数组 7.1 转移表 1. 二级指针 如果了解了一级指针,那二级指针也是可以很好的理解…

Redis(十六)缓存预热+缓存雪崩+缓存击穿+缓存穿透

文章目录 面试题缓存预热缓存雪崩解决方案 缓存穿透解决方案 缓存击穿解决方案案例:高并发聚划算业务 总结表格 面试题 缓存预热、雪崩、穿透、击穿分别是什么?你遇到过那几个情况?缓存预热你是怎么做的?如何避免或者减少缓存雪崩?穿透和击穿有什么区别?他两是…

JDK下载安装

资源展示 安装说明 傻瓜式安装,下一步即可。建议:安装路径不要有中文或者空格等特殊符号。本套课程会同时安装JDK8 和 JDK17,并以JDK17为默认版本进行讲解。 安装步骤 (1)双击jdk-17_windows-x64_bin.exe文件&#…

免费多域名证书,最多支持保护250个域名

随着企业规模扩大和多元化发展,拥有多个域名的需求变得普遍,此时,多域名SSL证书应运而生,并且这一类型的证书已经发展到能够安全地支持多达250个不同域名的加密需求。 多域名SSL证书,也称为SAN(Subject Alt…

RocketMQ生产环境常见问题分析与总结

RocketMQ生产环境常见问题分析与总结 如何保证消息不丢失 消息丢失场景 对于跨网络的节点可能会丢消息,因为MQ存盘都会先写入OS的PageCache中,然后再让OS进行异步刷盘,如果缓存中的数据未及时写入硬盘就会导致消息丢失 生产端到Broker端Brok…

Mybatis总结--传参二

#叫做占位符 Mybatis是封装的JDBC 增强版 内部还是用的jdbc 每遇到一个#号 这里就会变为?占位符 一个#{}就是对应一个问号 一个占位符 用这个对象执行sql语句没有sql注入的风险 八、多个参数-使用Param 当 Dao 接口方法有多个参数,需要通过名称使…

获取图片的颜色的RGB

shiftwins获取截图 然后打开画图软件,ctrlv 然后用吸管工具,吸取 然后编辑颜色,就有

【群智能算法转让】一种新的群智能算法||一种超越隐喻的元启发算法||一种基于数学的群智能算法

1、简介 本次全新出推出一个新的基于种群的元启发算法,基于数学中求解非线性方程组的基本思想而开发的,性能不错 新算法转让Q1 top级(一种基于数学的超越隐喻的元启发式算法) 新的群智能算法转让,新的元启发式算法转…

NATS学习笔记(一)

NATS是什么? NATS是一个开源的、轻量级、高性能的消息传递系统,它基于发布/订阅模式,由Apcera公司开发和维护。 NATS的功能 发布/订阅:NATS的核心是一个发布/订阅消息传递系统,允许消息生产者发布消息到特定的主题…

RAG中如何解决上下文知识连贯性问题 || 如何更好的切分和组织非结构化的文档数据

当信息蕴含在较长的上下文时,基于片段的搜索召回,一定会丢失数据,导致最终无法正确的回答问题。 实际上复杂的问题,这里只是说问题本身倾向于从全文获取答案,而不仅仅是基于片段。 斯坦福论文提出的核心问题和解决思路…

抖店创业者必看!2024年开店营业执照的类型有哪些?开哪个类型?

大家好,我是电商花花。 最近还是有不少人问花花做抖音小店要营业执照吗?个人店可以吗? 目前开抖音小店主要有个人店、个体工商户、企业店这三种店铺类型。 今天来给大家说一下做抖音小店都有什么类型,以及都有什么区别&#xf…

MacOs 围炉夜话

文章目录 一、安装 Mac 一、安装 Mac macOS是一套由苹果开发的运行于Macintosh系列电脑上的操作系统。macOS是首个在商用领域成功的图形用户界面操作系统。 VM虚拟机怎么安装mac os?(全教程) 虚拟机:VMware Workstation 17 pro W…

企业微信应用开发:使用Cpolar域名配置进行本地接口回调的调试指南

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

【蓝桥备赛】字串简写

字串简写 数据范围 字符串的长度为5*10的五次方,on方时间复杂度会很大。 才用动态规划的思想,dp[i]以i开头的的可能性,因为长度必须大于等于k,当i小于k的时候,如果等于第一个字符,s1时,dp[…

图像压缩感知的MATLAB实现(OMP)

前面实现了 压缩感知的图像仿真(MATLAB源代码) 效果还不错,缺点是速度慢如牛。 下面我们采用OMP对其进行优化,提升速度。具体代码如下: 仿真 构建了一个MATLAB文件,所有代码都在一个源文件里面&#xf…

系统保护规则(Sentinel)

系统保护规则 CPU使用率 设置 为了方便产生现象, 设置了使用率朝贡国10% 就触发保护 效果 入口QPS 设置 针对 所有接口的平均 QPS 阈值 效果 访问次数很多的情况下,即可出现

英文输入法(C 语言)

题目 主管期望你来实现英文输入法单词联想功能,需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词。按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀。 注意 英…

【鸿蒙开发】第十四章 Stage模型应用组件-任务Mission

1 任务(Mission)管理场景 任务(Mission)管理相关的基本概念如下: AbilityRecord:系统服务侧管理一个UIAbility实例的最小单元,对应一个应用侧的UIAbility组件实例。系统服务侧管理UIAbility实例数量上限为512个。 Mi…