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

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.dtcms.com/a/284025.html

相关文章:

  • mapbox V3 新特性,添加模型图层
  • 深入GPU硬件架构及运行机制
  • OpenCV学习笔记二(色彩空间:RGB、HSV、Lab、mask)
  • 多维动态规划题解——最长公共子序列【LeetCode】空间优化:两个数组(滚动数组)
  • Python eval函数详解 - 用法、风险与安全替代方案
  • Java使用FastExcel实现模板写入导出(多级表头)
  • 设计模式四:装饰模式(Decorator Pattern)
  • maven本地仓库清缓存py脚本
  • 设计模式笔记_结构型_装饰器模式
  • centos中新增硬盘挂载文件夹
  • Install Docker Engine on UbuntuMySQL
  • 【安卓按键精灵辅助工具】adb调试工具连接安卓模拟器异常处理
  • Vuex中store
  • 爬虫核心原理与入门技巧分析
  • JavaScript中的Window对象
  • Vue3入门-组件及组件化
  • Sentinel配置Nacos持久化
  • Python爬虫实战:研究cssutils库相关技术
  • AI问答-供应链管理:各种交通运输方式货运成本分析
  • 如何用文思助手改好一篇烂材料
  • maven(配置)
  • clonezilla 导出自动化恢复iso
  • 信息安全基础专业面试知识点(上:密码学与软件安全)
  • 解锁 iOS 按键精灵辅助工具自动化新可能:iOSElement.Click 让元素交互更简单
  • springmvc跨域解决方案
  • RAG实战指南 Day 18:Chroma、Milvus与Pinecone实战对比
  • 基于springboot+vue+mysql框架的工作流程管理系统的设计与实现(源码+论文+PPT答辩)
  • 23种设计模式--#2单例模式
  • 从AWS MySQL数据库下载备份到S3的完整解决方案
  • ros2 标定相机