MySQL 半同步复制,给数据找靠谱 “分身”

打印 上一主题 下一主题

主题 1744|帖子 1744|积分 5232

目录
一·背景
二、MySQL 复制基础概念
为何需要 MySQL 复制
传统异步复制
半同步复制的诞生
三、MySQL 半同步复制原理详解
重要组件及作用
工作流程
半同步复制流程图
四、MySQL 半同步复制配置与代码示例
环境准备
主服务器配置
从服务器配置
示例阐明
五、MySQL 半同步复制的优缺点
长处
缺点
六、实际应用案例
电商平台的订单处理
金融生意业务系统的数据备份
七、小结

 
一·背景

在当今数据驱动的世界里,数据库的可靠性和数据同等性至关紧张。对于使用 MySQL 数据库的企业和开发者而言,确保数据在差别服务器之间正确、及时地复制是一项关键任务。MySQL 半同步复制作为一种紧张的复制机制,在保障数据同等性方面发挥偏紧张作用。
二、MySQL 复制基础概念

为何需要 MySQL 复制

想象一下,你谋划着一家热门的在线商城,每天都有海量的用户访问和生意业务。假如只有一台数据库服务器,一旦这台服务器出现故障,整个商城将陷入瘫痪,这对业务的影响是灾难性的。MySQL 复制就像是给你的数据库服务器找了几个 “替人”,数据在主服务器上更新后,会自动同步到这些 “替人”(从服务器)上。如许一来,不仅可以提高系统的容错能力,当主服务器负载过高时,还能让从服务器分担查询任务,提升整体性能。
传统异步复制

在相识半同步复制之前,先看看传统的 MySQL 异步复制。就好比你有一个消息传递团队,主服务器是队长,从服务器是队员。队长(主服务器)有了新消息(数据更新)后,会告诉队员(从服务器)去更新。但队长不会等队员确认是否收到并更新乐成,就继续去做其他事情了。这种方式速率快,因为没有等待确认的时间开销。但是,假如在消息传递过程中,某个队员充公到消息或者更新堕落,队长也不知道,这就可能导致数据不同等的问题。
半同步复制的诞生


为相识决异步复制可能出现的数据不同等问题,MySQL 半同步复制应运而生。它就像是改良后的消息传递机制,队长(主服务器)在发送消息(数据更新)给队员(从服务器)后,会等待至少一个队员确认收到并更新乐成,才会继续后续操作。如许大大提高了数据复制的可靠性,确保数据在主从服务器之间的同等性。
三、MySQL 半同步复制原理详解

重要组件及作用

主服务器(Master)
主服务器就像乐队的指挥,所有数据的变更都从这里开始。它记录所有的数据修改操作到二进制日志(Binary Log)中。当有新的数据更新时,好比用户在商城里下了一个新订单,主服务器会把这个订单数据的插入操作记录到二进制日志里。
从服务器(Slave)
从服务器是主服务器的老实追随者。它有两个关键线程,一个是 I/O 线程,负责从主服务器读取二进制日志的内容,并将其写入到自己的中继日志(Relay Log)中。另一个是 SQL 线程,它读取中继日志中的内容,并在从服务器上执行相应的数据库操作,从而实现数据的同步。就好像从服务器有一个快递员(I/O 线程)从主服务器那里取来 “任务包裹”(二进制日志内容),然后有一个工人(SQL 线程)按照包裹里的任务阐明(中继日志内容)在从服务器上完成相应操作。
半同步复制插件
这个插件是实现半同步复制的关键。在主服务器上,它负责等待从服务器简直认消息。在从服务器上,它负责在数据更新乐成后向主服务器发送确认消息。可以把它想象成主从服务器之间沟通的 “信使”,确保双方信息传递的正确性和及时性。
工作流程

 
数据更新在主服务器
当主服务器上发生数据更新操作时,好比执行了一条UPDATE products SET price = price * 1.1 WHERE category = 'electronics';的 SQL 语句,这条语句会被记录到主服务器的二进制日志中。
从服务器 I/O 线程工作
从服务器的 I/O 线程察觉到主服务器的二进制日志有更新,就像快递员看到有新包裹要取。它通过与主服务器建立的连接,读取主服务器二进制日志中的内容,并将其写入到从服务器的中继日志中。
从服务器 SQL 线程工作
从服务器的 SQL 线程就像一个勤劳的工人,它开始读取中继日志中的内容。它会剖析刚才写入的UPDATE语句,并在从服务器上执行相同的操作,对products表中category为electronics的产品代价进行更新。
确认消息传递
当从服务器的 SQL 线程乐成执行完数据更新操作后,从服务器上的半同步复制插件会向主服务器发送一个确认消息。主服务器收到这个确认消息后,才会继续处理后续的数据更新操作。假如在肯定时间内(这个时间可以通过配置参数设定)没有收到确认消息,主服务器可能会采取一些措施,好比切换复制模式或者报错。
半同步复制流程图


四、MySQL 半同步复制配置与代码示例

环境准备

假设我们有两台服务器,一台作为主服务器(IP:192.168.1.100),另一台作为从服务器(IP:192.168.1.101)。两台服务器都安装了 MySQL 数据库,版本为 8.0。
主服务器配置

开启二进制日志:打开主服务器的 MySQL 配置文件(通常是my.cnf或my.ini),找到或添加以下配置项:
  1. [mysqld]
  2. log-bin=mysql-bin
  3. server-id=1
复制代码
这里log-bin指定了二进制日志的文件名前缀,server-id是服务器的唯一标识,在复制环境中每个服务器的server-id必须差别。
安装半同步复制插件:登录到主服务器的 MySQL 命令行,执行以下命令安装插件:
  1. INSTALL PLUGIN rpl_semi_sync_master SONAME'semisync_master.so';
复制代码
启用半同步复制:执行以下命令启用主服务器的半同步复制功能,并设置等待从服务器确认的超时时间(这里设置为 10 秒):
  1. SET GLOBAL rpl_semi_sync_master_enabled = 1;
  2. SET GLOBAL rpl_semi_sync_master_timeout = 10000;
复制代码
重启 MySQL 服务:使配置见效。
从服务器配置

设置服务器 ID:打开从服务器的 MySQL 配置文件,添加或修改以下配置项:
  1. [mysqld]
  2. server-id=2
复制代码
 安装半同步复制插件:登录从服务器的 MySQL 命令行,执行以下命令安装插件:
  1. INSTALL PLUGIN rpl_semi_sync_slave SONAME'semisync_slave.so';
复制代码
启用半同步复制:执行以下命令启用从服务器的半同步复制功能:
  1. SET GLOBAL rpl_semi_sync_slave_enabled = 1;
复制代码
配置主服务器信息:告诉从服务器主服务器的地址、用户名、密码等信息,执行以下命令:
  1. CHANGE MASTER TO
  2.     MASTER_HOST='192.168.1.100',
  3.     MASTER_USER='replication_user',
  4.     MASTER_PASSWORD='password',
  5.     MASTER_LOG_FILE='master_log_file_name',
  6.     MASTER_LOG_POS=master_log_position;
复制代码
这里MASTER_HOST是主服务器的 IP 地址,MASTER_USER和MASTER_PASSWORD是用于复制的用户名和密码,MASTER_LOG_FILE和MASTER_LOG_POS可以通过在主服务器上执行SHOW MASTER STATUS;命令获取。
启动从服务器复制线程:执行以下命令启动从服务器的复制线程:
  1. START SLAVE;
复制代码
检查从服务器状态:执行SHOW SLAVE STATUS \G;命令,查看从服务器的状态。重点关注Slave_IO_Running和Slave_SQL_Running是否都为Yes,以及Seconds_Behind_Master的值是否为 0 或靠近 0。假如Seconds_Behind_Master值较大,阐明从服务器与主服务器之间有耽误。
示例阐明

配置过程中的 SQL 代码,就是在实际操作中用于配置 MySQL 半同步复制的指令。通过这些指令,我们可以将主从服务器配置成半同步复制模式,确保数据在主从服务器之间可靠地同步。
五、MySQL 半同步复制的优缺点

长处

数据同等性高:相比于异步复制,半同步复制通过等待从服务器简直认消息,大大提高了数据在主从服务器之间的同等性。就像老师修正作业,学生做完作业后要向老师确认已完成,老师才会继续布置新作业,如许能确保每个学生都跟上进度,数据不会出现偏差。
提升系统可靠性:当主服务器出现故障时,由于从服务器的数据与主服务器根本同等,我们可以快速将从服务器提升为主服务器,继续提供服务,减少系统停机时间。例如在电商系统中,纵然主数据库服务器突然瓦解,备用的从服务器可以敏捷顶上,保证用户的购物流程不受影响。
性能影响较小:虽然半同步复制需要等待从服务器简直认,但由于只需要等待至少一个从服务器简直认,相比于等待所有从服务器确认的同步复制,它的性能开销相对较小。在大多数环境下,不会对主服务器的性能产生明显的负面影响。
缺点

增长了肯定的耽误:因为主服务器需要等待从服务器简直认消息,所以在数据更新操作时,会比异步复制增长一些耽误。不过这个耽误通常在可接受范围内,尤其是在网络状况良好的环境下。
配置和维护相对复杂:相比于异步复制,半同步复制需要安装插件、配置更多的参数,并且在运行过程中需要密切关注主从服务器之间的同步状态。这对数据库管理员的技能要求较高,增长了配置和维护的难度。
六、实际应用案例

电商平台的订单处理

某知名电商平台每天处理数百万笔订单。在订单处理过程中,订单数据起首在主数据库服务器上进行插入和更新操作。为了确保订单数据的安全和同等性,该平台采取了 MySQL 半同步复制。主服务器将订单数据的变更记录到二进制日志后,等待至少一个从服务器确认同步乐成。如许,纵然主服务器出现硬件故障,从服务器上也有最新的订单数据,可以敏捷切换为主服务器,继续处理订单,保证了电商平台的稳固运行,避免了因数据丢失或不同等导致的生意业务纠纷。
金融生意业务系统的数据备份

一家金融机构的生意业务系统对数据的正确性和同等性要求极高。在这个系统中,MySQL 半同步复制用于将生意业务数据从主数据库服务器同步到多个从服务器。这些从服务器一方面作为数据备份,防止主服务器数据丢失;另一方面可以用于生成报表、进行数据分析等操作,而不会影响主服务器的性能。由于半同步复制确保了数据的同等性,金融机构可以放心地基于从服务器的数据进行各种业务分析,为决议提供可靠依据。
七、小结

MySQL 半同步复制作为一种强盛的数据复制机制,在保障数据同等性和系统可靠性方面发挥偏紧张作用。通过本文的介绍,我们相识了它的原理、工作流程、配置方法、优缺点以及实际应用案例。虽然它存在肯定的耽误和配置维护复杂的问题,但在数据同等性要求较高的场景下,其上风远远超过了这些不敷。随着技能的不断发展,MySQL 半同步复制也在不断优化和完善,将继续为广大企业和开发者提供可靠的数据复制解决方案。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表