MySQL Slave master.info

在 MySQL 中,master_info_repository 参数用于控制从库如何存储主库的连接元数据(如复制位置、主库服务器ID等信息),其值可以是 FILE(存储在文件 master.info 中)或 TABLE(存储在系统表 mysql.slave_master_info 中)

1 查询从库存储主库的连接元数据方式

1.1 使用 SHOW VARIABLES 命令

mysql> SHOW VARIABLES LIKE 'master_info_repository';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| master_info_repository | TABLE |
+------------------------+-------+
1 row in set (0.01 sec)

推荐设置

  • MySQL 5.7+ 版本:推荐设置为 TABLE,原因如下:

    • 安全性:避免明文存储密码(FILE 模式下密码可能暴露在文件中)。

    • 可靠性:表存储支持事务,可减少复制中断风险。

    • 多源复制支持:MySQL 5.7+ 的多源复制要求此参数为 TABLE

  • MySQL 8.0+ 版本:默认值为 TABLE,无需额外配置。

1.2 通过 MySQL 配置文件查看

如果参数在配置文件(如 my.cnfmy.ini)中显式设置,可直接检查文件内容:

[mysqld]
master-info-repository                   = table
  • 注意:若未在配置文件中设置,则使用 MySQL 默认值(MySQL 8.0+ 默认值为 TABLE)。

2 验证存储位置

  • 若为 FILE:检查 master.info 文件(通常位于数据目录,如 /var/lib/mysql/master.info)。

  • 若为 TABLE:查询系统表:

    SELECT * FROM mysql.slave_master_info;
    
    若为主库,则返回空

3 当前托管方式问题

例行切换时依赖节点有 {datadir}/master.info 文件,即 MySQL 8.0+ 需要改配置才支持例行切换

Last updated