首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spirit精神小伙 - 一款基于gh-ost原理的在线DDL工具

Spirit精神小伙 - 一款基于gh-ost原理的在线DDL工具

原创
作者头像
贺春旸的技术博客
发布于 2024-06-07 04:15:35
发布于 2024-06-07 04:15:35
2200
举报
文章被收录于专栏:DBA 平台和工具DBA 平台和工具

使用 pt-online-schema-change(基于触发器) 或 gh-ost(基于binlog)修改表结构?当然,MySQL DBA 都在使用。但现在有一种新的在线模式更改工具 - Spirit(翻译后:精神)

那么为了方便记忆,我们称之为Spirit精神小伙。

https://github.com/cashapp/spirit

Spirit是一款基于gh-ost原理的在线DDL工具,主要用于执行表结构修改(ALTER TABLE)操作。与gh-ost类似,Spirit也采用了"在线双写"的方式,创建一个新表,并使用多线程并发地从原表复制数据到新表,同时通过解析binlog获取原表增量数据,保持新旧表数据最终一致。

Spirit的设计思路和基本原理源于gh-ost,但在实现细节上作了一些优化和创新。

工作原理

创建表:创建一个临时表(_new),其结构与原始表相同。

复制表:多线程并发从原表查询数据批量插入到临时表(_new),例:INSERT IGNORE INTO `test`.`_sbtest2_new` (`id`, `k`, `c`, `pad`)

SELECT `id`, `k`, `c`, `pad` FROM `test`.`sbtest2` FORCE INDEX (PRIMARY) WHERE `id` >= 2001 AND `id` < 3001

增量复制:使用 binlog 事件将原始表的更改增量复制到新表中。

切换表:在完成所有数据复制后,通过原子性的 RENAME TABLE 操作将新表替换为原始表。

使用

代码语言:bash
AI代码解释
复制
shell> ./spirit --host=127.0.0.1:3346 
--username=admin 
--password=123456 
--database=test 
--table=sbtest1 
--alter="modify pad varchar(300)" 
--threads=4
Spirit工具使用介绍
Spirit工具使用介绍

总结

  • Spirit性能是其主要卖点,通过并发复制和增量复制机制,可以高效地执行大表在线DDL,且不会导致过多锁等待。
  • 仅支持在MySQL 8.0+版本上使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术分享 | Online DDL 工具 gh-ost
爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理。擅长数据库故障处理。对数据库技术和 python 有着浓厚的兴趣。
爱可生开源社区
2020/08/05
1.2K0
技术分享 | Online DDL 工具 gh-ost
MySQL在线DDL工具 gh-ost
gh-ost基于 golang 语言,是 github 开源的一个 DDL 工具,是 GitHub's Online Schema Transmogrifier/Transfigurator/Transformer/Thingy 的缩写,意思是 GitHub 的在线表定义转换器。
东山絮柳仔
2021/03/18
1.8K0
技术分享 | Online DDL 工具 pt-osc
爱可生 DBA 团队成员,主要负责 MySQL 故障处理和公司自动化运维平台维护。对技术执着,为客户负责。
爱可生开源社区
2020/09/23
5.5K0
技术分享 | Online DDL 工具 pt-osc
MySQL 最佳实践:gh-ost 工具使用详解
MySQL 的同步机制比较单纯,主库上执行过的 DML 和 DDL 会在从库上再执行一次,那么主库上需要 10min 才能执行完的 DDL 理论上在从库至少也要花费 10min 才能执行完,这意味着从库的同步会延迟 10min 以上,等 DDL 执行完之后才会继续追同步。
王文安@DBA
2020/07/30
11.1K0
MySQL 最佳实践:gh-ost 工具使用详解
gh-ost 在线ddl变更工具​
作为MySQL DBA,相信我们大家都会对大表变更(大于10G 以上的)比较头疼,尤其是某些DDL会锁表,影响业务可持续性。目前通用的方案使用Percona 公司开源的pt-osc 工具解决导致锁表的操作,还有一款github基于go语言开发的gh-ost。本文主要介绍gh-ost使用方法,其工作原理放到下一篇文章介绍。
用户1278550
2019/09/03
1.2K0
gh-ost 在线ddl变更工具​
Online DDL 工具 gh-ost原理(二)
接上一篇文章Online DDL 工具 gh-ost实战(一),介绍了gh-ost的实际使用案例,本文介绍一下gh-osh的相关原理;
SEian.G
2021/03/03
8680
MySQL DDL Online Schema Change—gh-ost介绍
gh-ost是针对MySQL对主库影响很小,无trigger的online schema change解决方案。采用消费binlog的方式来代替trigger方式,并将同步信息存储到临时表中。
MySQL轻松学
2019/12/05
1.5K0
gh-ost:在线DDL修改MySQL表结构工具
在之前,我分享过一次 pt-online-schema-change 在线 DDL 的工具实践记录,在实际使用过程中,发现部门的很多老系统大量使用了触发器,从而无法使用这个工具,非常遗憾!导致很多 DDL 变更都必须压到空闲时候做,比如凌晨,非常苦逼。 咨询了做 DBA 的老同事,他将 gh-ost 推荐给我,基于 golang 语言,是 github 开源的一个 DDL 工具,gh-ost 是 gitHub,s Online Schema Transmogrifier/Transfigurator/Tra
张戈
2018/03/26
6.7K2
gh-ost:在线DDL修改MySQL表结构工具
gh-ost工具Online-ddl简单操作记录
主从架构 192.168.175.206 主 192.168.175.207 从 192.168.175.208 从 ghost配置文件(可以不加) 在207上添加 [root@localhost ~]# vi ghost.conf [client] user=mha password=123 命令如下 [root@test-206 ~]# gh-ost --assume-master-host='192.168.175.206:3306' --master-user='mha' --master-p
shynodes
2021/07/28
7080
gh-ost工具Online-ddl简单操作记录
gh-ost 原理剖析
上一篇文章 介绍 gh-ost 参数和具体的使用方法,以及核心特性-可动态调整 暂停,动态修改参数等等。本文分几部分从源码方面解释gh-ost的执行过程,数据迁移,切换细节设计。
用户1278550
2019/09/24
2.4K0
gh-ost 原理剖析
Mysql onlineddl vs gh-ost
Innodb早期支持通过copy table跟inplace的方式来执行DDL语句,其原理如下:
mingjie
2022/05/12
9190
Mysql onlineddl vs gh-ost
MySQL Online DDL经典工具-gh-ost
Online DDL一直是MySQL数据库的一个痛点,好在官方和社区都有不错的解决方案。这些方案大致有以下几个:
DBA札记
2023/11/16
6170
MySQL Online DDL经典工具-gh-ost
MySQL 8.0.19亿级数据如何秒速增加字段?
今天主要介绍一下MySQL 8.0.19 instant add column的新特性,基于亿级数据秒速增加字段,下面一起来看看吧~
IT大咖说
2021/03/14
8.6K0
GitHub开源的MySQL在线更改Schema工具
好雨社区原创翻译 MySQL在线更改schema的工具很多,如Percona的pt-online-schema-change、 Facebook的 OSC和 LHM等,但这些都是基于触发器(Trigg
Rainbond开源
2018/05/31
2.3K0
MySQL Online DDL
serena
2017/06/01
8.1K0
MySQL Online DDL
gh-ost 学习笔记
https://m.aliyun.com/yunqi/articles/62928
保持热爱奔赴山海
2019/09/17
1.3K0
gh-ost 学习笔记
Online DDL 工具 gh-ost实战(一)
2020年了,开始正文前,先说几句废话,2019年公众号开始正式更文,后期由于个人问题停更了,2020年开始重新开始更文,更文目的很简单,记录自己的学习,分享给大家,就这么简单;好啦,言归正传,下面开始今天的正文了;
SEian.G
2021/03/03
2.4K0
Gh-ost改表P0级BUG:可能导致数据丢失
| 导语Gh-ost改表工具是MySQL主流的2种开源改表工具之一,因为可限速,入侵小而在业界广泛使用,然而Gh-ost存在1个P0级的未修复BUG,可能导致数据丢失,本文对这个问题进行了分析,并给出了解决方案。
DBA成江东
2023/07/20
1.3K0
Gh-ost改表P0级BUG:可能导致数据丢失
MySQL DDL发展史
- 注意: 在online ddl前,inplace的方法主要在第三步大大缩短了时间,只重构了索引,没有重新copy所有数据
划水教练
2022/05/17
1.2K0
MySQL DDL发展史
MySQL 8.0新特性 — 备份锁
在MySQL 8.0中,引入了一个轻量级的备份锁,这个锁可以保证备份一致性,而且阻塞的操作相对比较少,是一个非常重要的新特性,接下来我们就来了解一下。
brightdeng@DBA
2020/11/13
3.3K0
MySQL 8.0新特性 — 备份锁
相关推荐
技术分享 | Online DDL 工具 gh-ost
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档