MySQL:我的从库竟是我自己!?

本文将通过复制场景下的异常分析,介绍手工搭建MySQL主从复制时需要注意的关键细节。

作者:秦福朗

爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。热爱互联网,会摄影、懂厨艺,不会厨艺的 DBA 不是好司机,didi~

本文来源:原创投稿

  • 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

背景

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

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

本地复现

基本信息

主库从库
IP10.186.65.3310.186.65.34
端口66076607
版本8.0.188.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 eventMaster_Host: 10.186.65.33Master_User: universe_opMaster_Port: 6607Connect_Retry: 60Master_Log_File: mysql-bin.000002Read_Master_Log_Pos: 74251749Relay_Log_File: mysql-relay.000008Relay_Log_Pos: 495303Relay_Master_Log_File: mysql-bin.000002Slave_IO_Running: YesSlave_SQL_Running: Yes

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

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

查阅资料

首先查阅官方文档,关于 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:

结论

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

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

关于 SQLE

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

SQLE 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/16072.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当某个微服务重启后,GateWay网关访问服务出现503的问题

因为开发阶段可能需要经常重启微服务,但有时会莫名奇妙返回503 Service Unavailable 由于从springcloud2020版本开始,弃用了Ribbon,因此Alibaba在2021及之后版本的nacos中删除了Ribbon的jar包,因此无法通过loadbalancer路由到指定…

LSTD: A Low-Shot Transfer Detector for Object Detection论文阅读笔记

LSTD: A Low-Shot Transfer Detector for Object Detection论文阅读笔记 提出low-shot Transfer detector,来解决标注样本数据不足的情况。利用source domain知识,来构建高效的target-domain检测器,仅需要很少的训练样本。 提出了一个高效的…

【MySQL系列】MySQL库的学习及基本操作(增删查改)

「前言」文章内容大致是数据库的基本操作 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 「枫叶先生有点文青病」「句子分享」 哪里会有人喜欢孤独,不过是不喜欢失望罢了。 ——村上春树《挪威的森林》 目录 一、创建/查看数据库二、删除数据库三、…

飞控学习笔记-IMU姿态算法

扩展卡尔曼滤波算法 传感器融合算法 卡尔曼滤波算法 最小二乘法 毕卡逼近法 对上式进行泰勒展开 得到四元数各阶近似算法: 梯度下降算法 梯度下降 互补滤波算法 chatgpt解释: 互补滤波(Complementary Filter)算法是一种常用…

OpenCV的remap实现图像垂直翻转

以下是完整的代码: #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>int main() {

OpenCV 入门教程:全局阈值处理

OpenCV 入门教程&#xff1a;全局阈值处理 导语一、全局阈值处理二、示例应用2.1 图像二值化2.2 图像去噪 总结 导语 全局阈值处理是图像处理中常用的技术之一&#xff0c;用于将图像转换为二值图像&#xff0c;从而提取感兴趣的目标区域。在 OpenCV 中&#xff0c;全局阈值处…

jenkins_svn_maven持续集成

详解Jenkins &#xff0c;svn &#xff0c;maven 项目持续集成 第一步&#xff1a; 由于刚刚接触jenkins 并不知道他是个什么东西&#xff0c;首先百度一下&#xff0c;然后进入官网&#xff0c;下载安装包。 第二步 windows 安装&#xff1a; 下载完了&#xff0c;打开里面…

Linux——进程信号(上)

目录 前文 一&#xff0c;什么是进程信号 二&#xff0c;信号的产生 2.1 通过按键终端产生信号 2.2 调用系统函数向进程发信号 2.3 由软条件产生信号 2.4 硬件异常产生信号 总结 前文 上文主要讲了一下进程间用管道通信的相关知识&#xff0c;本文主要带领大家深度认识一…

【GeoDa实用技巧100例】002:初始GeoDa软件

文章目录 一、GeoDa简介二、软件界面三、新建保存打开数据源1. 新建数据源2. 保存数据源3. 关闭数据源4. 打开数据源 四、保存打开项目1. 保存项目2.打开项目 一、GeoDa简介 GeoDa是一款免费的开源软件工具&#xff0c;用于空间数据分析。GeoDa旨在通过探索和建模空间模式来促…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平研修

【科研团队必选】老师赋予目的不仅仅是技术的掌握&#xff0c;更能从技术融合与科研经验的视角下&#xff0c;培养科研团队科研素质&#xff0c;挖掘-融合-创新 目的&#xff1a;以科研及项目角度解决您的数据分析问题及热点问题&#xff0c;为您的论文写作及项目推进挖掘更好…

iOS通用链接(UniversalLink)配置详细流程

一、Universal Links 配置过程 登录苹果账号后&#xff0c;点击创建的APP 的Bundle ID&#xff0c;跳转到APP 信息页面。记录下Team ID 和Bundle ID 备用。勾选上 功能列表上的 ”Associated Domains“选项。 配置苹果后台 创建一个text空文本文件&#xff0c;去掉文件后缀&a…

37.RocketMQ之Broker消息存储源码分析

highlight: arduino-light 消息存储文件 rocketMQ的消息持久化在我们在搭建集群时都特意指定的文件存储路径,进入指定的store目录下就可以看到。 下面介绍各文件含义 CommitLog 存储消息的元数据。produce发出的所有消息都会顺序存入到CommitLog文件当中。 CommitLog由多个文件…