SBOSC, 最新的 MySQL Schema 在线变更方案

2024年 5月 21日 35.3k 0

SB-OSC, 最新的 MySQL Schema 在线变更方案-1目前主流的 MySQL 在线变更方案有两个:

  • 基于 trigger 的 pt-online-schema-change

  • 基于 binlog 的 gh-ost

上周 Sendbird 刚开源了他们的 MySQL Schema 在线变更方案 SB-OSC: Sendbird Online Schema Change。

SB-OSC, 最新的 MySQL Schema 在线变更方案-2

GitHub 上刚刚 9 颗星星,绝对新鲜出炉。

SB-OSC, 最新的 MySQL Schema 在线变更方案-3

SB-OSC, 最新的 MySQL Schema 在线变更方案-4

亮点

SB-OSC 采用了和 gh-ost 一样的 binlog 方案。重新造轮子主要是为了解决两个问题:

  1. 大幅提高迁移速度。使用 gh-ost 时,如果碰到有大量写入操作的表,可能导致 gh-ost 来不及转移更新的数据,也就永远无法完成在线变更。SB-OSC 使用了多线程,并且把迁移明确地分成了两个阶段:

    阶段一:存量导入

    1. SB-OSC, 最新的 MySQL Schema 在线变更方案-5

      阶段二:增量导入

SB-OSC, 最新的 MySQL Schema 在线变更方案-6

    和 gh-ost 的性能比较

SB-OSC, 最新的 MySQL Schema 在线变更方案-7

  1. 断点续传。gh-ost 如果中途断了,那只好从头来过。想想一个在线大表变更已经执行了 3 天,到最后一晚莫名挂掉。造成发布延期,团队能有多崩溃。SB-OSC 保存了执行进度,可以从中断的地方继续。

SB-OSC, 最新的 MySQL Schema 在线变更方案-8

局限首先是需要依赖的组件,只能跑在 AWS 上。

SB-OSC, 最新的 MySQL Schema 在线变更方案-9

适用范围

SB-OSC, 最新的 MySQL Schema 在线变更方案-10

比较头疼的是第一条,因为表采用 UUID 作为主键是很常见的。

SB-OSC, 最新的 MySQL Schema 在线变更方案-11

总结

SB-OCS 目前还是一个针对 Sendbird 自己场景的 MySQL 在线变更方案,有明显的局限性。但其在变更性能上的加强以及断点续传能力确实解决了 gh-ost 最大的痛点。

原文:https://sendbird.com/developer/tutorials/sb-osc-sendbird-online-schema-change

GitHub 仓库: https://github.com/sendbird/sb-osc

SB-OSC, 最新的 MySQL Schema 在线变更方案-12我欺骗了CTO,但拯救了公司(附HN热评)
Bytebase 2.17.0 - 支持为工单设置标签
如何通过变更让 PostgreSQL 翻车
你的14天免费试用根本没用!SB-OSC, 最新的 MySQL Schema 在线变更方案-13
SB-OSC, 最新的 MySQL Schema 在线变更方案-14SB-OSC, 最新的 MySQL Schema 在线变更方案-15

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论