首页主机资讯Ubuntu MariaDB主从同步原理

Ubuntu MariaDB主从同步原理

时间2025-11-27 15:11:04发布访客分类主机资讯浏览1142
导读:核心流程与线程模型 主库将数据的变更以事件形式写入二进制日志 Binary Log(binlog)。 从库启动一个I/O 线程连接主库,持续读取主库的 binlog 并写入本地的中继日志 Relay Log。 从库再启动一个SQL 线程读...

核心流程与线程模型

  • 主库将数据的变更以事件形式写入二进制日志 Binary Log(binlog)
  • 从库启动一个I/O 线程连接主库,持续读取主库的 binlog 并写入本地的中继日志 Relay Log
  • 从库再启动一个SQL 线程读取 Relay Log,按顺序在从库上重放这些事件,从而保持与主库的数据一致。
  • 线程关系:每个主从连接有主库的Binlog Dump 线程;每个从库有自身的I/O 线程SQL 线程。这是 MariaDB/MySQL 复制的基础模型。

复制格式与数据一致性

  • 复制格式由参数 binlog_format 控制,常用取值为:
    • STATEMENT:记录 SQL 语句本身;
    • ROW:记录行级变更;
    • MIXED:由服务器按场景自动选择。
  • 复制是异步的:主库提交事务后不等待从库确认,从库会存在一定延迟(可通过 Seconds_Behind_Master 观察)。
  • 复制并非复制磁盘数据文件,而是基于binlog 事件流进行传输与重放。

关键配置与复制起点

  • 主库必备:
    • 设置唯一的 server-id
    • 启用 log-bin(开启 binlog);
    • 创建用于复制的账号并授予 REPLICATION SLAVE 权限;
    • 通过 SHOW MASTER STATUS 获取当前的 FilePosition,作为从库复制起点。
  • 从库必备:
    • 设置唯一的 server-id(与主库及其他从库不同);
    • 配置 relay_log
    • 使用 CHANGE MASTER TO 指定主库连接信息与复制起点(MASTER_LOG_FILE、MASTER_LOG_POS);
    • 启动复制后,用 SHOW SLAVE STATUS\G 检查 Slave_IO_RunningSlave_SQL_Running 是否为 Yes

常见拓扑与注意事项

  • 常见拓扑:一主一从一主多从链式级联;也可做双主,但需额外处理自增与冲突。
  • 重要注意:
    • 主从库 server-id 必须唯一
    • 建议主从时间同步(如 NTP);
    • 放通 3306 端口与网络连通性;
    • 从库可设置 read_only=1 避免业务误写(SUPER 权限账户仍可写);
    • 误执行 DROP/DELETE 等语句会复制到从库,需配合备份/延迟从库/闪回等策略降低风险。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu MariaDB主从同步原理
本文地址: https://pptw.com/jishu/757933.html
Ubuntu MariaDB内存配置建议 Debian进程如何管理依赖关系

游客 回复需填写必要信息