1、问题:

MySQL从库中查看主从状态:
show slave status\G,发现出现IO的报错:

Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log:
'A slave with the same server_uuid/server_id as this slave has connected to the master;
the first event 'mysql-bin.001878' at 874478273, the last event read from './mysql-bin.001878' at 878264052,
the last byte read from './mysql-bin.001878' at 878264052.'

2、背景:

这边有一台MySQL 服务器,有1,2,3 三个从库.第一天晚上 3 号从库用于其他数据库恢复操作,所以删掉了,只删掉了数据。
第二天晚上,我用 2 号从库对 3 号从库进行了恢复,步骤是停掉2号从库的slave 进程,然后关库,然后将2号从库data下的
所有数据全部cp 到了3号从库的data下,修改权限,然后重新启动了2台从库,可以正常启动。 问题是,我启动2号从库的slave进程,3号从库的slave IO进程就会断掉,我启动3号从库的slave 进程,2号就会断掉。这个是哪里的原因?

3、处理思路

首先想到的是server_id 的问题,然后我对两台从库的server_id 进行了排查,发现server_id 是不同的,没有问题。
然后根据 Last_IO_Errno 的报错信息很清楚的发现:
A slave with the same server_uuid/server_id as this slave has connected to the master
意思是:与此从机具有相同server_uuid / server_id的从机已连接到主机。也就是说,问题就出在了server_uuid上。
查看两边的 server_uuid,发现果然是一样的!

2号从库:

3号从库:

果断修改MySQL  datadir 目录下的auto.cnf 文件中uuid,我的理解是只要与其他从库不一样就行。
修改完成之后重启MySQL 服务。 service mysqld stop; service musqld start; 进入数据库启动slave 进程 然后查看各个从库的状态,发现IO 进程恢复正常。

4、对server_uuid 的解释(网络资料):

由于恢复是直接把2号的slave停掉,然后直接cp到新的机子上,所以 auto.cnf 里面保存的uuid 仍然是2号从库的uuid,
导致从库在向master 申请binlog时master出错,导致从库IO进程断开。
MySQL 5.6 用 128 位的 server_uuid 代替了原本的 32 位 server_id 的大部分功能。
原因很简单,server_id 依赖于 my.cnf 的手工配置,有可能产生冲突 —— 而自动产生 128 位 uuid 的算法可以保证所有的 MySQL uuid 都不会冲突。 在首次启动时 MySQL 会调用 generate_server_uuid() 自动生成一个 server_uuid,并且保存到 auto.cnf 文件 ——
这个文件目前存在的唯一目的就是保存 server_uuid。
在 MySQL 再次启动时会读取 auto.cnf 文件,继续使用上次生成的 server_uuid。
使用 SHOW 命令可以查看 MySQL 实例当前使用的 server_uuid:
SHOW GLOBAL VARIABLES LIKE 'server_uuid';
它是一个 MySQL 5.6 global variables
全局唯一的 server_uuid 的一个好处是:可以解决由 server_id 配置冲突带来的 MySQL 主备复制的异常终止
在 MySQL 5.6,Slave 向 Master 申请 binlog 时,会首先发送自己的 server_uuid,Master 用 Slave 发送的 server_uuid 代替
server_id (MySQL 5.6 之前的方式)作为 kill_zombie_dump_threads 的参数,终止冲突或者僵死的 BINLOG_DUMP 线程。
 
 
 
 
 
 
 
 
 
 
 

最新文章

  1. 功能强大而又简单易学的编程语言Python
  2. Mac系统下显示和隐藏文件
  3. memcached tomcat maven 学习记录
  4. VB6对象与地址相互转换
  5. php总体架构图
  6. angular 和jq 的AJAX的请求区别
  7. SQL分组取每组前一(或几)条记录(排名)
  8. java 计算器基于工厂模式和功能单一模式
  9. 在 Windows 7 環境安裝 Python 2.6.6
  10. 测试Tomcat
  11. Android Cursor空指针的问题
  12. <django中render_to_response的可选参数和使用方法>
  13. 预处理命令#define #undef #if #endif 的基本用法
  14. spring init
  15. Java调用IDL方法总结
  16. 容器_JDK源码分析_自己简单实现ArrayList容器
  17. 在ASP.NET Core中构建路由的5种方法
  18. JDK动态代理浅析
  19. ERP项目实施记录11-产品工艺流程图及单据关联图
  20. View.requestLayout

热门文章

  1. 【python小随笔】celery异步任务与调用返回值
  2. .NET Core 3.1之深入源码理解HealthCheck(二)
  3. 「CH2501」 矩阵距离 解题报告
  4. HTTP请求中的GET-POST方式
  5. 小白学 Python 爬虫(36):爬虫框架 Scrapy 入门基础(四) Downloader Middleware
  6. react 表单(受控组件和非受控组件)
  7. 恕我直言,牛逼哄哄的MongoDB你可能只会30%
  8. 《深入理解 Java 虚拟机》读书笔记:虚拟机性能监控与故障处理工具
  9. Java开源工作流引擎Jflow表单方案系列讲解一
  10. JAVA大数贪心