千家信息网

MySQL修改大表工具pt-online-schema-change的原理

发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,这篇文章主要讲解了"MySQL修改大表工具pt-online-schema-change的原理",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MySQL
千家信息网最后更新 2024年11月16日MySQL修改大表工具pt-online-schema-change的原理

这篇文章主要讲解了"MySQL修改大表工具pt-online-schema-change的原理",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MySQL修改大表工具pt-online-schema-change的原理"吧!

MySQL修改大表工具pt-online-schema-change的使用限制:

1)、如果修改表有外键,除非使用 --alter-foreign-keys-method 指定特定的值,否则工具不予执行

2)、被修改表必须要有主键,否则报错:Cannot chunk the original table `houyi`.`ga`: There is no good index and the table is oversized. at ./pt-online-schema-change line 5353.

3)、被修改表上不能有针对after delete|insert|update三个触发器,否则修改表结构操作失败

MySQL修改大表工具pt-online-schema-change原理:

1)、首先使用帐号密码连接到mysql后,获取指定表的状态信息,检查是否有触发器,检查表是否有主键。

2)、接着按照修改表的表定义,新建一个名为'_tb_new'不可见的临时表,对这个表执行alter添加字段,并校验是否执行成功。

3)、然后针对源表创建三个触发器,分别如下:

create trigger db_tb_del after delete on db.tb for each row delete ignore from db._tb_new where db._tb_new.id <=> OLD.id #删掉新表中db._tb_new.id <=> OLD.id的数据,否则忽略操作

create trigger db_tb_del after update on db.tb for each row replace into db._tb_new(id,...) values(new.id,...) #源表执行update的时候,把对应的数据replace into的方式写入新表

create trigger db_tb_del after insert on db.tb for each row replace into db._tb_new(id,...) values(new.id,...) #源表执行insert操作的时候,把对应的数据replace into的方式写入新表

4)、触发器创建好之后会执行insert low_priority ignore into db._tb_new(id,..) select id,... from tb lock in share mode语句复制源表数据到新表。

5)、复制完成之后执行语句:rename table db.tb to db._tb_old,db._tb_new to db.tb同时把源表修改为_tb_old格式,把新表_tb_new修改为源表名字的原子修改。

6)、接着,如果没有加不删除old表的选项,那么就会删除Old表,然后删除三个触发器。到这里就完成了在线表结构的修改 。整个过程只在rename表的时间会锁一下表,其他时候不锁表。

感谢各位的阅读,以上就是"MySQL修改大表工具pt-online-schema-change的原理"的内容了,经过本文的学习后,相信大家对MySQL修改大表工具pt-online-schema-change的原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

工具 原理 触发器 数据 三个 时候 学习 内容 方式 结构 语句 检查 成功 信息 原子 同时 名字 字段 密码 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京众星捧月网络技术有限公司 湖北网络软件开发定制报价表 惠普存储服务器管理口在哪里 任子行参加网络安全大会 300多台服务器IDC机房投入 域浪网络技术有限公司 阿里云服务器注册地在哪 帕拉迪数据库审计 查询数据库原理的选课人数 吉林数控套料软件开发商 中国网络技术应用大学 远程管理服务器配置 金山云高端服务器 数据库如何用excel做数据源 node静态资源服务器有什么用 企业软件开发诚信企业 杭州银匠网络技术有限公司 网络安全的目标是 深圳市浪潮网络技术有限公司 网络安全规划任务清单 服务器负载高但cpu低 wps新建数据库查询 dns 服务器 劫持 微信支付喇叭说服务器连接失败 it软件开发薪资 鹰潭市麻溜儿网络技术有限公司 电脑桌面上有数据库系统吗 什么适用于网络安全法 公司服务器都是员工管理吗 马鞍山专业软件开发团队
0