故障分析 | MySQL:我的从库竟是我自己!?


吹牛堂
吹牛堂 2023-07-10 16:33:52 52205
分类专栏: 资讯

1背景

有人反馈装了一个数据库,来做现有库的从库。做好主从复制关系后,在现有主库上使用 show slave hosts; 管理命令去查询从库的信息时,发现从库的 IP 地址竟是自己的 IP 地址,这是为什么呢?

因生产环境涉及 IP,端口等保密信息,以下以本地环境来还原现象。

2本地复现

基本信息

  主库 从库
IP 10.186.65.33 10.186.65.34
端口 6607 6607
版本 8.0.18 8.0.18

问题现象

不多说,先上图,以下为在主库执行 show slave hosts; 出现的现象:

图片

可以看到这里的 Host 是主库的 IP 地址。

我们登陆从库查看一下 show slave status\G

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.186.65.33
                  Master_User: universe_op
                  Master_Port: 6607
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 74251749
               Relay_Log_File: mysql-relay.000008
                Relay_Log_Pos: 495303
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

我们看到确实从库是在正常运行的,且复制的源就是主库。

为什么执行 show 命令看到的 Host 和实际的情况对不上呢?

3查阅资料

首先查阅官方文档,关于 show slave hosts; 语句的解释:

图片
  • 首先说明 8.0.22 之后版本的 show slave hosts 语句被废弃(可执行),改为 show replicas,具体机制还是一样的。
  • 这里说明了各个数据的来源,多数来源于 report-xxxx 相关参数,其中 Host 的数据来自于从库的 report_host 这个参数。

然后,我们测试在从库执行 show variables like "%report%";

mysql> show variables like "%report%";
+-----------------+--------------+
| Variable_name   | Value        |
+-----------------+--------------+
| report_host     | 10.186.65.33 |
| report_password |              |
| report_port     | 6607         |
| report_user     |              |
+-----------------+--------------+
4 rows in set (0.01 sec)

可以看到这里显示的就是主库的 IP。

我们再查询 report_host 的参数基本信息:

图片

可以看到该参数非动态配置,在从库注册时上报给主库,所以主库上执行 show slave hosts; 看到的是 IP 是从这里来的,且无法在线修改。

最后也通过查看从库上的 my.cnf 上的 report_port 参数,证实确实是主库的 IP:

图片

4结论

经了解,生产上的从库是复制了主库的配置文件来部署的,部署时没有修改 report_host 这个值,导致启动建立复制后将 report_host 这个 IP 传递给主库,然后主库查询 show slave hosts 时就出现了自己的 IP,让主库怀疑自己的从库竟然是自己。

生产上大部分人知道复制主库的配置文件建立新库要修改 server_id 等相关 ID 信息,但比较容易忽略掉 report_ipreport_port 等参数的修改,这个需要引起注意,虽然错误之后看起来对复制运行是没影响的。

 

 

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=25960
赞同 0
评论 0 条
吹牛堂L2
粉丝 0 发表 41 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2944
【软件正版化】软件正版化工作要点  2863
统信UOS试玩黑神话:悟空  2823
信刻光盘安全隔离与信息交换系统  2717
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1251
grub引导程序无法找到指定设备和分区  1217
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  163
点击报名 | 京东2025校招进校行程预告  162
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  160
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!