MySQL主从复制原理与实践:从配置到故障监控

发布于:2024-10-24 编辑:匿名 来源:网络

前言上面《MySQL数据被误删怎么办?》介绍了MySQL出现故障或者误删除数据后,可以通过备份+binlog来恢复数据。但是当备份文件和binlog都丢失时会发生什么呢?因此,单个节点是不可靠的。

为了避免单节点故障和MySQL服务的可用性造成的数据丢失,生产环境通常采用高可用或集群模式。这背后,离不开主从复制技术,因此本文介绍主从复制的原理和操作,以全面了解这项技术。

主从复制原理复制源MySQL的主从复制主要是将主节点的数据同步到从节点。这个数据的来源是binlog(上一篇文章也提到过)。

binlog文件中的格式是这样的: 代码语言:bash copy |日志名称|邮政 |事件类型 |服务器 ID |结束日志位置 |信息 | mysql-bin.04 | |匿名_Gtid | 1 | | SET @@SESSION.GTID_NEXT= '匿名' | | mysql-bin.04 | |查询 | 1 | |开始 || mysql-bin.04 | |查询 | 1 | |使用“测试”; INSERT INTO 帐户(id、用户、余额)VALUES (30, 'CCV' ,)|| mysql-bin.04 | |西德 | 1 | | COMMIT /* xid=*/ 那么,MySQL是如何将主节点的binlog同步到从节点的呢?通过binlog文件可以看到master节点的工作情况。每个事务提交后,对应的SQL语句都会清晰地记录在binlog中。

因此,当binlog中添加新的日志时,可以将这些日志传输到从节点来完成工作。它由主节点中的“binlog dump”线程处理。

从节点接收到主节点发来的日志后,剩下的工作由从节点完成。在主从复制的情况下,从节点主要使用两个线程和一个日志文件来完成工作。

这两个线程是“IO线程”和“SQL线程”。 “IO线程”用于连接主节点,接收日志(一些SQL语句)并记录到“relaylog”,“SQL线程”用于执行“relaylog”执行SQL执行,以达到复制目的。

如果设计了复制流程不是可以直接执行SQL吗?为什么需要两个线程+一个日志才能完成主从复制?试想一下,如果直接执行SQL的时候出现故障怎么办?如果执行时间过长,阻塞积压导致复制延迟怎么办?因此,MySQL的设计有两个好处:使用两个线程可以在发生错误时提供故障隔离。例如,如果SQL线程遇到错误,它可以停止并等待IO线程发送下一个日志。

如果 IO 线程遇到错误,它可以从最后一个已知的成功位置重新开始拉取日志。 IO操作和SQL操作可以并行执行,提高复制效率。

另一个重要原因是:为了满足高一致性的需求,MySQL还提供了半同步和组复制模式。简单来说,主节点需要确认从节点已经接收到数据才同步成功,即实现日志。

到“中继日志”。如果直接执行SQL,然后响应主节点,可想而知复制效率极低。

这里给出一个主从复制的工作流程图,方便理解。这里插一张图来描述一下主从复制环境的搭建。

接下来我将演示如何搭建主从复制环境。1、主从节点配置 在搭建主从复制环境之前,需要保证主从实例之间能够通信。

另外,需要注意两点:需要保证主从实例的serverid不一致。如果一致,则需要在配置文件/etc/my.cnf中进行设置。

cnf 进行修改。 master节点需要开启binlog,也是在/etc/my.cnf中配置。

在此插入图片说明。另外,主节点需要创建两个角色供从节点使用。

创建角色的命令如下: sql copy--创建'repl'用户并授权slave节点复制权限 CREATE USER 'repl'@ '%' IDENTIFIED WITH mysql_native_password BY 'repl56';GRANTreplicationslave on * .* to 'repl'@'%';--创建'replroot'用户并授予从节点所有权限,以便从节点可以远程备份数据 CREATE USER 'replroot'@'%' IDENTIFIED WITH mysql_native_password BY 'root56';将 *.* 上的所有内容授予 'replroot'@'%'; 2. 启用从从节点的复制。配置完成后,从节点即可启用复制。

复制 步骤如下: 1. 备份主节点数据 远程备份主节点数据。命令如下: 代码语言:bash copy mysqldump -ureplroot -proot56 -h ..0.39 -P -A --master-data=2 --single-transaction -R -E --triggers >/root/full。

sql这里插入图片描述2.将数据同步到从节点,并对从节点进行恢复操作,使从节点的状态最接近主节点的状态。这样,从节点就可以根据最新的状态开始复制。

恢复命令如下: 代码语言:sql copy set sql_log_bin=0;源 /root/full.sql 设置 sql_log_bin=1;命令执行后,可以在从节点上看到主节点的数据。此处插入图片说明 3. 从节点 复制参数配置数据同步后,可以执行以下命令查看从节点开始复制的位置。

代码语言: bash copy grep "\--\ CHANGE MASTER" /root/full.sql 在这里插入图片描述,你是否觉得这些操作很熟悉?是的,到目前为止,以上操作都是上面介绍的备份和恢复操作。最后在从节点上执行以下命令配置复制参数,实现主从复制。

代码语言:sql复制--修改复制相关参数 CHANGE MASTER TO MASTER_HOST='主节点的ip', MASTER_PORT=, MASTER_USER='repl', MASTER_PASSWORD='repl56', MASTER_LOG_FILE='mysql-bin.01', MASTER_LOG_POS= ,MASTER_CONNECT_RETRY=60;--启动复制进程start Slave;其中 MASTER_LOG_FILE 和 MASTER_LOG_POS 是二进制日志以及从节点应开始复制主节点的位置。至此,主从复制就搭建起来了,mom再也不用担心节点故障或者数据误删了。

3. 验证复制环境。如何验证复制环境已经搭建完成?我们可以执行show Slave status \G;在从节点上命令查看复制进度、错误信息、复制状态等,如果有结果输出,则说明环境搭建成功。

类似下图,这里插入图片描述或者执行show Slave Hosts;在主节点上命令查看从节点信息。如果有输出则说明设置成功。

类似下图,这里插入图片描述。设置好环境后就可以看到复制效果了。

在启用复制之前,从节点的数据状态如下:此处插入图片描述。此时我在主节点上执行两条DML命令,然后在从节点上检查数据是否同步。

代码语言:sql copy INSERT INTO `account` VALUES(80,'LKJ',.00)UPDATE `account` SET Balance=WHERE id=1;从下图可以看到从节点的数据已经同步。此处插入图片 描述主从复制失败。

监控主从复制。主从复制会失败吗?如果出现问题我该怎么办?当然,失败也会发生。

通常可以通过 show Slave status \G 监控复制进度、错误消息和复制状态;并在出现问题时制定正确的补救措施。监控主从复制状态重点关注Slave_IO_Running和Slave_SQL_Running状态。

两种状态均应显示“是”,表明复制运行正常。 Last_Errno 和 Last_Error 字段表示错误代码或错误消息,它们可以指示复制过程中的问题。

例如,查询中出现以下错误: Code language: bash copy Last_Error: Error 'ER_BAD_SLAVE: Slave I/O thread Killed while Reading event from master' has gone in query: 'SELECT * FROM my_table' 该错误表示从节点正在尝试读取事件 当遇到问题时,要看是网络问题还是权限问题。监控主从复制延迟可以通过比较主从节点上的时间戳、数据版本等信息来检测复制延迟。

例如,Seconds_Behind_Master字段指示从节点落后于主节点的秒数。如果该值持续较高,则可能存在复制延迟问题。

这时,我们需要检查\color{blue}{主从节点之间是否存在网络延迟}。我们需要增加网络带宽吗? \color{blue}{主库并发事务高吗}?需要改成复制模式组复制吗? \color{blue}{从从库刷盘还是慢}。

是否需要增加从节点的复制线程数?具体情况具体分析。当然,故障情况还是有很多的。

可以使用一些开源监控工具,如Zabbix、Prometheus、pt-slave-delay等,实时监控主从复制的状态和性能指标。这些工具通常都提供报警功能,以便在出现异常时能够及时发现并处理。

总结无论是备份恢复还是主从复制,目的都是为了提高MySQL的可靠性和可用性。两者本质上都是数据的复制+传输。

前者是为了故障恢复,后者更多的是为了高可用、故障转移、读写分离等需求。在复制的基础上,可以使用MHA、MMM、ProxySQL、MyCAT等中间件来实现高可用、读写分离等需求。

当然,现在大多数公司更喜欢云上的高可用性、集群数据库。即便如此,您仍然需要知道发生了什么以及为什么发生,以防万一您需要。

我正在参加第五期腾讯科技创造特训营有奖征文比赛。

MySQL主从复制原理与实践:从配置到故障监控

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 通知:即日起,禁止携带Note 7登机,且不得作为航空货物托运或承运

    通知:即日起,禁止携带Note 7登机,且不得作为航空货物托运或承运

    中国民航局昨天发布公告,针对三星Galaxy Note 7手机出现的问题手机,为确保航空运输安全,自10月1日起,3月27日起,三星Galaxy Note 7手机不得携带登机,也不得托运。 具体规定为:旅客及船员严禁随身或手提行李中携带三星Galaxy Note 7手机;严禁将三星Galaxy Note 7手机放

    06-17

  • 李佳琦再次受到质疑,“全网最低价”谁说了算

    李佳琦再次受到质疑,“全网最低价”谁说了算

    双11的战线越来越长,促销方式越来越难懂,冲突也越来越早发生。 今年的商战是由京东发起的。 因花西子眉笔价格得罪网友后,李佳琦直播间再次陷入困境。 上次,一个新的货币计量单位“华西币”诞生了。 这一次,“全网最低价”应该被重新理解。 双11的“简单商战”,谁没说实

    06-21

  • 人造肉生产商v2food获3500万美元A轮融资

    人造肉生产商v2food获3500万美元A轮融资

    据投资界11月30日消息,澳大利亚植物性肉类替代品研发制造商v2food获3500万美元A轮融资,由联邦科学与工业研究组织 (Commonwealth Scientific and Industrial Research Organization) CSIRO 创新基金旗下资本部门 Main Sequence Ventures 出资,私人投资公司 Horizo??n Inve

    06-18

  • 广东设立半导体产业基金 规模110亿

    广东设立半导体产业基金 规模110亿

    天眼查App显示,近日,广东省半导体及集成电路产业股权投资基金二期合伙企业(有限合伙)成立,执行事务办公室为广东粤财基金管理有限公司。 公司投资额0.1亿元人民币,经营范围为私募股权基金从事股权投资、投资管理、资产管理等活动。 合伙人信息显示,该基金由广东粤财投资

    06-18

  • 沉浸式推理互动体验平台“戏剧侦探”获数百万天使融资,经纬中国投资

    沉浸式推理互动体验平台“戏剧侦探”获数百万天使融资,经纬中国投资

    据投资界5月15日消息,沉浸式推理互动体验平台“戏剧侦探”近日获得来自经纬中国的投资。 经纬中国天使轮融资100万元。 本轮融资主要用于产品研发、内容生态建设和团队建设。   剧探本质上是一个“内容+社交”的互动平台,构建强大的社交场景,用脚本驱动场景化社交。 目前

    06-18

  • 路透社:半导体集团 ASMI 预计 2022 年下半年营收增加

    路透社:半导体集团 ASMI 预计 2022 年下半年营收增加

    据路透社报道,荷兰半导体供应商 ASM International (ASMI) 周二预测 2022 年下半年营收增加,因为预计上半年供应链问题将持续存在。 ASMI 在一份声明中表示:“根据目前的情况,我们预计下半年的收入将高于上半年。 ”英特尔和应用材料等半导体集团受到供应链挑战的打击,尽

    06-08

  • 西瓜视频已与BBC、Discovery达成内容合作,独家播出纪录片《哈勃三十年》

    西瓜视频已与BBC、Discovery达成内容合作,独家播出纪录片《哈勃三十年》

    纪录片将成为西瓜视频内容布局的另一重点。 4月22日,西瓜视频与BBC Studios宣布达成内容合作。 双方将共同制作两部新纪录片:《哈勃三十年:揭示宇宙奇观》和《灵长王国》。 同时,BBC将为西瓜视频提供数百部纪录片内容。 西瓜视频还携手另一部纪录片《发现巨头》。 西瓜视频

    06-18

  • 看亚洲之星:现代KOL开创了赢得和影响客户的新方式

    看亚洲之星:现代KOL开创了赢得和影响客户的新方式

    2016年,杭言浩回到家乡马来西亚槟城岛,亲眼目睹了年轻人如何依靠互联网追名逐利,财富,甚至能够靠它谋生。 在互联网上,任何人都可以成为明星15分钟——只需要一段成功的TikTok(抖音海外版)视频。 “然而,真正的影响力是明确自己的独特性,并为他人提供宝贵的知识和经

    06-18

  • 中期协:今年第一季度我国期货市场成交额同比增长83.08%

    中期协:今年第一季度我国期货市场成交额同比增长83.08%

    中国中期协会:今年一季度,我国期货市场成交量同比增长83.08%。 今年一季度,我国期货市场累计交易量18.49亿手,累计成交额0.36万亿元,同比分别增长69.86%和83.08%。 %。 其中,钢材、化工品、油脂、能源等期货品种交易量同比快速增长。 数据还显示,今年3月份全国期货市场

    06-18

  • 据美通社报道,生物科技公司Adcentrx Therapeutics于4月29日宣布完成由剑桥资本

    据美通社报道,生物科技公司Adcentrx Therapeutics于4月29日宣布完成由剑桥资本

    投资社区(ID:pedaily)领投的5000万美元A轮融资,重点关注突破性抗体偶联药物(“Adcentrx”) ADC旗下生物科技公司Therapeutics(“Adcentrx”)宣布完成1万美元A轮融资。 本轮融资由康桥资本领投,博裕资本旗下早期投资平台万物资本跟投。 此次融资将加速Adcentrx在ADC领

    06-18

  • 【话题互动获奖名单&精选点评】开源大模型如何帮助创业项目打造竞争力?

    【话题互动获奖名单&精选点评】开源大模型如何帮助创业项目打造竞争力?

    亲爱的参与者,感谢您参与我们的互动话题“开源大模型如何帮助创业项目打造竞争力?”在这次活动中收到的许多热情的回应和观点给我们带来了启发。 再次感谢您的支持和参与,期待在以后的活动中见到您!这些是本主题讨论中精选的评论。 我们深感荣幸并衷心感谢大家的热情分享。

    06-17

  • 全景影像技术研发公司Insta360获数亿元C+轮融资,拟在A股上市

    全景影像技术研发公司Insta360获数亿元C+轮融资,拟在A股上市

    据投资界3月20日消息,全景影像科技研发公司Insta获得数亿元C+轮融资。 本轮投资方包括迈高控股、华金资本、浪美创投等。 本轮资金将用于产品研发、营销和渠道拓展,提升品牌影响力。 此前,Insta曾于今年3月获得迅雷网络、启明创投、IDG投资的数亿元B轮融资,并于同年7月获得

    06-17