写点什么

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:181077

评论

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

模块5作业

Asha

TypeScript 之常见类型(下)

冴羽

JavaScript typescript 翻译 大前端

模块五作业

panxiaochun

架构实战营

x

Nydia

模块五作业

侠客行

架构实战营 「架构实战营」

微博系统中”微博评论“的高性能高可用计算架构设计

stars

架构训练营

Dubbo-Admin 正式支持 3.0 服务治理

阿里巴巴中间件

阿里云 云原生 dubbo 中间件 服务治理

邀请函|2021 云原生实战峰会,邀请您免费现场参会报名

阿里巴巴云原生

阿里云 云原生 峰会

如何掌握智识?

卢卡多多

28天写作 12月日更

微博系统中”微博评论“的高性能高可用计算架构

Geek_cb2b43

如何构建“深入浅出,喜闻乐见”的界面

Ian哥

28天写作 沟通界面 深入浅出 喜闻乐见

模块五作业

小鹿

趣谈“分布式链路追踪“组件发展史

悟空聊架构

分布式 链路追踪 28天写作 悟空聊架构 12月日更

还在担心流量防护问题?Sentinel来帮你!

XiaoLin_Java

SpringCloud Alibaba 流量防控 签约计划第二季

ASP.NET Core中三个egg疼的路由函数

喵叔

28天写作 12月日更

架构实战营 - 模块5 - 作业

lucian

架构实战营

微博评论的高性能高可用架构设计

zjluoyue

架构实战营第五课作业微博评论高性能高可用架构

Geek_99eefd

架构实战营 「架构实战营」

互联网公司如何塑造一支有创业精神的技术团队?

阿里巴巴中间件

创业 阿里云 中间件

记录:一个从0-1打磨演讲的技术专家

将军-技术演讲力教练

在线火星文转换器工具

入门小站

工具

聊聊SAAS

Im胡子

SaaS

前端架构师神技,三招统一代码风格

杨成功

大前端 架构师 代码规范 代码格式化 签约计划第二季

模块五作业

心怀架构

Rust 元宇宙 12 —— 序列化和存储

Miracle

rust 元宇宙

解密 Dubbo 三大中心的部署架构

阿里巴巴中间件

阿里云 微服务 云原生 dubbo 中间件

[Pulsar] 设置JWT认证

Zike Yang

Apache Pulsar 12月日更

linux之cp强制复制文件

入门小站

Linux

040022-week5-design

InfoQ_70156470130f

架构实战-模块五

唐敏

「架构实战营」

基于云的技术架构设计实践-第1篇

hackstoic

云计算 容器 云原生 CI/CD 签约计划第二季

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