[MySQL故障处理]记一次innobackupex导致的从库无法同步的问题
往期专题请查看www.zhaibibei.cn 这是一个坚持Oracle,Python,MySQL原创内容的公众号
这个专题讲一些MySQL日常运维的异常处理
1. 现象
一套MySQL主从复制出现异常
start slave 时报错
[ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000077' position 1027952423.
2. 原因查找
2.1 查看error日志
首先我们查看error日志
发现如下报错
[ERROR] Slave SQL for channel '': Could not execute Write_rows event on
table safe.safelog; Duplicate entry '6101370' for key 'PRIMARY',
Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's
master log mysql-bin.000077, end_log_pos 1027953607, Error_code: 1062
可以看到报错原因为主键冲突
2.2 查看复制状态
我们执行
show slave statusG
可以看出是同样的报错
2.3 继续分析
一般这种情况是从库没有设置只读,检查过已经设置为只读
同时确认了该重复值在开始复制前就已存在,所以可能为复制的起始点错误导致
备份主库时一般使用mysqldump命令 加上--master-data参数可得到起始点
该主从使用的是innobackupex 工具
备份
innobackupex --parallel=16 --throttle=4000 --user=root --password=XXXX --slave-info /data/
还原
innobackupex --defaults-file=/etc/my.cnf --apply-log /data/2019-01-24_13-56-05
innobackupex --defaults-file=/etc/my.cnf --copy-back /data/2019-01-24_13-56-05
使用的复制起始点是 xtrabackup_binlog_pos_innodb 文件的内容
cat xtrabackup_binlog_pos_innodb
mysql-bin.000077 1027950562
一切看起来都设正常的,问题出在哪里呢
3. 问题解决
上面获取复制点的 xtrabackup_binlog_pos_innodb 文件引起了注意
一般我们用的xtrabackup_binlog_info 这个文件
这2个文件有什么区别呢
xtrabackup_binlog_pos_innodb 只记录innodb引擎的变化,而不会记录其他的引擎
接下来我们查询这2个文件的信息是否相同
最后发现xtrabackup_binlog_info的值要略大于xtrabackup_binlog_pos_innodb的值
这时原因找到了 是由于该数据库同时还有MyISAM引擎的表导致这2个文件的值不相同
最后我们使用xtrabackup_binlog_info里面的值,复制正常
5. 参考链接
https://blog.51cto.com/jschu/1704848
https://www.percona.com/doc/percona-xtrabackup/2.3/howtos/setting_up_replication.html
可点击阅读原文获得更好的阅读体验,推荐在PC端阅读
也可在公众号内回复 innobackupex 搜索相关内容
或直接打开个人网页搜索
http://www.zhaibibei.cn
- Uva 11729 Commando War (简单贪心)
- UVA 11292 Dragon of Loowater(简单贪心)
- Codeforces Beta Round #2 A,B,C
- 牛顿迭代法(Newton's Method)
- 最长递减子序列(nlogn)(个人模版)
- Selenium2+python自动化26-js处理内嵌div滚动条
- Selenium2+python自动化25-js处理日历控件
- 转负二进制(个人模版)
- Selenium2+python自动化24-js处理富文本
- 【干货】对抗自编码器PyTorch手把手实战系列——PyTorch实现对抗自编码器
- Selenium2+python自动化23-富文本(自动发帖)
- 2-Sat+输出可行解(个人模版)
- 协同过滤原理及Python实现
- 每周学点大数据 | No.25二叉搜索树回顾(二)
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解