MST

星途 面试题库

面试题:MySQL配置文件与高可用架构的关系

当搭建MySQL高可用架构如主从复制、MHA时,在MySQL配置文件层面分别需要做哪些关键配置调整?请详细阐述每个配置项的作用及原理。
27.5万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

主从复制配置

  1. 主库配置
    • log-bin=mysql-bin
      • 作用:开启二进制日志,记录数据库的更改操作,从库通过读取主库的二进制日志来同步数据。
      • 原理:MySQL将所有修改数据库数据的操作记录到二进制日志文件中,这些日志文件可以被从库获取并应用,从而保持主从数据一致性。
    • server - id=1
      • 作用:唯一标识MySQL服务器实例,在主从复制架构中每个服务器的server - id必须不同。
      • 原理:用于在复制拓扑中区分不同的MySQL实例,避免在数据同步过程中出现混淆和冲突。
    • binlog - do - db=your_database_name(可选)
      • 作用:指定需要记录二进制日志的数据库,若不配置则记录所有数据库操作。
      • 原理:通过限定记录日志的数据库范围,减少日志量,提高性能,同时也能精准控制哪些数据库进行主从复制。
    • binlog - ignore - db=your_database_name(可选)
      • 作用:指定不需要记录二进制日志的数据库。
      • 原理:与binlog - do - db相反,用于排除特定数据库的日志记录,适用于某些不需要参与主从复制的数据库。
  2. 从库配置
    • server - id=2
      • 作用:唯一标识从库MySQL服务器实例,与主库及其他从库的server - id不同。
      • 原理:与主库的server - id原理相同,用于在复制环境中明确标识从库。
    • relay - log=mysql - relay - bin
      • 作用:开启中继日志,从库将主库传来的二进制日志内容暂存到中继日志中,然后由SQL线程读取并应用。
      • 原理:从库的I/O线程将主库的二进制日志内容下载到本地中继日志,SQL线程再从这里读取并在从库上执行,保证数据同步。
    • read - only=1
      • 作用:设置从库为只读模式,防止从库数据被意外修改,保证主从数据一致性。
      • 原理:除了复制线程,其他用户或进程对从库的写操作会被拒绝,确保从库数据只能通过主库同步更新。

MHA配置

  1. 所有节点通用配置(主库和从库)
    • server - id:同主从复制中的作用,唯一标识每个MySQL服务器实例,在MHA管理的集群中每个实例的server - id必须不同,以区分各个节点。
  2. 主库配置
    • log - bin=mysql - bin:开启二进制日志,与主从复制中主库该配置作用相同,记录数据库的更改操作,以便在故障切换时新主库能获取原主库的操作日志,保证数据一致性。
    • gtid - mode=ON(可选但推荐)
      • 作用:开启全局事务标识符(GTID)模式,GTID能更精确地跟踪和复制事务,提高故障切换时的数据一致性和恢复效率。
      • 原理:每个事务在主库上生成一个唯一的GTID,从库通过GTID来应用事务,确保事务在不同节点上以相同顺序执行,避免数据不一致。
    • enforce - gtid - consistency=ON(与gtid - mode配合使用)
      • 作用:强制GTID一致性,确保MySQL在执行事务时遵循GTID模式的规则,保证数据一致性。
      • 原理:限制MySQL执行可能导致GTID不一致的操作,如某些特定的存储过程、函数操作等,从而维护GTID环境下的事务一致性。
  3. 从库配置
    • relay - log=mysql - relay - bin:开启中继日志,从库接收主库的二进制日志内容并存储到中继日志,供SQL线程读取应用,保证数据同步,与主从复制中从库该配置作用相同。
    • read - only=1:设置从库为只读模式,防止从库数据被意外修改,确保数据一致性,与主从复制中从库该配置作用相同。
    • gtid - mode=ON(若主库开启GTID模式,从库也需开启):开启全局事务标识符(GTID)模式,从库通过GTID来同步主库事务,与主库保持数据一致性,与主库开启GTID模式作用原理相同。
    • enforce - gtid - consistency=ON(若主库开启GTID模式,从库也需开启):强制GTID一致性,确保从库在GTID模式下执行事务的一致性,与主库开启该配置的作用原理相同。