当前位置: 首页 > news >正文

MySQL主从同步原理

MySQL主从同步原理

MySQL主从同步(Replication)是一种数据复制机制,允许将一个MySQL数据库服务器(主库)的数据自动同步到一个或多个其他服务器(从库)。其核心目标是实现数据备份、读写分离和高可用性。

主从复制的核心就是二进制日志,记录了所有数据定义语言,数据操作语言,不包括数据查询语言

主从同步的基本流程

  1. 主库将数据变更写到二进制日志(Binary Log,简称binlog)。binlog是主从同步的基础,记录了所有可能影响数据库内容的操作(如INSERT、UPDATE、DELETE等)。
  2. 从库的I/O线程会连接到主库,请求获取主库的binlog。主库的binlog dump线程会将binlog内容发送给从库的I/O线程。
  3. 从库的I/O线程将接收到的binlog内容写入到自己的中继日志(Relay Log)。中继日志的作用是暂存从主库接收到的数据变更,供后续处理。
  4. 从库的SQL线程会读取中继日志中的事件,并在从库上重新执行这些SQL操作,从而使从库的数据与主库保持一致。

主从同步的三种模式

基于语句的复制(Statement-Based Replication, SBR) 主库记录SQL语句本身到binlog,从库通过重放这些SQL语句来实现同步。优点是日志量小,但某些函数(如NOW())可能导致主从不一致。

基于行的复制(Row-Based Replication, RBR) 主库记录每行数据的变化到binlog。优点是准确性高,但日志量大,尤其在批量操作时。

混合模式复制(Mixed-Based Replication, MBR) 默认使用SBR,仅在可能引发不一致的情况下自动切换到RBR。结合了两者的优点,是MySQL推荐的模式。

主从同步的配置示例

主库配置(my.cnf):

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=MIXED

从库配置(my.cnf):

[mysqld]
server-id=2
relay-log=mysql-relay-bin
read_only=1

设置主从同步的命令:

-- 在主库创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';-- 在从库配置主库信息
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;-- 启动从库复制
START SLAVE;

主从同步的常见问题

数据延迟 从库由于硬件性能或网络问题,可能无法及时应用主库的变更,导致数据延迟。可以通过监控Seconds_Behind_Master参数来发现。

主从不一致 某些操作可能导致主从数据不一致。可以使用pt-table-checksum等工具进行校验,并通过pt-table-sync工具修复。

复制中断 网络问题或主库binlog被清理可能导致复制中断。需要重新配置复制起点或修复网络问题。

相关文章:

  • 快速失败(fail-fast)和安全失败(fail-safe)的区别
  • 传统医疗系统文档集中标准化存储和AI智能化更新路径分析
  • 爬虫知识之IP代理
  • 用 AI 让学习更懂你:如何打造自动化个性化学习系统?
  • 嵌入式开发方向开发利器
  • OpenLayers 加载全屏显示控件
  • 【萤火工场GD32VW553-IOT开发板】ADC电压的LabVIEW采集
  • 【Code Agent Benchmark】论文分享No.15:TAU-Bench
  • 标准版v5.6.1, 优化了一些细节提升体验
  • RabbitMQ的详细使用
  • 超详细网络介绍(超全)
  • 5.24本日总结
  • CQF预备知识:Python相关库 -- NumPy 基础知识 - 数组创建
  • Ubuntu20.04 gr-gsm完整安装教程
  • SQL每日一题
  • SQL SERVER常用聚合函数整理及示例
  • 全面指南:使用Node.js和Python连接与操作MongoDB
  • 二十五、面向对象底层逻辑-SpringMVC九大组件之HandlerMapping接口设计
  • 【Linux】进程基本概念与基本操作
  • 【深度学习新浪潮】如何用Dify构建自己的AI Agent?
  • 小程序免费制作平台360/广州各区正在进一步优化以下措施
  • 舟山网站建设开发/微信营销的成功案例
  • 做网站开专票税钱是多少个点/代运营
  • 做五金的有哪些外贸网站/seo查询优化
  • 做网站什么内容/宁波seo推广如何收费
  • 中外商贸网站建设平台/首页排名关键词优化