Spirit:继承 gh-ost 灵魂的 MySQL 在线大表变更方案
昨天看到社区发布了一个新的 MySQL 大表变更工具 Spirit。是海外支付巨头 Block 旗下的 Cash App (地位类似于支付宝) 开源的,作者之前也在 PingCAP 工作过。
目前市面上做大表变更的方案有两个:
- Percona 开源的 pt-online-schema-change,基于 trigger。
- GitHub 开源的 gh-ost,基于 binary log。
业界更多采用 gh-ost 方案。Bytebase 也集成了基于 gh-ost 的大表变更方案。
Spirit 也是继承了 gh-ost 的灵魂,整体框架沿用 gh-ost。Spirit 这个名字(中文:精神)也是致敬的 Ghost。
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
我想这最后一条估计会劝退不少国内的用户,虽然 MySQL 5.7 已经官宣了 EOL,但国内 MySQL 5.6 也不在少数。
代码刚开源在 cashapp/spirit,采用 Apache 证书,知道的人还不多。如果能持续维护下去,有希望替代 gh-ost 成为 MySQL 大表变更的首选方案。
💡 更多资讯,请关注 Bytebase 公号:Bytebase

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ChatGPT 更新“知识”数据,截至 2023 年 4 月
ChatGPT 刚刚宣布,其“知识”数据已进行更新,当前的知识截止日期是 2023 年 4 月。 注意,此次知识数据更新仅面向 GPT-4 版本提供。 ChatGPT 官方提供了如下示例。 提问:请列出最近发生的 10 次灾难,以及在您的知识截止日期前的伤亡人数。灾难至少应始于 2022 年之后。 Here are 10 significant catastrophes that occurred after 2022, up to my knowledge cutoff in April 2023, along with their associated casualties: Earthquake in Turkey and Syria (February 6, 2023): This devastating earthquake, with a magnitude of 7.8, struck southeastern Turkey and northern Syria, leading to widespread destruction. The death toll exce...
- 下一篇
详解GuassDB数据库权限命令:GRANT和REVOKE
本文分享自华为云社区《GuassDB数据库的GRANT & REVOKE》,作者: Gauss松鼠会小助手2 。 一、GaussDB的权限概述 在数据库中,对象的创建者将成为该对象的所有者,具有对该对象进行查询、修改和删除等操作的权限。同时,系统管理员也拥有与所有者相同的权限。因此,如果要让其他用户能够使用某个对象,必须向该用户或包含该用户的角色授予必要的权限。 GaussDB数据库对象权限: 对象 权限 说明 数据库 DATABASE CONNECT 允许用户连接到指定的数据库 CREATE 允许在数据库里创建新的模式 模式 SCHEMA CREATE 允许在模式中创建新的对象 USAGE 允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名字 函数 FUNCTION EXECUTE 允许使用指定的函数,以及利用这些函数实现的操作符 表空间 TABLESPACE CREATE 允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。 表 TABLE INSERT DELETE UPDATE SELECT 允许用户对指定表进行增删改查操作 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库