gh-ost
是MySQL的无触发在线模式迁移解决方案。它是可测试的,可提供可停用性,动态控制/重新配置,审核和许多操作津贴。
gh-ost
在整个迁移过程中都会在主体上产生轻巧的工作量,与迁移表上的现有工作负载分离。
它是根据现有解决方案多年的经验而设计的,并改变了桌子迁移的范式。
所有现有的在线换换工具都以类似的方式运行:它们以您的原始表的相似性创建一个幽灵表,迁移该表,同时缓慢,缓慢地将数据从原始表复制到幽灵表,同时传播正在进行的更改(任何INSERT
, DELETE
, UPDATE
应用于您的表)到Ghost表。最后,在正确的时间,他们用幽灵表替换了您的原始桌子。
gh-ost
使用相同的模式。但是,通过不使用触发器,它与所有现有工具不同。我们已经认识到这些触发因素是许多局限性和风险的来源。
取而代之的是, gh-ost
使用二进制日志流捕获表更改,并且异步将它们应用于幽灵表。 gh-ost
承担了其他工具为数据库执行的一些任务。结果, gh-ost
对迁移过程具有更大的控制。可以真正暂停它;可以真正将迁移的写入负载从主人的工作负载中分解出来。
此外,它提供了许多操作津贴,使其更安全,值得信赖和有趣。
gh-ost
信任。 gh-ost
将发出与主上的流相同的流程,以迁移副本上的表格,而无需实际替换原始表,而将复制品留下两个桌子,然后您可以比较并满足自己的操作。这就是我们在生产中不断测试gh-ost
方式。gh-ost
节气门时,它真正停止在主上写作:无行副本,也没有正在进行的事件处理。通过节流,您可以将主人归还其原始工作量gh-ost
。您可以强行启动节流。gh-ost
状态。 gh-ost
在UNIX插座或TCP上听。gh-ost
推迟最关键的步骤:桌子的交换,直到您舒适地使用。无需担心ETA在办公时间外。gh-ost
与您的特定环境搭配。请参考文档以获取更多信息。不,真的,阅读文档。
作弊表拥有一切。您可能有兴趣以各种模式调用gh-ost
:
gh-ost
算出所涉及的服务器的身份。如果您的主人使用基于语句的复制,则需要模式)gh-ost
更喜欢前者)gh-ost
操作建立信任的方式。我们的提示:
--test-on-replica
前几次。更好的是,使其连续。我们有多个复制品,在其中迭代整个生产表,一一迁移它们,检查结果,验证迁移是好的。--execute
来发出真实的东西。更多提示:
--exact-rowcount
以进行准确的进度指示--postpone-cut-over-flag-file
来控制剪切计时另请参阅:
gh-ost
gh-ost
最初,这被命名为gh-osc
:GitHub在线模式更改,例如Facebook在线模式更改和PT-Online-Schema-Schema-Change。
但是随后发生了一个罕见的遗传突变, c
变成了t
。这使我们走下了试图找出新的缩写词的道路。 gh-ost
(发音:幽灵),代表Github的在线模式传输器/转换器/变形金刚/变形针
gh-ost
已获得MIT许可证的许可
gh-ost
使用第三方库,每个库都有自己的许可证。这些在这里找到。
gh-ost
处于稳定状态,但要走了里程。我们愿意提取请求。请首先通过问题讨论您的意图。
我们在Github和社区开发gh-ost
。我们的优先事项可能与其他优先事项不同。我们可能会不时提出一项不在我们的直接路线图上的贡献,而是可能吸引他人。
请参阅编码GH-OST以获取使用GH-OST开发的指南。
gh-ost
现在是GA且稳定的。
linux和Mac OS/X的gh-ost
以二进制格式提供
在此处下载最新版本
gh-ost
是一个GO项目;它是使用GO 1.15
及以上建造的。要自行构建,请使用:
./bin/gh-ost
二进制。/tmp/gh-ost-release
中构建tar.gz
工件的build.sh一般而言, master
分支是稳定的,但只能在生产中使用。
gh-ost
是由GitHub的数据库基础架构团队设计,撰写,审查和测试的: