写点什么

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

评论

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

百度APP Android包体积优化实践(二)Dex行号优化

百度Geek说

Java Andriod

怎样让全彩LED显示屏变的节能环保?

Dylan

LED显示屏 全彩LED显示屏

乘数科技云管控平台适配阿里云PolarDB,共促云原生数据库生态繁荣

阿里云数据库开源

数据库 阿里云 开源数据库 polarDB PolarDB for PostgreSQL

仅需一个依赖给Swagger换上新皮肤,既简单又炫酷

程序知音

Python 爬虫 JS 逆向 X-Bogus,signature 加密算法,AST 理论篇

梦想橡皮擦

Python 爬虫 7月月更

SCA在得物DevSecOps平台上应用​

得物技术

安全 DevSecOps SCA

前两天面了个腾讯拿 38K 出来的,让我见识到了基础的天花板,今天share给大家~

程序知音

Java 程序员 java面试 后端技术 八股文

Linux 文件系统函数

贾献华

7月月更

【等保小知识】等保整改是什么意思?整改内容包括哪些?

行云管家

等保测评 等级测评 等保整改

2022亚洲国际物联网展会

AIOTE智博会

物联网展览会

2022长三角工业自动化展会将于10月在南京国际展览中心召开

AIOTE智博会

工业自动化展会 工业机器人展会 江苏工博会

国产统信UOS系统运行小程序的探索

Geek_99967b

小程序

对话ACE第四期:分布式数据库未来发展的挑战和机遇

OceanBase 数据库

数据库 分布式数据库 oceanbase

长期的远程工作面临的几个问题和持续改进的组织自动化

Ryan Zheng

远程办公

Kyligence 出席华为全球智慧金融峰会,加速拓展全球市场

Kyligence

数据湖 数据分析 OLAP

学界VS工业界:深度学习究竟能不能打破视频编解码天花板

小红书技术REDtech

深度学习 音视频 视频编解码 音视频技术

真人踩过的坑,告诉你避免自动化测试新手常犯的10个错误

禅道项目管理

自动化 测试 自动化测试

JS数组方法

bo

JavaScript 前端 7月月更

Idea 连接 MySQL 数据库

攻城狮杰森

MySQL IDEA database 7月月更

NFTScan 与 Port3 在 NFT 数据领域达成战略合作

NFT Research

企业进行知识管理有哪些好处?

Geek_da0866

strcmp() - 比较字符串

謓泽

7月月更

2022年数据库审计产品排行榜-必看!

行云管家

数据库 数据库审计

JAVA编程规范之异常处理

源字节1号

微信小程序 软件开发 前端开发 后端开发

C# 使用Timer和ProgressBar控件制作一个倒计时器

IC00

C# 7月月更

首发!这份字节大佬亲码算法面试大厂进阶宝典,让你轻松刷爆LeetCode!

了不起的程序猿

字节跳动 算法 java程序员

设计消息队列存储消息数据的 MySQL 表格

Fan

架构实战营

今日分享| 阿里巴巴内部最新Docker精髓笔记

冉然学Java

Java Docker 阿里 #技术干货# Java 开发

K8S多集群管理很难?试试Karmada | K8S Internals系列第3期

BoCloud博云

容器 容器云 K8s 多集群管理

科创人·观远数据CEO苏春园:让业务用起来,是BI行业推倒渗透率之墙的关键

科创人

大数据

如何搭建一个好的知识库管理系统?

Geek_da0866

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