游乐游手机版
首页/系统平台/文章详情

Debian环境下MariaDB主从复制原理详解

时间:2026-08-21 06:25
MariaDB主从复制到底是什么原理?核心流程主库会将数据变更以事件的形式写入二进制日志 Binary Log(binlog),这是 MariaDB 主从同步的基础。从库启动复制后,会创建I O 线程连接主库;主库则为每个从库连接分配一个Binlog Dump 线程,持续把 binlog 事件发送给

MariaDB主从复制到底是什么原理?

DebianMariaDB主从复制原理

核心流程

  • 主库会将数据变更以事件的形式写入二进制日志 Binary Log(binlog),这是 MariaDB 主从同步的基础。
  • 从库启动复制后,会创建I/O 线程连接主库;主库则为每个从库连接分配一个Binlog Dump 线程,持续把 binlog 事件发送给从库。从库的 I/O 线程接收到这些事件后,会写入本地的中继日志 Relay Log
  • 随后,从库上的SQL 线程会读取 Relay Log,并按顺序重放其中的事件,从而让从库数据尽量与主库保持一致。
  • MariaDB 复制默认是异步的:主库提交事务时,不会等待从库确认事件已接收或执行,因此从库通常会有一定的秒级延迟(Seconds_Behind_Master)

线程与文件

  • 线程模型
    • 主库:会为每一个从库连接创建一个Binlog Dump 线程,专门负责发送 binlog。
    • 从库:包含一个I/O 线程(负责拉取 binlog 并写入 Relay Log)和一个SQL 线程(负责回放 Relay Log 中的事件)。
  • 关键文件
    • 主库:binlog 文件序列(例如 mysql-bin.000001),用于记录数据库中的数据变更事件。
    • 从库:包含Relay Log 文件序列relay-log.index;此外还有保存主库连接信息和接收进度的master.info,以及记录重放进度的relay-log.info。这些文件可以帮助数据库在异常重启后从断点继续进行复制。

复制格式与一致性

  • 复制格式由参数binlog-format控制,常见配置包括:
    • STATEMENT:记录执行的 SQL 语句;日志体积相对较小,但如果语句依赖上下文环境或不确定性函数,可能导致主从执行结果不一致。
    • ROW:按行记录数据变更;一致性更高,更适合要求严格的数据同步场景,但日志体积通常更大。
    • MIXED:由 MariaDB 根据语句特性自动在 STATEMENT 和 ROW 之间选择,兼顾性能与一致性。
  • 数据一致性要点
    • 默认的异步复制存在延迟,也有一定的数据丢失风险,例如主库宕机时,部分 binlog 事件可能尚未传输到从库。
    • 从库通常会配置为read-only,以防止应用直接写入从库而破坏主从复制一致性(不过超级用户依然可以写入)。
    • MariaDB 主从复制并不是直接复制磁盘上的数据文件,而是基于binlog 事件进行日志传输与重放的机制。

常见拓扑与用途

  • 一主一从:适合入门部署,也是最常见的读写分离方案。
  • 一主多从:适用于读请求扩展、报表查询以及数据分析分流等场景。
  • 链式级联:A→B→C,可以减少主库的连接数量与网络带宽压力。
  • 双主(互为主从):实现双向同步,常与高可用、故障转移方案结合使用,以提升系统可用性(但需要谨慎处理自增主键和数据冲突问题)。

复制时定位与监控的要点

  • 查看主库状态:SHOW MASTER STATUS; 获取当前日志文件名与位置(File/Position),这也是从库初始化接入时的重要起点。
  • 查看从库状态:SHOW SLA VE STATUSG 重点关注
    • Sla ve_IO_Running / Sla ve_SQL_Running:这两个线程都显示为Yes时,说明复制线程运行正常。
    • Seconds_Behind_Master:表示当前主从复制延迟的秒数,0 通常表示基本没有明显延迟。
    • Master_Log_File / Read_Master_Log_Pos:表示 I/O 线程已经读取到的主库日志位置。
    • Relay_Master_Log_File / Exec_Master_Log_Pos:表示 SQL 线程已经执行到的主库日志位置。
  • 从库接入示例:CHANGE MASTER TO ... , MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=155; START SLA VE;(执行后再通过 SHOW SLA VE STATUSG 进行检查与验证)。
来源:https://www.yisu.com/ask/13984014.html
上一篇Debian系统MariaDB数据库备份与恢复方法 下一篇Debian系统中MongoDB配置优化方法与性能调优指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
系统平台 · 2026-09-01

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

Win10专业版U盘安装教程:制作启动盘与完整安装步骤
系统平台 · 2026-09-01

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

Windows10系统字体太小怎么调大
系统平台 · 2026-08-27

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

Win10磁盘占用100%基础排查:从监控到清理的完整步骤
系统平台 · 2026-08-27

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

Windows10系统怎么显示此电脑和控制面板
系统平台 · 2026-08-27

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。