写点什么

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

评论

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

详解MySQL之事务

C++后台开发

MySQL mysql事务 中间件 后端开发 C++开发

上海锡鼎正式加入openGauss社区

这道JS经典面试题不要背,今天带你彻底搞懂它!

茶无味的一天

JavaScript 面试

Java 函数式编程

Ayue、

java8

微信朋友圈高性能复杂度分析

Geek_1264yp

【Nacos源码之配置管理 八】客户端怎么获取服务端集群列表

石臻臻的杂货铺

nacos 10月月更

浪潮信息成为龙蜥理事单位,共建开放计算生态和行业方案

OpenAnolis小助手

开源 操作系统 产业链 龙蜥社区 浪潮信息

企业应该如何进行知识管理?

Baklib

知识管理 知识库

技术管理 之 技术

码猿外

技术管理

跟着卷卷龙一起学Camera--ISO

卷卷龙

ISP camera 10月月更

OpenStack第26版Zed已发布

极客天地

小程序该怎么挖掘App流量

Geek_99967b

小程序

什么是DataOps?DataOps与DevOps 有什么区别?

雨果

DataOps

跟着卷卷龙一起学Camera--金字塔融合法01

卷卷龙

ISP camera 10月月更

书单推荐|不惧复工,工作轻松

图灵教育

书单 复工

《高性能MySQL 第四版》正式上市

MySQL 数据库

Qt|编译QuaZip以及程序应用

中国好公民st

c++ qt 10月月更

【愚公系列】2022年10月 Go教学课程 022-Go容器之字典

愚公搬代码

10月月更

学会一行CSS即可提升页面滚动性能

茶无味的一天

CSS JavaScript chrome 前端 js

开拓“流程智能蓝海”丨九科信息董事&产品VP傅恺受邀分享流程挖掘实践案例

九科Ninetech

AI RPA 数字化转型 企业服务 流程挖掘

2022-10-8

留白的艺术

跟着卷卷龙一起学Camera--金字塔融合法02

卷卷龙

ISP camera 10月月更

书单推荐|不惧复工,工作轻松

图灵社区

书单 复工

小程序插件其实很简单

Geek_99967b

小程序 小程序插件

leetcode 94. Binary Tree Inorder Traversal 二叉树的中序遍历(中等)

okokabcd

LeetCode 数据结构与算法

借助小程序框架打破APP开发壁垒

Geek_99967b

小程序

大数据ELK(十七):Elasticsearch SQL 订单统计分析案例

Lansonli

10月月更 Elasticsearch SQL

【Nacos源码之配置管理 七】服务端增删改配置数据之后如何通知集群中的其他机器

石臻臻的杂货铺

nacos 10月月更

即将开营|报名获取跨平台与热更新技术操作秘籍!

字节跳动终端技术

flutter 移动开发 插件化 动态化 SDK热更新

Dubbo Mesh 总体技术架构方案

阿里巴巴云原生

阿里云 云原生 dubbo

数据工程师吐槽:数据API开发的那些烦心事

雨果

数据api

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