简介

gh-ost 是一款由GitHub开发的在线DDLOnline Data Definition Language)变更工具,专门用于MySQL数据库。它允许在不锁定表的情况下执行数据库模式变更,从而避免了传统ALTER TABLE命令可能带来的长时间锁表问题,这对于高可用性要求严格的生产环境尤为重要。

它通过无触发器(trigger-less)的方式实现表结构变更,减少了对数据库性能的影响,同时支持暂停、限速、动态配置等功能。相较于传统的 pt-online-schema-changegh-ost 更安全、灵活,且对主库负载更低。

主要特点

  • 无锁表操作:与传统的ALTER TABLE不同,gh-ost不会长时间锁表,使得在生产环境中进行DDL变更更加安全。

  • 基于复制的迁移:gh-ost通过从库读取二进制日志来应用变更,这减少了对主库的压力。

  • 灵活的控制方式:支持动态调整速率限制、暂停/恢复操作等。

  • 模拟和预检查功能:提供dry-run选项用于测试变更效果,以及pre-flight checks确保操作的安全性。

  • 易于使用:虽然功能强大,但相对简单易用,适合DBA和技术人员快速上手。

  • 无触发器设计:不依赖数据库触发器,而是通过解析 MySQLbinlog 来同步数据变更,减少主库负载和潜在锁冲突。

  • 多种运行模式:可连接到主库(master)或副本库(replica),根据需求选择不同迁移策略。

安装方法

下载二进制文件

GitHub 仓库下载对应平台的二进制文件:

https://github.com/github/gh-ost/releases

赋予执行权限

chmod +x gh-ost

基本使用

命令格式

gh-ost \
--host=<主库地址> \
--port=<主库端口> \
--user=<用户名> \
--password=<密码> \
--database=<数据库名> \
--table=<表名> \
--alter="<DDL语句>" \
--execute

关键参数说明

参数 说明
--alter 需要执行的 DDL 语句(如 ADD COLUMNDROP INDEX 等)
--execute 实际执行迁移(默认是 dry-run 模式)
--allow-on-master 允许直接连接主库(默认连接到副本库)
--max-load=<metrics> 设置负载阈值(如 Threads_running=50
--chunk-size=<rows> 每次迁移的数据块大小(默认 1000)
--critical-load=<metrics> 负载超限时终止操作
--switch-to-rbr 自动将副本库的 binlog 格式改为 ROW
--postpone-cut-over-flag-file=<path> 通过文件控制是否延迟切换表
--throttle-control-replicas 指定需要监控的副本库列表
--tmpdir 指定临时文件目录

使用示例

  1. 添加新列
gh-ost \
--host=127.0.0.1 \
--port=3306 \
--user=admin \
--password=secret \
--database=mydb \
--table=orders \
--alter="ADD COLUMN comment VARCHAR(255)" \
--execute
  1. 修改字段类型
gh-ost \
--alter="MODIFY COLUMN amount DECIMAL(10,2)" \
--host=127.0.0.1 \
--execute
  1. 添加索引
gh-ost \
--alter="ADD INDEX idx_created_at (created_at)" \
--host=127.0.0.1 \
--execute
  1. 切换主库

    在主库故障转移时,支持动态切换:
gh-ost \
--assume-master-host=<new_master_host:port> \
--execute

注意事项

  • 权限要求

    • 需要 SUPER、REPLICATION SLAVE、REPLICATION CLIENT 权限。
    • 对原表和临时表有 CREATE、DELETE、ALTER 权限。
  • 主键必须存在

    目标表必须包含主键或唯一索引。

  • 外键和触发器

    gh-ost 不支持有外键约束或触发器的表。

  • 大表操作

    超大表迁移时需关注磁盘空间(临时表会占用额外空间)和网络负载。


结束

🎀gh-ost工具介绍及使用的更多相关文章

  1. 《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载

    注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架Server ...

  2. json、javaBean、xml互转的几种工具介绍

    json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...

  3. Linux性能工具介绍

    l  Linux性能工具介绍 p  CPU高 p  磁盘I/O p  网络 p  内存 p  应用程序跟踪 l  操作系统与应用程序的关系比喻为“唇亡齿寒”一点不为过 l  应用程序的性能问题/功能问 ...

  4. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

  5. Android系统性能调优工具介绍

    http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...

  6. 简要介绍Apache、php、mysql安装和工具介绍

    1 安装Apache 网站:www.Apache.org下载相应的Apache,目前下载了近期的:httpd-2.2.15-win32-x86-openssl-0.9.8msi 安装简要步骤如下图: ...

  7. [原创]Java静态代码检查工具介绍

    [原创]Java静态代码检查工具介绍 一  什么是静态代码检查? 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数 ...

  8. RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用

    RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用 功能介绍 这个项目经过了大半年的持续更新到目前的阶段基本稳定 所有源代码都是开源的,在gith ...

  9. 用户管理 之 Linux 用户管理工具介绍

    Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询.添加.修改,以及用户之间相互切换的工具等:通过这些工具,我们能安全.轻松的完成用户管理: 在这里我们要引入用户控制工具 ...

  10. 【转帖】四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho

    四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho 1 BI系统的简述 从技术角度来说 BI 包含了 ETL.DW.OLAP.DM等多环节.简单的说就是把交易系统 ...

随机推荐

  1. 一些devops、软件工程的个人感悟

    1.devops不是简单的工具,是思想. (1)devops核心在于快速编译构建.自动测试化.自动部署发布 (2)工具只是辅助手段,无论是Jenkins.腾讯蓝盾等等,甚至是手动bat+bash搭建, ...

  2. Django环境的Linux安装(使用put方法将本地安装包导入到Linux)

    1.建立Sftp链接 2.使用put命令将本地的安装包拉取到指定目录. 3.使用tar xzvf 命令将安装包解压到创建好的目录. 4.cd Django-* 5.执行安装命令:sudo python ...

  3. AI赋能软件测试:未来已来,你准备好了吗?

    ps:文末有福利领取哦 引言 在数字化转型的浪潮中,软件测试作为保障产品质量的关键环节,正面临着前所未有的挑战. 传统的测试方法已难以满足快速迭代和复杂场景的需求,而人工智能(AI)的引入,则为软件测 ...

  4. 考拉 T_Q_X 的博客搬运(搬运)

    博客搬迁现场直播 各位观众们大家好,欢迎来到新闻透视 今天为您直播某菜鸡oier tqx 的博客搬迁现场. Q:请问tqx,您为什么要将博客从CSDN搬迁到博客园呢? tqx:懂得都懂,不懂的我也不多 ...

  5. Luogu P4425 转盘 题解 [ 黑 ] [ 线段树 ] [ 贪心 ] [ 递归 ]

    转盘:蒟蒻的第一道黑,这题是贪心和线段树递归合并的综合题. 贪心 破环成链的 trick 自然不用多说. 首先观察题目,很容易发现一个性质:只走一圈的方案一定最优.这个很容易证,因为再绕一圈回来标记前 ...

  6. WPF的Dispatcher类里的BeginInvoke,Invoke,InvokeAsync

    原文地址:https://blog.csdn.net/niuge8905/article/details/81117989 深入了解 WPF Dispatcher 的工作原理(Invoke/Invok ...

  7. Ansible - [02] 基础配置以及常用操作场景

    Ansible 基础配置 主配置文件:/etc/ansible/ansible.cfg ansible配置文件查找顺序 首先检测ANSIBLE_CONFIG变量定义的配置 其次检查当前目录下的./an ...

  8. 探究高空视频全景AR技术的实现原理

    1. 引言 笔者认为现阶段AR技术的应用是还是比较坑爹的,大都是噱头多但是实用的成分少,拿出来做做DEMO是可以,但是难以在实际的项目中落地产生实际的经济价值.一方面是很难在业务上难以找到合适的应用场 ...

  9. (附体验地址)大模型知识引擎:AI 助手能否助力销售技能提升?

    体验地址:https://lke.cloud.tencent.com/webim_exp/#/chat/FAIMcM 腾讯云的大模型知识引擎本身定位于为企业客户及合作伙伴提供服务,因此我在探索如何最佳 ...

  10. RealityCapture重建试验

    一.使用已有数据集 (一)小型物件(官网) 输入:Camera_Lubitel2_studio "Lubitel Camera" consisting of 72 images 地 ...