当前位置: 首页 > article >正文

Spirit:继承 gh-ost 灵魂的 MySQL 在线大表变更方案

file

昨天看到社区发布了一个新的 MySQL 大表变更工具 Spirit。是海外支付巨头 Block 旗下的 Cash App (地位类似于支付宝) 开源的,作者之前也在 PingCAP 工作过。

file

目前市面上做大表变更的方案有两个:

  • Percona 开源的 pt-online-schema-change,基于 trigger。
  • GitHub 开源的 gh-ost,基于 binary log。

业界更多采用 gh-ost 方案。Bytebase 也集成了基于 gh-ost 的大表变更方案。

file

file

Spirit 也是继承了 gh-ost 的灵魂,整体框架沿用 gh-ost。Spirit 这个名字(中文:精神)也是致敬的 Ghost。

file

Spirit 对于 gh-ost 的改进点:

  • 多线程复制
  • 断点恢复
  • 自适应复制数据的速度
  • 通过设置水位标和保存 Change Row Map 避免复制不必要的数据

这其中最有价值的改进点是 2 - 断点恢复。之前 gh-ost 的问题是一旦断开,就要重头再来,变更一张大表,有时要几天,好不容易等到快结束时, gh-ost 挂了,一切从头来过,那大家都奔溃。

而大表变更跑的越久,挂掉的可能性就越高。尤其现在大家都跑在 K8s 上,pod 挂掉本身就是预期的。要知道数据库变更没做完,新的应用版本就没法上线,新的应用版本没法上线,新的运营活动就不能展开。这种延期对于像 Cash app 这样的业务是不可接受的。

Spirit 和 gh-ost 还有两个需要注意的区别:

  • Spirit 不像 gh-ost 那样提供激进的限流
  • Spirit 只支持 MySQL 8.0

file

我想这最后一条估计会劝退不少国内的用户,虽然 MySQL 5.7 已经官宣了 EOL,但国内 MySQL 5.6 也不在少数。

代码刚开源在 cashapp/spirit,采用 Apache 证书,知道的人还不多。如果能持续维护下去,有希望替代 gh-ost 成为 MySQL 大表变更的首选方案。
在这里插入图片描述


💡 更多资讯,请关注 Bytebase 公号:Bytebase


http://www.kler.cn/a/104508.html

相关文章:

  • 图论02-【无权无向】-图的深度优先遍历DFS
  • VUE父组件向子组件传递数据和方法
  • 【嵌入式项目应用】__cJSON在单片机的使用
  • 威联通NAS进阶玩法之使用Docker搭建个人博客教程
  • 算法通过村第十六关-滑动窗口|黄金笔记|结合堆的应用
  • 并发编程面试笔记
  • 私人网盘nextcloud安装
  • 软信天成:助力某制造企业建设产品主数据管理平台案例分享
  • 导入自己的jacoco exec文件到IDEA并进行展示
  • c++构造函数
  • 【2024秋招】2023-9-14 最右线下后端开发二面
  • Vue 2 生命周期与 Vue 3 生命周期:介绍与差别对比
  • GoLong的学习之路(七)语法之slice(切片)
  • 运维 | 使用 Docker 安装 Jenkins | Jenkins
  • Are Large Language Models Really Robust to Word-Level Perturbations?
  • [linux] 怎么批量kill掉挂载运行python 某个.py文件的端口
  • 23款奔驰E300L升级几何多光束大灯 车辆自检等功能
  • Kotlin中的异常处理
  • 【LeetCode刷题日志】189.轮转数组
  • 电脑技巧:笔记本电脑网络不显示wifi列表解决办法