广告
返回顶部
首页 > 资讯 > 数据库 >pt-online
  • 903
分享到

pt-online

pt-online 2015-07-31 01:07:06 903人浏览 无得
摘要

  percona-toolkit中pt-online-schema-change工具安装和使用   pt-online-schema-change介绍 使用场景:在线修改大表结构 在数据库的维护中,总会涉及到生产环境上修改表结构的情况,修

 

percona-toolkit中pt-online-schema-change工具安装和使用

 

pt-online-schema-change介绍

使用场景:在线修改大表结构


数据库的维护中,总会涉及到生产环境上修改表结构的情况,修改一些小表影响很小,而修改大表时,往往影响业务的正常运转,如表数据量超过500W,1000W,甚至过亿时


在线修改大表的可能影响
(1)在线修改大表的表结构执行时间往往不可预估,一般时间较长
(2)由于修改表结构是表级,因此在修改表结构时,影响表写入操作
(3)如果长时间的修改表结构,中途修改失败,由于修改表结构是一个事务,因此失败后会还原表结构,在这个过程中表都是锁着不可写入
(4)修改大表结构容易导致数据库CPU、io等性能消耗,使Mysql服务器性能降低
(5)在线修改大表结构容易导致主从延时,从而影响业务读取

工具介绍
pt-online-schema-change是percona公司开发的一个工具,在percona-toolkit包里面可以找到这个功能,它可以在线修改表结构

原理:
(1)首先它会新建一张一模一样的表,表名一般是_new后缀
(2)然后在这个新表执行更改字段操作
(3)然后在原表上加三个触发器,DELETE/UPDATE/INSERT,将原表中要执行的语句也在新表中执行
(4)最后将原表的数据拷贝到新表中,然后替换掉原表


这个过程中有两个问题需要注意:
1. 触发器
因为整个过程是在线的,为了将改表过程中对原始表的更新同时更新到新表上,会创建相应的触发器,每当发生针对原始表的增删改操作,就会触发对新表的相应的操作。所以原始表上不能有其他触发器,即如果原始表上存有触发器,OSC会罢工的。

外键
外键使改表操作变得更加复杂,如果原始表上有外键的话,自动rename原始表和新表的操作就不能顺利进行,必须要在数据拷贝完成后将外键更新到新表上,该工具有两种方法来支持这个操作,具体使用参数(--alter-foreign-keys-method)实现。

--alter-foreign-keys-method
外键改表前后必须持续的链接正确的表,当该工具rename原始表并用新表来取代原始表时,外键必须正确更新到新表上,并且原始表中的外键不再生效

外键会使该工具的操作变得复杂并引入额外风险。当有外键引用该表时,重命名原表和新表的原子操作将无法正常运行。在表结构修改完成后,该工具必须修改外键以指向新表。该工具支持两种方式实现该操作,具体可参考--alter-foreign-keys-method文档。外键也会造成一些副作用。最终的表将会有与原表相同的外键和索引(除非你在ALTER语句进行分别指定),但对象的名称可能会被略微修改以避免mysql和InnoDB中的对象名称冲突。

出于安全考虑,该工具并不会真的修改表,除非你指定--execute选项,而该选项默认并未启用。该工具支持各种各样的其它措施以防止非预期的负载或其它问题,包括自动检测从节点,连接到它们,并使用如下安全检查:
(1)在大多情况下,除非表中有PRIMARY KEY或UNIQUE INDEX,该工具才会进行操作。详见--alter选项。
(2)如果检测到有replication filter,该工具会拒绝操作。详见--[no]check-replication-filters选项。
(3)该工具会停止数据拷贝操作,如果它观察到主从延迟大于--max-lag选项的值,默认为1s。
(4)该工具会停止或放弃操作,如果它检测到对服务器造成太多负载。见--max-load和--critical-load选项。
(5)该工具会设置innodb_lock_wait_timeout=1和(对于Mysql 5.5及更新的版本)lock_wait_timeout=60,因此它会更容易成为锁竞争的受害者,并更少破坏其它事务。这些值可以通过指定--set-vars来修改。
(6)该工具会拒绝修改表,如果外键约束有引用它,除非你指定了--alter-foreign-keys-method。


好处:

降低主从延时的风险

可以限速、限资源,避免操作时MySQL负载过高

建议:

在业务低峰期做,将影响降到最低

 

 

percona-toolkit安装

1.去官网下载对应的版本,官网下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/

wget Https://www.percona.com/downloads/percona-toolkit/3.1/binary/redhat/7/x86_64/percona-toolkit-3.1-1.el7.x86_64.rpm

安装依赖

yum -y install perl-DBI perl-DBD-MySQL perl-Digest-MD5 perl-IO-Socket-SSL perl-TermReadKey

安装

rpm -ivh percona-toolkit-3.1-1.el7.x86_64.rpm

或者直接使用yum安装
使用yum会自动安装依赖包,比较简单

yum install -y percona-toolkit-3.0.12-1.el6.x86_64.rpm

验证

pt-online-schema-change --help

 

 

pt-online-schema-change使用

修改表结构而不阻塞读写操作
./bin/pt-online-schema-change --help 可以查看参数的使用

DNS选项常用的有:
--user= 连接mysql的用户名 --passWord= 连接mysql的密码 --host= 连接mysql的地址 P=3306 连接mysql的端口号 D= 连接mysql的库名 t= 连接mysql的表名 --alter 修改表结构的语句 --execute 执行修改表结构 --charset=utf8 使用utf8编码,避免中文乱码 --no-version-check 不检查和更新percona toolkit版本,也不检查mysql版本等。

案例:

添加表字段SQL语句为:ALTER TABLE test.liu_test ADD COLUMN liu int(10) DEFAULT NULL;

pt-online-schema-change   --user=root --password=xxx  --host=172.16.xx.xx  P=3306,D=test,t=liu_test  --charset=utf8 --no-version-check --execute --alter "ADD COLUMN  liu int(10) DEFAULT NULL"

 

参考官网:https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html

您可能感兴趣的文档:

--结束END--

本文标题: pt-online

本文链接: https://www.lsjlt.com/news/3357.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pt-online
      percona-toolkit中pt-online-schema-change工具安装和使用   pt-online-schema-change介绍 使用场景:在线修改大表结构 在数据库的维护中,总会涉及到生产环境上修改表结构的情况,修...
    99+
    2015-07-31
    pt-online
  • pt-online-schema-change手记
    需求:    应大数据部门要求,需要在指定表增加create_time字段并给与当前时间做缺省值。 环境:    DB:阿里云RDS 的MySQL...
    99+
    2022-10-18
  • pt-online-schema-change的bug2
        pt-online-schema-change工具依赖于触发器的机制去实现表的无锁DDL。那我们试想在一主一从的情况下,有个大表需要执行DDL操作,为了验证该...
    99+
    2022-10-18
  • pt-online-schema-change的bug
        mysql5.6和mysql5.7对online DDL做了大幅度功能增强,但是仍然存在主库执行DDL,从库存在大幅延迟的情况,故目前生产环境还是通过pt-o...
    99+
    2022-10-18
  • pt-online-change-ddl(在线ddl)
    mysql> desc online_ddl;+---------+--------------+------+-----+-------------------+----------------+|...
    99+
    2022-10-18
  • 什么是pt-online-schema-change
    什么是pt-online-schema-change,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、pt-online-schema-c...
    99+
    2022-10-18
  • MySQL online ddl工具之pt-online-schema-change怎么用
    这篇文章主要介绍MySQL online ddl工具之pt-online-schema-change怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL ddl 的问题现状...
    99+
    2022-10-18
  • MySQL ONLINE DDL和PT-ONLINE-SCHEMA-CHANGE有哪些区别
    这篇文章主要介绍“MySQL ONLINE DDL和PT-ONLINE-SCHEMA-CHANGE有哪些区别”,在日常操作中,相信很多人在MySQL ONLINE DDL和PT-ONLINE-SCHEMA-...
    99+
    2022-10-19
  • mysql中pt-online-schema-change怎么用
    这篇文章主要介绍了mysql中pt-online-schema-change怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。pt-onl...
    99+
    2022-10-18
  • pt-online-schema-change 在线修改表结构
    1. 参数 参数 默认值 说明 --host=xxx --user=xxx --password=xxx 连接实例信息,缩写-h xxx -u xxx -p xxx,密码可以使用参数--as...
    99+
    2022-10-18
  • pt-online-schema-change 在线更改MySQL表结构
    总所周知,数据库最昂贵的操作莫过于DDL操作,因为MySQL在修改表期间会阻塞任何读写操作的,基本上你的业务出于瘫痪状态了。对于庞大的可能历时好几个小时才完成,简直就是个恶梦,没法容忍的操作。 Percon...
    99+
    2022-10-18
  • pt-online-schema-chang工作过程是怎样的
    本篇内容主要讲解“pt-online-schema-chang工作过程是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pt-online-schema-c...
    99+
    2022-10-19
  • pt-online-schema-change的操作原理是什么
    本篇内容主要讲解“pt-online-schema-change的操作原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pt-online-schema-...
    99+
    2022-10-19
  • 使用mysql pt-online-schema-change方法有哪些
    本篇内容介绍了“使用mysql pt-online-schema-change方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望...
    99+
    2022-10-19
  • mysql中oak-online-alter-table和pt-online-schema-change的使用限制有哪些
    小编给大家分享一下mysql中oak-online-alter-table和pt-online-schema-change的使用限制有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大...
    99+
    2022-10-18
  • pt-online-schema-change使用参数是怎样的呢
    这期内容当中小编将会给大家带来有关pt-online-schema-change使用参数是怎样的呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。pt-online-sch...
    99+
    2022-10-18
  • 数据库中pt-online-schema-change的示例分析
    这篇文章主要介绍了数据库中pt-online-schema-change的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。#!/bin...
    99+
    2022-10-19
  • MySQL修改大表工具pt-online-schema-change的原理
    这篇文章主要讲解了“MySQL修改大表工具pt-online-schema-change的原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL修改大...
    99+
    2022-10-18
  • pt-online-schema-change 使用异常处理及注意事项
    pt-online-schema-change最近使用pt-online-schema-change 做线上大表的在线DDL,发现几个问题。 我使用的语句如下: pt-online-schema-cha...
    99+
    2022-11-30
    pt-online-schema-change 使用 处理
  • 如何用pt-online-schema-change在线修改表字段长度
    pt-online-schema-change依赖条件: 操作的表必须有主键,否则执行会报错 实验如下: MySQL [mysql]> create database chenfeng; Query...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作