加载中...
gh-ost是GitHub开源的MySQL无锁在线表结构变更工具,采用读取binlog的方式追踪数据变化,以低负载、可暂停、可控的方式完成大表的DDL修改,避免了触发器方案对生产库的冲击。

| 中文名 | gh-ost |
| 类型 | 在线表结构变更工具 |
| 开发者 | GitHub |
| 同步方式 | 解析binlog |
| 适用数据库 | MySQL |
gh-ost是GitHub开发并开源的MySQL在线表结构变更(Online Schema Change)工具,其名称意为GitHub Online Schema Transmogrifier。它能在不长时间锁表、不阻塞业务的前提下,对大型表执行加列、改类型、加索引等结构变更。
MySQL对大表直接执行ALTER往往会造成长时间锁定或高负载,严重影响线上服务。业界早有pt-online-schema-change等基于触发器的方案,但触发器会给源表的每次写入带来同步开销且难以暂停。gh-ost另辟蹊径,不使用触发器,而是通过订阅binlog来同步数据变化,提供了更可控、更轻量的变更体验。
gh-ost适用于承载大量数据、又要求高可用、不能容忍长时间锁表的MySQL生产环境。GitHub自身用它在核心数据库上安全地做结构演进,许多互联网公司在需要给巨型表加字段或改索引时也会选用它。相比触发器方案,它对写入负载敏感的高并发系统尤为友好。
问:gh-ost和pt-online-schema-change主要区别是什么?答:后者用触发器把变更同步到影子表,gh-ost则读取binlog实现同步。无触发器让gh-ost对源表写入影响更小、更易暂停和限流,但要求开启行级binlog。
问:使用gh-ost有什么前提条件?答:通常要求binlog格式为ROW、表有合适的主键或唯一键,并且需要足够的磁盘空间容纳幽灵表的数据副本。

| 中文名 | gh-ost |
| 类型 | 在线表结构变更工具 |
| 开发者 | GitHub |
| 同步方式 | 解析binlog |
| 适用数据库 | MySQL |
登录 后参与讨论
暂无讨论,来发表第一条评论吧