写点什么

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

评论

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

最全数据分类分级标准汇编,有必要了解一下!

极盾科技

对于Getaverse,灵魂绑定和去中心化身份是什么?

Geek_Web3

Web3 Daily 去中心化信任 #区块链# did

自定义函数实现IoT数据编解码、格式处理与业务告警

EMQ映云科技

物联网 IoT 自定义函数 12 月 PK 榜 增值服务

数据库运维 | 携程分布式图数据库NebulaGraph运维治理实践

NebulaGraph

图数据库 数据库运维

喜报 | 秒云获评2022(第二届)“金信通”金融科技创新应用优秀案例

MIAOYUN

金融科技 解决方案 信创

4000道Java面试真题合集,助你搞定面试官

钟奕礼

Java 程序员 java编程

GitHub上标星65k+超火的《Java大厂面试》,分享整理的PDF版本

钟奕礼

Java 程序员 java面试 java编程

版本控制 | 如何将UnrealGameSync与Perforce Helix Core结合使用

龙智—DevSecOps解决方案

虚拟引擎 UnrealGameSync

华为侯金龙:能源流与信息流融合,共建绿色低碳城市

极客天地

iQOO11 国内安卓首发背景音过滤,人声更突显,通话更隐私

极客天地

模型精度再被提升,统一跨任务小样本学习算法 UPT 给出解法!

阿里云大数据AI技术

人工智能 自然语言处理 机器学习 模型 12 月 PK 榜

【附视频】在线研讨会回顾|龙智引入自动化测试工具,帮助企业优化DevSecOps工具链,提升QA效率

龙智—DevSecOps解决方案

自动化测试

2.1如何设计可扩展架构

程序员小张

「架构实战营」

通过 NFTScan 实时监控钱包地址和 NFT 合约地址

NFT Research

区块链 数据分析 NFT

软件测试丨Git分支管理实操,搞定在线合并和本地合并

测试人

GitHub 软件测试 自动化测试 测试开发

数字化转型的十大优势

优秀

数字化转型 数字化升级

《2022年数据库大调查》正式启动,共同助力国产数据库发展

墨天轮

数据库 oracle TiDB 问卷调查 国产数据库

十亿国民新宠:皮皮App线上派对新社交

联营汇聚

时间复杂度和空间复杂度

C++后台开发

数据结构 算法 网络编程 linux开发 C++开发

代码质量与安全 | 如何应对网络安全威胁,保障软件安全?

龙智—DevSecOps解决方案

软件安全 安全软件开发生命周期 网络安全威胁

架构实战营 2-4 架构质量提升随堂练习

西山薄凉

「架构实战营」

Elasticsearch Head插件使用小结

京东科技开发者

elasticsearch 索引 chorme 数据库· 数据查询

Databend 索引结构说明

Databend

基于人眼视觉模型,实现码率、质量、成本的最优均衡

阿里云CloudImagine

云计算 阿里云

空间音频技术与生态发展高峰论坛成功举办,业界首个Audio Vivid创作工具花瓣三维声亮相

HarmonyOS SDK

HMS Core

校招Java岗学到什么程度,才能找到所谓的好工作呢?

Java永远的神

Java 程序员 面试 程序人生 秋招

中台+低代码 企业数字化转型新范式

力软低代码开发平台

7天搞定一门新技术!5个含金量很高的短篇课程推荐

博文视点Broadview

用户面对面 | 对话某新能源汽车行业工程师:如何落地Atlassian工具?

龙智—DevSecOps解决方案

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