最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

评论

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

区块链电子印章签约平台的搭建,区块链电子签约解决方案

13828808769

区块链 #区块链#

朱嘉明:《量子时代和数字经济2.0 》推荐序

CECBC

数字经济

4K Video Downloader V6.1.50 版本正式发布

科技猫

产品 软件 行业资讯 开发日志 发布

百家号在线视频编辑器的技术演进

百度Geek说

大前端

安卓开发从零开始!分析Android未来几年的发展前景,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

4月日更挑战|初夏开更,新人领书

InfoQ写作社区官方

4月日更 热门活动

架构培训作业

肖春

架构师训练营

历史命令被黑客删除?教你实时备份

运维研习社

Linux 4月日更 服务器安全

大厂面试必问!Android彻底组件化方案实践方法!面试总结

欢喜学安卓

android 程序员 面试 移动开发

Golang 泛型浅析

D

开源 云原生 编译器 语言 Go 语言

WebRtc学习之旅 —— Android端应用开发

小驰笔记

访问控制相关概念及常见模型

龙归科技

身份和访问管理

区块链电子合同--赋能企业数字化转型

13530558032

EGG NETWORK阿凡提以“自由匿名竞价”流通市场EFTalk

币圈那点事

量化策略系统搭建,马丁策略交易软件

公安合作作战指挥中心,情报分析研判系统建设

大厂面试必须掌握的 Linux 性能优化题

倪朋飞

Linux 面试 性能优化

区块链的创新技术给奢侈品行业带来了新的机会

CECBC

奢侈品

探索js让你的网页“自己开口说话”

云小梦

JavaScript 音视频 audioContext API

美团点评高级1234面:算法+HashMap+Zookeeper+线程+Redis+kafka

钟奕礼

Java 编程 程序员 架构 面试

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

钟奕礼

Java 编程 程序员 架构 面试

2021阿里面试通关手册必备:5000字面经解析(技术/攻克)

比伯

Java 架构 面试 程序人生 计算机

源中瑞智慧平安社区--为平安生活助力

13530558032

勇做全球区块链“分布式存储”领航

CECBC

分布式

Redis-技术专题-数据日志持久化

洛神灬殇

redis 持久化 aof rdb

DevEco Studio 2.1 Beta3强势来袭

Geek_283163

华为 鸿蒙 开发

Redis 期中测试

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

Java高级研发:2021阿里天猫、中间件、蚂蚁金服JD要求+面题答案

钟奕礼

Java 编程 程序员 架构 面试

区块链电子合同签署平台搭建,区块链电子存证解决方案

13828808769

区块链+ #区块链#

gorm源码阅读之schema

werben

Go 语言 gorm

WebRtc学习之旅 —— 初认识

小驰笔记

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