MST

星途 面试题库

面试题:MySQL中如何配置文件以实现主从复制中的事件分发

在MySQL主从复制场景下,假设你要配置从库以正确接收并应用主库的事件日志,请详细描述需要修改的配置文件(如my.cnf)中的关键参数及其作用,以及从库启动复制的相关SQL命令。
12.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

1. 修改 my.cnf 配置文件关键参数及其作用

  • server - id
    • 作用:每个MySQL实例都必须有一个唯一的标识符。在主从复制环境中,主库和从库的 server - id 不能相同。它用于标识MySQL服务器实例,在复制过程中,从库使用 server - id 来跟踪自己在复制拓扑中的位置。
    • 示例server - id = 2 (假设主库的 server - id 为1,从库可设为2,具体数值根据实际情况而定)
  • log - bin
    • 作用:从库通常不需要开启二进制日志(在主库开启即可),如果从库开启了二进制日志并且参与了级联复制(即此从库作为其他从库的主库),那么需要配置此参数。它用于记录数据库的更改操作,以便在故障恢复或复制时使用。
    • 示例log - bin = /var/log/mysql/mysql - bin.log (指定二进制日志文件路径)
  • relay - log
    • 作用:用于指定从库中继日志的路径和文件名前缀。从库从主库接收二进制日志事件,并将其存储在中继日志中,然后SQL线程从中继日志中读取并应用这些事件。
    • 示例relay - log = /var/log/mysql/mysql - relay.log
  • relay - log - index
    • 作用:用于指定中继日志索引文件的路径和文件名。它记录了当前正在使用的中继日志文件以及已经处理过的中继日志文件列表,帮助SQL线程和IO线程正确管理和跟踪中继日志。
    • 示例relay - log - index = /var/log/mysql/mysql - relay.index

2. 从库启动复制的相关SQL命令

  • 配置主库连接信息
CHANGE MASTER TO
    MASTER_HOST = '主库IP地址',
    MASTER_USER = '复制用户',
    MASTER_PASSWORD = '复制用户密码',
    MASTER_LOG_FILE = '主库二进制日志文件名',
    MASTER_LOG_POS = 主库二进制日志位置;
  • 解释
    • MASTER_HOST:指定主库的IP地址。
    • MASTER_USER:在主库上创建的用于复制的用户。
    • MASTER_PASSWORD:该复制用户的密码。
    • MASTER_LOG_FILEMASTER_LOG_POS:这两个值可以在主库上通过执行 SHOW MASTER STATUS; 命令获取,它们表示从库开始复制的主库二进制日志的文件名和位置。
  • 启动复制
START SLAVE;
  • 解释:此命令启动从库的复制功能,开启IO线程和SQL线程。IO线程负责从主库拉取二进制日志事件并写入中继日志,SQL线程负责从中继日志中读取事件并应用到从库数据。
  • 查看复制状态
SHOW SLAVE STATUS \G;
  • 解释:此命令查看从库复制状态的详细信息。重点关注 Slave_IO_RunningSlave_SQL_Running 这两个字段,若都为 Yes,表示复制正常运行;还有 Seconds_Behind_Master 字段,用于显示从库落后主库的大致时间(单位为秒)。如果有异常,可以根据状态信息排查问题。