昨天看到社区发布了一个新的 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-o服务器托管网st。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
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
在本篇文章中,我们深入探讨了Go语言中字符串的魅力和深度。从基础定义、操作、字符编码到复杂的类型转换,每个环节都带有实例和代码示例来深化理解。通过这些深入的解析,读者不仅能够掌握字符串在Go中的核心概念,还能洞察Go设计哲学背后的思考。 关注公众号【TechL…