当前位置:首页>滚动 > >正文

Mysql DDL执行方式-pt-osc介绍 | 京东云技术团队

  • 2023-05-30 18:47:39来源:博客园
1 引言

大家好,接着上次和大家一起学习了《MySQL DDL执行方式-Online DDL介绍》,那么今天接着和大家一起学习另一种MySQL DDL执行方式之pt-soc


【资料图】

在MySQL使用过程中,根据业务的需求对表结构进行变更是个普遍的运维操作,这些称为DDL操作。常见的DDL操作有在表上增加新列或给某个列添加索引。

DDL定义:

Data Definition Language,即数据定义语言,那相关的定义操作就是DDL,包括:新建、修改、删除等;相关的命令有:CREATE,ALTER,DROP,TRUNCATE截断表内容(开发期,还是挺常用的),COMMENT 为数据字典添加备注。

注意:DDL操作是隐性提交的,不能rollback,一定要谨慎哦!

下图是执行方式的性能对比及说明:

图1 易维平台说明图

下面本文将对DDL的执行工具之pt-osc进行简要介绍及分析。如有错误,还请各位大佬们批评指正。

2 介绍

pt-online-schema-change- ALTER tables without locking them.

pt-online-schema-changealters a table’s structure without blocking reads or writes. Specify the database and table in the DSN. Do not use this tool before reading its documentation and checking your backups carefully.

pt-online-schema-change是Percona公司开发的一个非常好用的DDL工具,称为 pt-online-schema-change,是Percona-Toolkit工具集中的一个组件,很多DBA在使用Percona-Toolkit时第一个使用的工具就是它,同时也是使用最频繁的一个工具。它可以做到在修改表结构的同时(即进行DDL操作)不阻塞数据库表DML的进行,这样降低了对生产环境数据库的影响。在MySQL5.6之前是不支持Online DDL特性的,即使在添加二级索引的时候有FIC特性,但是在修改表字段的时候还是会有锁表并阻止表的DML操作,这样对于DBA来说是非常痛苦的,好在有pt-online-schema-change工具在没有Online DDL时解决了这一问题。

Percona 公司是成立于2006年,总部在美国北卡罗来纳的Raleigh。由 Peter Zaitsev 和 Vadim Tkachenko创立,这家公司声称他们提供的软件都是免费的,他们的收入主要来与开源社区,企业的支持,以及使用他们软件的公司的支付他们提供support的费用。而实际上这家公司"垄断"了业内最流行数据库支持类的软件,并且还开发了一些其他的与数据库相关的东西。

Percona-Toolkit工具集是Percona支持数据库人员用来执行各种MySQL、MongoDB和系统任务的高级命令行工具的集合,这些任务太难或太复杂而无法手动执行。这些工具是私有或“一次性”脚本的理想替代品,因为它们是经过专业开发、正式测试和完整记录的。它们也是完全独立的,因此安装快速简便,无需安装任何库。

Percona Toolkit 源自 Maatkit 和 Aspersa,这两个最著名的 MySQL 服务器管理工​具包。它由 Percona 开发和支持。

3 工作流程

pt-osc 用于修改表时不锁表,简单地说,这个工具创建一个与原始表一样的新的空表,并根据需要更改表结构,然后将原始表中的数据以小块形式复制到新表中,然后删除原始表,然后将新表重命名为原始名称。在复制过程中,对原始表的所有新的更改(insert,delete,update)都将应用于新表,因为在原始表上创建了一个触发器,以确保所有新的更改都将应用于新表。有关 pt-online-schema-change 工具的更多信息,请查阅手册文档 。

pt-osc大致的工作过程如下:

1.创建一个和要执行 alter 操作的表一样的新的空表结构(是alter之前的结构);

2.在新表执行alter table 语句(速度应该很快);

3.在原表中创建触发器3个触发器分别对应insert,update,delete操作,如果表中已经定义了触发器这个工具就不能工作了;

4.以一定块大小从原表拷贝数据到临时表,拷贝过程中通过原表上的触发器在原表进行的写操作都会更新到新建的临时表,保证数据不会丢失(会限制每次拷贝数据的行数以保证拷贝不会过多消耗服务器资源,采用 LOCK IN SHARE MODE 来获取要拷贝数据段的最新数据并对数据加共享锁阻止其他会话修改数据,不过每次加S锁的行数不多,很快就会被释放);

5.将原表Rename为old表,再把新表Rename为原表(整个过程只在rename表的时间会锁一下表,其他时候不锁表);

6.如果有参考该表的外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理(根据修改后的数据,修改外键关联的子表),如果被修改表存在外键定义但没有使用--alter-foreign-keys-method 指定特定的值,该工具不予执行;

7.默认最后将旧原表删除、触发器删除。

图2 pt-osc工作过程示意图

4 用法

Percona Toolkit 是成熟的,但是官方还是建议在使用前做到以下几点:

•阅读该工具的详细文档

•查看该工具的已知“错误”

•在非生产服务器上测试该工具

•备份您的生产数据并验证备份

下载安装:

从官方网站下载percona-toolkit,然后执行下面的命令进行安装(示例):

# 安装依赖包yum install perl-TermReadKey.x86_64 yum install perl-DBIyum install perl-DBD-MySQLyum install perl-Time-HiResyum install perl-IO-Socket-SSL# 安装percona-toolkitrpm -ivh percona-toolkit-3.1.0-2.el7.x86_64.rpm

执行类似下面的命令修改表结构:

pt-online-schema-change --alter="add column c1 int;" --execute D=test,t=table,u=user,p=password

alter参数指定修改表结构的语句,execute表示立即执行,D、t、u、p分别指定库名、表名、用户名和密码,执行期间不阻塞其它并行的DML语句。pt-online-schema-change还有许多选项,具体用法可以使用pt-online-schema-change --help查看联机帮助。

5 限制

pt-online-schema-change也存在一些局限性:

1.在使用此工具之前,应为表定义PRIMARY KEY或唯一索引,因为它是DELETE触发器所必需的;

2.如果表已经定义了触发器,则不支持 pt-osc ;(注:不是不能有任何触发器,只是不能有针对insert、update、delete的触发器存在,因为一个表上不能有两个相同类型的触发器);

3.如果表具有外键约束,需要使用选项--alter-foreign-keys-method,如果被修改表存在外键定义但没有使用--alter-foreign-keys-method 指定特定的值,该工具不予执行;

4.还是因为外键,对象名称可能会改变(indexes names 等);

5.在Galera集群环境中,不支持更改MyISAM表,系统变量 wsrep_OSU_method 必须设置为总序隔离(Total Order Isolation,TOI);

6.此工具仅适用于 MySQL 5.0.2 及更新版本(因为早期版本不支持触发器);

7.需要给执行的账户在 MySQL上授权,才能正确运行。(应在服务器上授予PROCESS、SUPER、REPLICATION SLAVE全局权限以及 SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER 和 TRIGGER 表权限。Slave 只需要 REPLICATION SLAVE 和 REPLICATION CLIENT 权限。)

6 对比OnLine DDL

下面的表格是国外技术牛人进行的测试数据,是Online DDL和pt-osc对一个包含1,078,880行的表应用一些alter操作的对比结果,仅供参考:

online ddlpt-osc
更改操作受影响的行是否锁表时间(秒)受影响的行是否锁表时间(秒)
添加索引03.76所有行38.12
下降指数00.34所有行36.04
添加列027.61所有行37.21
重命名列00.06所有行34.16
重命名列更改其数据类型所有行30.21所有行34.23
删除列022.41所有行31.57
更改表引擎所有行25.3所有行35.54

那么现在的问题是,我们应该使用哪种方法来执行alter语句呢?

虽然pt-osc允许对正在更改的表进行读写操作,但它仍然会在后台将表数据复制到临时表,这会增加MySQL服务器的开销。所以基本上,如果Online DDL不能有效工作,我们应该使用 pt-sc。换句话说,如果Online DDL需要将数据复制到临时表(algorithm=copy)并且该表将被长时间阻塞(lock=exclusive)或者在复制环境中更改大表时,我们应该使用 pt-osc工具。

pt-osc官方文档:https://docs.percona.com/percona-toolkit/pt-online-schema-change.html

7 总结

本次和大家一起学习了解pt-online-schema-change工具,介绍了其产生的背景、基本工作流程、用法及相应的一些限制。还介绍了其与Online DDL执行方式的一些对比,如果错误还请指正。

目前可用的DDL操作工具包括pt-osc,github的gh-ost,以及MySQL提供的在线修改表结构命令Online DDL。pt-osc和gh-ost均采用拷表方式实现,即创建个空的新表,通过select+insert将旧表中的记录逐次读取并插入到新表中,不同之处在于处理DDL期间业务对表的DML操作。

到了MySQL 8.0 官方也对 DDL 的实现重新进行了设计,其中一个最大的改进是 DDL 操作支持了原子特性。另外,Online DDL 的 ALGORITHM 参数增加了一个新的选项:INSTANT,只需修改数据字典中的元数据,无需拷贝数据也无需重建表,同样也无需加排他 MDL 锁,原表数据也不受影响。整个 DDL 过程几乎是瞬间完成的,也不会阻塞 DML,不过目前8.0的INSTANT使用范围较小,后续再对8.0的INSTANT做详细介绍吧。

下一期文章将和大家一起学习、了解github的gh-ost,敬请期待哦!

作者:京东物流 刘邓忠

来源:京东云开发者社区

标签:

延伸阅读

推荐阅读

Mysql DDL执行方式-pt-osc介绍 | 京东云技术团队

大家好,接着上次和大家一起学习了《MySQLDDL执行方式-OnlineDDL介绍》,那么今天接着和大家一起学习另一种

远洋集团股价涨幅近14% “15远洋03”涨9% 环球微头条

5月30日,远洋集团股债价格齐涨。截至16时25分,远洋集团股价上涨13 98%,涨幅位列港股地产类企业第一。同

涉嫌职务侵占、挪用资金,未名医药前实控人潘爱华被审查起诉

潘爱华等人涉嫌犯罪,与杭州强新入股厦门未名有关。

从财报拆解网易游戏:爆款不再、海外遇阻、技术难落地

文 路世明5月25日,网易发布2023年第一季度财报。财报显示,其一季度营收250亿元,同比增加6 3%。同时,非公认会

当前头条:英超官媒发问谁是本赛季最佳引援 10场比赛造就冠军曼城回顾英超卫冕双杀枪手两度让二追四

我是小房,英超官媒发问谁是本赛季最佳引援10场比赛造就冠军曼城回顾英超卫冕双杀枪手两度让二追四很多人还

何小鹏财富缩水75%至14亿美元

财经网汽车5月30日讯,据《福布斯》报道,45岁的小鹏汽车创始人、董事长兼首席执行官何小鹏身价大缩水,其

全球观速讯丨天津佳沃世界六一儿童节期间有什么活动?

➤➤天津佳沃世界六一儿童节期间有什么活动?六一畅吃喜“番”就带走6 1亲子游超值活动。六月新鲜成熟,亲

亿万富翁烈日下老实排队 摇中就赚2000万!“上海网红盘”后续:暂停销售摇号 可以退钱……

“亿万富翁烈日下老实排队”,“总价倒挂2000万元,摇中就赚到!”,“现场配婚黄牛”……一场场闹剧上演,

天天热头条丨绿色高效轻简技术打通西南山区马铃薯产业链

机械化精量播种、智能远程虫情测报、“马铃薯+”套作……5月27日,2023年马铃薯绿色高效轻简化技术研讨会上

这句话让我们明白如果能使百姓获益_这句话让我

1、题目:这句话让我铭记在心世界上有多少的名言警句,有多少有着教育深刻的话语。2、可是使我铭记在心里的

【全球时快讯】撼讯重启经典品牌 Sparkle 加入英特尔显卡阵营,抢占 AI 商机

IT之家5月30日消息,虽然现有IntelArc独显不够给力,但其合作伙伴还是很努力。在淡出消费市场十多年后,Spa

尖椒鸡的做法重庆(尖椒鸡的做法)_世界微头条

你们好,最近小活发现有诸多的对于尖椒鸡的做法重庆,尖椒鸡的做法这个问题都颇为感兴趣的,为大家梳理了下

昆卡一飞冲天收听46.7W再连日冠,敏宝再下一城升榜12

今天周二假期结束阴霾退去,大盘全面回血,娃军主力昆卡一如预测锁定,回血后果然一飞冲天,收听飙涨至46 7

《星际战士2》编剧加入EA 开发钢铁侠游戏

今日(5月30日),曾参与《哥谭骑士》、《战锤40K星际战士2》、《僵尸世界大战》等游戏剧本编写的编剧AshleyC

苏州二批供地9宗地收金97.73亿元 其中3宗地触顶摇号

从出让位置看,其中姑苏区3宗、工业园区3宗、相城区1宗、吴江区2宗。从成交结果看,3宗地触顶摇号,4宗地溢

男孩故意“侧踢”11月大婴儿!视频曝光! 全球新要闻

男孩进店买水却故意“侧踢”11月大的婴儿更可气的是男孩家长不仅不愿带婴儿去医院检查甚至连句道歉都没有…

沪硅产业(688126):5月30日技术指标出现看涨信号-“红三兵”

截至发稿,沪硅产业(688126)报21 4元 股,成交量1 833万手,换手率0 07%,振幅1 26%,量比1 65。该公司股

地产股退市潮来袭!世界500强旗下ST阳光城锁定面值退市-焦点报道

一批地产股拉响面值退市警报。据不完全统计,近期世界五百强企业旗下ST阳光城(000671 SZ)、最高市值曾超5

世界要闻:中信建投:东航C919完成首航 关注国产替代投资机会

【中信建投:东航C919完成首航关注国产替代投资机会】中信建投最新研报表示,目前参与C919配套产品研发的企

暴雪收购案,微软和索尼都傻眼|天天热文

暴雪收购案,微软和索尼都傻眼,还不如用开水去浇发财树

环球热讯:十里八乡乡亲饱口福!首届安化县梅城擂茶文化节“有滋有味”

益阳日报全媒体讯(记者周云峰通讯员黄军王璐婷)5月28日,安化县一中文武庙古建筑群前坪热闹非凡,“走游

角膜地形图cyl是什么意思_角膜地形图|焦点关注

1、sph是你的球镜度数,cyl是柱镜度数(代表散光),AXI是你的散光的轴向,simk1 simk2是指你角膜两个垂直

因受限制股份单位获归属 百济神州(06160)发行10.7万股

百济神州(06160)发布公告,于2023年5月29日,因根据股权计划授出的受限制股份单位获归属(公司董事除外)而发

售价19.98万元,红旗E-QM5新车型上市,竞争比亚迪海豹_全球热文

日前,Auto情报处从相关渠道获悉,红旗E-QM5(图片|配置|询价)新车型正式上市,新车共推出一款配置,560KMPL

世界时讯:保险公司代收的车船税是进项还是销项_保险公司代收的车船税怎么做账

1、现在的保险公司代收的车船税允许在备注中体现,也即是说车船税有发票了入账借:管理费用-车船税贷:应交

break a leg是什么意思_break a leg_当前滚动

1、breakaleg[词典]祝好运;大获成功;(用于祝愿演员演出成功)[网络]断腿;一路走好;祝人断

安乡县黄山头中学:提质增效,信息2.0一直在行动-新消息

培训会现场。红网时刻新闻5月29日讯(通讯员 龚怡)“学习如才识,不日进,则日退”,在今天这个信息化

全球连线丨来云南 看近亿只蝴蝶大爆发有多壮观 焦点

02:04近日,位于云南省金平县的中国·红河蝴蝶谷内再现蝴蝶大爆发的奇观,成亿只蝴蝶翩跹飞舞,尤为壮观。

5月29日云南白药发生2笔大宗交易 成交金额2135.94万元

5月29日云南白药(000538)发生大宗交易,交易数据如下:近三个月该股共发生19笔大宗交易,合计成交3 09万手

全球最新销量排行,竟然要对丰田说:你要加油了?

犹记得2022年12月,特斯拉ModelY(参数|询价)以将近3,600辆领牌数,力压丰田卡罗拉(参数|询价)Cross的3,039

猜您喜欢

Copyright ©  2015-2022 青年服装网版权所有  备案号:皖ICP备2022009963号-20   联系邮箱:39 60 291 42@qq.com