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主从复制原理与实践:从配置到故障监控

站长声明

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

标签:

相关文章

  • 用GPT-4这样的大模型玩狼人杀,人类因为太蠢被投票判死,真正的逆向图灵测试

    用GPT-4这样的大模型玩狼人杀,人类因为太蠢被投票判死,真正的逆向图灵测试

    在这篇文章中,我们看到了人工智能如何与经典的社交推理游戏互动《狼人杀》结合创造了一个有趣的实验。 视频展示了亚里士多德、克利奥帕特拉等以历史人物为模型的人工智能 NPC 与人类玩家互动的场景。 人类玩家因答案不够复杂而被淘汰,颠覆了传统的图灵测试。 本文探讨了 AI

    06-17

  • 杭州出台25条措施加快生物医药产业高质量发展

    杭州出台25条措施加快生物医药产业高质量发展

    日前,杭州市人民政府办公厅发布《关于加快生物医药产业高质量发展若干措施的通知》。 该措施自2020年11月15日起实施,有效期至2020年12月31日。 该措施重点支持药品、高端医疗器械、先进制药装备、新型服务外包、数字医学、医学美容。 措施全文如下: 关于加快生物医药产业高

    06-18

  • 14nm写入上海市政府工作报告:今年实现量产

    14nm写入上海市政府工作报告:今年实现量产

    1月27日,上海市第十五届人民代表大会第二次会议正式开幕。 上海市市长应勇作政府工作报告。 报告中回顾了2017年上海发展现状,部署了全年重点工作和任务。 上海作为国家集成电路产业的重要集聚区,在年度政府工作报告中多处提及集成电路。 应勇在回顾一年来的工作时表示,“

    06-06

  • 海外呼叫中心服务:连接全球市场的桥梁

    海外呼叫中心服务:连接全球市场的桥梁

    .wp-block-column h3{margin-left:0} 1.引言 在全球化背景下,越来越多的企业开始寻求拓展海外市场。 随着国际贸易的日益频繁和跨境电商的兴起,海外呼叫中心服务作为连接企业与海外客户的重要桥梁,正逐渐受到越来越多企业的关注。 本文将对海外呼叫中心服务的定义、重要性、

    06-17

  • 库克谈苹果可持续发展计划:我们必须做得好,别人才想效仿 - Feel Good Weekly

    库克谈苹果可持续发展计划:我们必须做得好,别人才想效仿 - Feel Good Weekly

    Feel Good简介 苹果:我们的可持续发展计划必须好到让人想“复制” MINI推出首款电动自行车 lululemon:更多中国消费者正在积极探索“Good Condition”最新快闪店“雀巢咖啡,使用后可以回收。 无畏:为旅程提供气候标签的第一步苹果:我们必须可持续“复制”最“绿色”的秋季

    06-21

  • 猫生活领先品牌Pidan完成B+轮融资,兴旺投资独家领投,

    猫生活领先品牌Pidan完成B+轮融资,兴旺投资独家领投,

    据7月5日消息,近日,猫生活领先品牌Pidan完成B+轮融资,兴旺投资独家领投。 Pidan品牌起源于法国巴黎。 以其高品质、高设计的宠物产品多次荣获德国红点奖。 Pidan独创混合猫砂品类,在天猫猫砂品类中排名第一。 Pidan瞄准“猫市场”,将自己定位为全品类宠物生活方式品牌。

    06-17

  • Village Fund将于今晚在纽约证券交易所上市,沈南鹏称值得长期投资

    Village Fund将于今晚在纽约证券交易所上市,沈南鹏称值得长期投资

    中式快餐连锁乡村基金今晚将在纽交所上市,成为首家中式餐饮企业。 红杉资本中国基金创始人兼高管合伙人沈南鹏在接受新浪财经独家采访时表示,他被乡村基金的“深刻印象”所吸引。 它的快速增长才刚刚开始,值得他长期投资。   Village Base是一家以美味川菜为主,与当地风

    06-18

  • 二氧化硅龙头确辰硅化主板挂牌,盈科资本IPO再获丰收

    二氧化硅龙头确辰硅化主板挂牌,盈科资本IPO再获丰收

    12月7日,确辰硅化(83.SH)在上交所正式挂牌上市。 截至目前,盈科资本年度IPO项目总数已达14个,其中科创板6个、创业板4个、主板3个、港交所1个。 同期IPO数量继续保持行业领先地位。 作为全球前三、亚洲第一的二氧化硅行业领军企业,确成硅化现已形成从原料硫酸、水玻璃到

    06-18

  • 南芯半导体完成数千万元A轮融资,顺为资本领投

    南芯半导体完成数千万元A轮融资,顺为资本领投

    据投资界1月23日消息,高性能模拟芯片半导体公司南芯半导体完成数千万元A轮融资处于A轮融资中。 本轮融资由顺为资本领投,兴业资本海逸、紫米科技跟投。 南芯也是顺为资本投资的第一家芯片设计公司。   南芯半导体成立于2001年,主要从事集成电路芯片的研究、设计、开发和销

    06-18

  • 春华资本宣布收购美赞臣大中华区业务

    春华资本宣布收购美赞臣大中华区业务

    春华资本宣布与利洁时签署最终协议,收购利洁时美赞臣大中华区业务,并将拥有美赞臣品牌在大中华区市场的永久权益此次独家使用权将从业务创新、运营完善、渠道优化、数字化转型等方面支持美赞臣未来在中国的发展。

    06-17

  • 英伟达需要警惕的对手来了

    英伟达需要警惕的对手来了

    市值超1.7万亿美元的AI军火商英伟达开始感受到“危机”,需要警惕各类“对手” 。 日前,有消息称孙正义计划筹集1亿美元创建一家AI芯片公司,旨在挑战英伟达。 近日,AI芯片初创公司Groq也透露出颠覆英伟达的意图。 NVIDIA在AI芯片市场上无可匹敌。 本财年,NVIDIA的销售额连

    06-18

  • 春节“医美”热潮,爱美客和昊海生科谁更赚钱?

    春节“医美”热潮,爱美客和昊海生科谁更赚钱?

    在外表经济的轨道上,医美项目逐渐成为消费主流。 随着春节假期的到来,医美的消费将迎来又一个高峰期。 “医美三剑客”中,爱美客(96.SZ)和昊海生科(66.SH)近日公布了2020年业绩报告:2020年,爱美客预计实现净利润18.10亿元至1.900元亿元,同比增长43%-50%;昊海生科预

    06-17