pt-online-schema-change 在线修改表结构
1. 参数
参数 | 默认值 | 说明 |
---|---|---|
--host=xxx --user=xxx --password=xxx | 连接实例信息,缩写-h xxx -u xxx -p xxx,密码可以使用参数--ask-pass 手动输入。 | |
--alter | 结构变更语句,不需要 ALTER TABLE关键字。与原始ddl一样可以指定多个更改,用逗号分隔。 | |
D=db_name,t=table_name | 指定要ddl的数据库名和表名 | |
--max-load | 默认为Threads_running=25。每个chunk拷贝完后,会检查 SHOW GLOBAL STATUS 的内容,检查指标是否超过了指定的阈值。如果超过,则先暂停。这里可以用逗号分隔,指定多个条件,每个条件格式: status指标=MAX_VALUE或者status指标:MAX_VALUE。如果不指定MAX_VALUE,那么工具会这只其为当前值的120%。 | |
--max-lag | 默认1s。每个chunk拷贝完成后,会查看所有复制Slave的延迟情况(Seconds_Behind_Master)。要是延迟大于该值,则暂停复制数据,直到所有从的滞后小于这个值。--check-interval配合使用,指定出现从库滞后超过 max-lag,则该工具将睡眠多长时间,默认1s,再检查。如--max-lag=5 --check-interval=2。 | |
--chunk-time | 默认0.5s,即拷贝数据行的时候,为了尽量保证0.5s内拷完一个chunk,动态调整chunk-size的大小,以适应服务器性能的变化。 | |
--set-vars | 使用pt-osc进行ddl要开一个session去操作,set-vars可以在执行alter之前设定这些变量,比如默认会设置--set-vars "wait_timeout=10000,innodb_lock_wait_timeout=1,lock_wait_timeout=60"。 | |
--dry-run | 创建和修改新表,但不会创建触发器、复制数据、和替换原表。并不真正执行,可以看到生成的执行语句,了解其执行步骤与细节,和--print配合最佳。。 | |
--execute | 确定修改表,则指定该参数。真正执行alter。–dry-run与–execute必须指定一个,二者相互排斥 |
1. --alter说明
1.绝大部分情况下表上需要有主键或唯一索引,因为工具在运行当中为了保证新表也是最新的,需要旧表上创建 DELETE和UPDATE 触发器,同步到新表的时候有主键会更快。个别情况是,当alter操作就是在c1列上建立主键时,DELETE触发器将基于c1列。
- 子句不支持 rename 去给表重命名。
- alter命令原表就不支持给索引重命名,需要先drop再add,在pt-osc也一样。(mysql 5.7 支持 RENAME INDEX old_index_name TO new_index_name)。但给字段重命名,千万不要drop-add,整列数据会丢失,使用change col1 col1_new type constraint(保持类型和约束一致,否则相当于修改 column type,不能online)
- 子句如果是add column并且定义了not null,那么必须指定default值,否则会失败。
- 如果要删除外键(名 fk_foo),使用工具的时候外键名要加下划线,比如--alter "DROP FOREIGN KEY _fk_foo"
2. 使用限制
- 原表上不能有触发器存在
- 在使用之前需要对磁盘容量进行评估。因为数据量会多一倍
3. 使用示例
1. 添加字段
pt-online-schema-change --user=user --password=password --host=10.0.201.34 --alter "ADD COLUMN f_id int default 0" D=confluence,t=sbtest3 --print --execute
pt-online-schema-change 在线修改表结构相关推荐
- mysql在线修改表结构大数据表的风险与解决办法归纳
整理这篇文章的缘由: 互联网应用会频繁加功能,修改需求.那么表结构也会经常修改,加字段,加索引.在线直接在生产环境的表中修改表结构,对用户使用网站是有影响. 以前我一直为这个问题头痛.当然那个时候不需 ...
- mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题
本帖最后由 jan_1985 于 2014-1-15 13:28 编辑 Mysql繁忙主从库在线修改表结构与添加索引问题 一直以来,生产情况下都有修改索引和修改字段的需求,但是对锁表引起的访问不便是会 ...
- osc mysql_MySQL在线修改表结构pt-osc
MySQL在线修改表结构pt-osc 重所周知 MySQL的DDL操作操作是相比比较昂贵的.因为MySQL在修改表期间会阻塞任何读写操作. 基本上业务处于瘫痪.如果数据量较大可能需要好几个小时才能完成 ...
- gh ost mysql_mysql 在线修改表结构工具 gh-ost
-allow-master-master 显式的允许在主主集群中运行-allow-on-master 允许直接运行在主机上,如果没有集群使用这个选项,推荐用在从机上-alter string(必须参数 ...
- percona-toolkit之pt-online-schema-change(在线更改表结构)
传统方法修改表结构 类似alter table xx modify,在修改表结构时需要锁表,如果表很大,则操作时间会较长.目前,绝大多数业务要求24*7无间断服务,而此过程中,如果造成较长时间数据库无 ...
- mysql修改表结构大表_在线修改MySQL大表的表结构
由于某个临时需求,需要给在线MySQL的某个超过千万的表增加一个字段.此表在设计之时完全按照需求实现,并没有多余的保留字段. 我们知道在MySQL中如果要执行ALTER TABLE操作,MySQL会通 ...
- oracle 11g 通过在线重定义方式修改表结构
今天因为要对一套数据库的数据抽取进行io优化,希望通过修改表结构将抽取io降下来,因为抽取只针对标签HAVE_FLAG为"0"的值进行抽取,抽取之后更新HAVE_FLAG为其他值, ...
- mysql修改工资字段_基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)...
基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎) 前言 本篇是基于Linux下针对MySQL表结构的修改,MySQL索引的操作以及MySQL数据引擎的配置和说明. ...
- OSC 在线更改表结构
随着业务的发展,更改表结构变的越来越常见.一般情况下,我们通过alter table 之类的DDL语句就可以完成.然而当执行alter table 语句时,数据库会对整个实例加锁,阻塞业务的所有操作, ...
最新文章
- 钢结构节点输出软件_BIM助力桥梁钢结构设计施工一体化建设
- 一起因网线问题引起的网络故障的解决过程
- js 闭包的用法详解
- Maven项目不能编译jsp解决方法:Unable to compile class for JSP
- 为什么离开学校后,学习能力直线下降?
- mysql安装与配置的截图_windows下MySQL5.6版本安装及配置过程附有截图和详细说明...
- oracle数据库连接满了,ORACLE数据库连接数满的分析及优化
- js 图片压缩上传(base64位)以及上传类型分类
- 【转载】一天之内上手.Net+WAP项目
- CentOS 6.5装配第三方软件库epel
- 操作系统读写者问题实验报告_备战秋招——操作系统(2)
- 投大数据简历的原则以及在哪些地方投简历最有效?
- QQ,MSN,旺旺在线客服代码
- matlab如何算排列组合数,MATLAB 排列组合问题
- VMware下如何虚拟软盘启动
- DPM目标检测算法(毕业论文节选)
- 奥比3d 摄像头 android,奥比中光3D传感摄像头Ubuntu系统安装ROS说明
- 攀登数据基础设施高峰,这是一场勇敢者的游戏
- 项目经理手册-项目经理需要铭记在心的话
- 孤立森林异常检测算法原理和实战(附代码)
热门文章
- 手机端网站测试用什么软件,3款优秀的移动webAPP网站在线测试工具推荐
- spingboot集成webSocket
- windows下备份mysql 数据库
- Normalize.css :一种用于重置默认的CSS样式的样式工具
- 三维重建:SFM中BA的并行化
- OpenCV、OpenCL、OpenGL、OpenPCL
- Warning:关于_CRT_SECURE_NO_WARNINGS
- python3:语法变动 及新特性
- Java双等号,Equals(),HashCode()小结
- 优先队列 HDOJ 5437 Alisha's Party