写点什么

Galera MySQL 5.7.17 bug 修复

  • 2019-09-15
  • 本文字数:923 字

    阅读完需:约 3 分钟

Galera MySQL 5.7.17 bug修复

Galera MySQL 5.7.17 由于设置 innodb_undo_table_spaces 大于 0 导致使用 RSYNC 进行全量数据同步失败的原因及解决办法

Part.1

一 问题现场

将一个初始化过(执行过–initialize)的节点添加到 Galera MySQL 集群中时:数据同步完成后,Innodb 使用 undo log 中的记录回滚未提交的事务时会触发下面的 ERROR:




ERROR 说 Innodb 访问了一个 undo log 表空间之外的数据页。

二 问题猜测

在 Galera MySQL 中,向正在运行的集群中添加一个节点时会触发全量数据同步——SST。SST 会选择一个 donor,并将这个 donor 的整个数据目录中的内容同步给新添加的节点。


照此,如果新添加的节点上的数据是 donor 节点的一份一模一样的拷贝的话,那 undo log 也会是 donor 节点正在使用的 undo log,理论上也就不会出现任何问题。


所以怀疑是在进行 SST 的时候出了问题,没能正常同步 undo log。

三 验证猜测

删除没能正常同步数据的节点数据文件夹夹内的所有文件(恢复到–initialize 之前的状态)并启动 MySQL,将这个节点添加到集群中,发现数据文件夹内并没有 undo log:



于是产生上面 ERROR 的原因可以确定为是执行 SST 时没能正常同步 undo log table space。

Part.2

问题解决

出现问题的 Galera MySQL 集群使用 rsync 作为 SST 同步数据的方法;在使用 rsync 同步数据时默认会使用【/usr/bin/wsrep_sst_rsync】程序。


改程序在调用 rsync 传输数据之前会为 rsync 设置如下的文件过滤规则:



可以看出文件过滤规则中虽然指定了 innodb 的系统表空间 iddata,但是却没有添加 undo log 表空间的文件——以 undo 开头的文件:



在 MySQL 5.7 之后的版本,为了避免大的事务造成系统表空间变的过大,将配置【innodb_undo_table_spaces】设置为大于 0 的值时,Innodb 使用独立于系统表空间之外的文件存储 undo log;但是 Galera MySQL 的【wsrep_sst_rsync】却没有考虑到这一点,导致进行数据同步时,没能正确同步独立的 undo log 表空间。


于是在 wsrep_sst_rsync 程序中设置文件过滤的行中进行如下修改:


之后就可以成功添加节点了。

Part.3

问题跟进

目前这个问题已经提交给了 Galera MySQL,并且已经被官方修复。



本文转载自公众号滴滴技术(ID:didi_tech)。


原文链接:


https://mp.weixin.qq.com/s/wKdU7GskIIFRVDGOXKry-Q


2019-09-15 23:18872

评论

发布
暂无评论
发现更多内容

架构师训练营第十二周总结

xiaomao

架构师训练营-大作业二

石子头

读《专访朱啸虎》,我学到了什么?

李忠良

学习 写作 投资 创业者 读后感

十二、数据应用(一)

Geek_28b526

架构师训练营第十二周作业1

韩儿

算法:罗马数字转换为整数,RxSwift的好处,git pull问题解决error: cannot lock ref,产品经理新人如何落地 John 易筋 ARTS 打卡 Week 34

John(易筋)

ARTS 打卡计划 算法:罗马数字转换为整数 RxSwift的好处 git pull cannot lock ref 产品经理新人如何落地

架构师训练营大作业(二)

月殇

Java并发编程总结

topsion

Java 并发编程 多线程

架构师训练营大作业二

一马行千里

架构师训练营第 1 期

第 12 周 系统架构总结

心在那片海

架构师训练营 week12 课后作业

花果山

软件架构总结图

dll

架构师训练营第 1 期 - 大作业 (一)

wgl

架构师训练营第 1 期

架构师训练营 week12 学习笔记

花果山

【架构师训练营 1 期】大作业一

诺乐

【架构师训练营 1 期】大作业二

诺乐

架构师训练营第 12 周:数据应用(一)

xiaomao

SpringMVC学习!

程序员的时光

程序员 28天写作

给我结果

三只猫

28天写作

第 12 周 系统架构作业

心在那片海

漫谈中台系列:《1小时带你深入理解中台》学习整理

程序员架构进阶

架构 中台 技术 探索与实践 28天写作

架构师训练营 4 期 第2周

引花眠

架构师训练营 4 期

精选算法面试-栈

李孟聊AI

算法 堆栈 28天写作

架构训练营第十二周作业

一期一会

大数据 hdfs hive

28 天带你玩转 Kubernetes-- 第三天(K8s 安装)

Java全栈封神

Kubernetes k8s 28天写作 k8s安装

架构师训练营第 1 期 - 大作业 (二)

wgl

架构师训练营第 1 期

架构师训练营第十二周作业2

韩儿

【薪火计划】10 - 目标计划管理

AR7

管理 28天写作

价值 - 什么是有价值的事?(3)

石云升

读书笔记 28天写作 价值

python 变量

赵开忠

Python 28天写作

记一次缓存服务器迁移史,心塞!

冰河

高并发 高性能 分布式缓存 数据同步 服务器迁移

Galera MySQL 5.7.17 bug修复_数据库_赵博文_InfoQ精选文章