当前位置: 首页 > backend >正文

MySQL安全修改表结构、加索引:ON-Line-DDL工具有哪些

文章目录

  • 一、MySQL原生Online DDL
  • 二、pt-online-schema-change(pt-osc)
    • 1、简介
    • 2、基本原理
  • 三、gh-ost
    • 1、简介
    • 2、使用

一、MySQL原生Online DDL

从MySQL 5.6开始,官方引入了在线DDL机制,支持部分ALTER TABLE操作在不锁表或仅短暂锁表的情况下完成,如添加/删除列(某些情况下)、修改列属性、添加/删除索引、更改存储引擎等。其优点是无需额外部署工具,可控性强,兼容性好,对应用无侵入。缺点是并非所有DDL操作都支持完全不锁表,适用于中小表、对锁敏感度低的场景。

二、pt-online-schema-change(pt-osc)

1、简介

由Percona公司开发的开源工具,用于在不影响线上服务的前提下完成表结构变更。它通过创建临时表,利用触发器复制数据等方式,将原表数据复制到新表,最后替换原表,从而实现在线修改表结构。该工具完全避免锁表,适用于大表操作,还支持回滚机制,保障数据安全,但在高并发写入场景下可能存在性能问题。

官网:https://docs.percona.com/percona-toolkit/pt-online-schema-change.html

2、基本原理

1、创建新表:首先创建一个与原表结构相同的新表,表名一般以 _new 作为后缀。
2、修改新表:在新表上执行表结构变更操作。
3、创建触发器:在原表上创建三个触发器(DELETE、UPDATE、INSERT),以确保对原表的操作同步到新表。
4、复制数据:将原表的数据复制到新表。
5、替换表:将新表替换为原表。
6、更新外键:如果有外键约束,需要更新外键指向新表。
7、删除旧表:删除旧表和触发器

三、gh-ost

1、简介

由Github维护的MySQL online DDL工具。它同样使用了镜像表的形式,但放弃了使用低效的trigger,而是从binlog中提取需要的增量数据来保持镜像表与源表的数据一致性。整个Online DDL操作仅在最终rename源表与镜像表时会阻塞几秒钟的读写。gh-ost输出的信息、迁移数据的效率,以及支持的功能都比较优秀,且进程意外中断以后,可以新启动一个进程继续进行Online DDL,适用于对主库影响要求低、希望减少同步延迟的场景。

开源地址:https://github.com/github/gh-ost

2、使用

暂无

http://www.xdnf.cn/news/15616.html

相关文章:

  • 安装wsl-Ubuntu到D盘
  • 模型材质一键替换~轻松还原多种三维场景
  • Qt软键盘
  • 河南萌新联赛2025第(一)场:河南工业大学(补题)
  • python脚本调用 ffmpeg 针对MP3转通道
  • 数分思维:02——京东app产品分析
  • mysql学习笔记
  • 力扣119:杨辉三角Ⅱ
  • Kotlin密封类
  • 独家|理想汽车放弃华为PBC模式,回归OKR理想汽车
  • 常用API
  • 输尿管下段积水预测与手术决策支持技术方案
  • 现在遇到一个问题 要使用jmeter进行压测 jmeter中存在jar包 我们还要使用linux进行发压,这个jar包怎么设计使用
  • iOS App 电池消耗管理与优化 提升用户体验的完整指南
  • Unity VR多人手术模拟恢复2:客户端移动同步问题分析与解决方案
  • 华为P30/pro (ELE-AL00) 鸿蒙4.2降级 EMUI 9
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1
  • C++性能优化与现代工程实践:打造高效可靠的软件系统
  • 部署-k8s和docker、jenkins的区别和联系
  • 深入理解 SemaphoreSlim 在.NET Core API 开发中的应用
  • Spring Boot整合阿里云OSS:企业级文件存储最佳实践
  • 贪心算法思想草稿
  • Spring AI之Prompt开发
  • Perspective:一款开源的交互式分析和数据可视化组件
  • 找不到或无法加载主类 org.gradle.wrapper.GradleWrapperMain
  • Maven详细解
  • 网络基础11 上公网--Internet接入技术
  • Python eval函数详解 - 用法、风险与安全替代方案
  • NLP——迁移学习
  • SQLite的可视化界面软件的安装