MST

星途 面试题库

面试题:MariaDB中主从复制里binlog的基本同步流程是怎样的

在MariaDB主从复制架构中,请描述binlog从主库到从库的基本同步流程,包括涉及的主要线程和关键步骤。
48.6万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

1. 主要线程

  • 主库:Binlog Dump Thread:当从库连接主库时,主库创建此线程,负责读取主库的二进制日志(binlog),并将其发送给从库。
  • 从库:I/O Thread:负责连接主库,向主库的Binlog Dump Thread请求二进制日志,并将接收到的日志内容写入到本地的中继日志(relay log)中。
  • 从库:SQL Thread:从库的SQL Thread负责读取中继日志中的事件,并在从库上执行这些事件,从而使从库的数据与主库保持一致。

2. 基本同步流程

  • 配置主库
    • 在主库的配置文件(如my.cnf)中启用二进制日志功能,设置唯一的服务器ID(server-id)等相关参数。
    • 创建用于主从复制的用户,并授予REPLICATION SLAVE权限。例如:CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES;
    • 获取主库状态信息,如二进制日志文件名(show master status;),记录日志文件名和日志位置,后续从库配置需要用到。
  • 配置从库
    • 在从库的配置文件中设置唯一的server-id
    • 使用CHANGE MASTER TO语句配置主库连接信息,包括主库的IP地址、端口、复制用户、密码以及主库二进制日志文件名和位置。例如:CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_binlog_file', MASTER_LOG_POS=master_log_position;
  • 启动复制:在从库执行START SLAVE;命令启动主从复制。
  • 同步过程
    • 连接建立:从库的I/O Thread连接到主库,向主库发送请求,请求获取二进制日志。主库的Binlog Dump Thread响应请求。
    • 日志传输:Binlog Dump Thread开始读取主库的二进制日志,并将日志内容发送给从库的I/O Thread。I/O Thread将接收到的日志写入到本地的中继日志文件中,并记录中继日志的位置。
    • 日志执行:从库的SQL Thread读取中继日志中的事件,按照顺序在从库上执行这些事件,从而更新从库的数据,使其与主库保持同步。同时,SQL Thread也会记录当前执行到中继日志的位置。
  • 监控与维护:可以使用SHOW SLAVE STATUS\G命令在从库查看复制状态,确保Slave_IO_RunningSlave_SQL_Running都为Yes,并且Seconds_Behind_Master的值为0或接近0,表明主从复制正常工作。