数据库中pt-online-schema-change的示例分析
这篇文章主要介绍了数据库中pt-online-schema-change的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
#!/bin/bash#运行该脚本需要更改2个地方:第一个是基本信息;第二个是--alter#基本信息(需要更改)user='xxx'password='xxx'host='xxx'port=xxxxD='xxx't='xxx'#--alter(需要更改)#--------------example----------------#1.增加字段#pt-online-schema-change--user=$user--password=$password--host=$host--port=$port--alter"ADDCOLUMNcontenttext"D=$D,t=$t--no-check-replication-filters--alter-foreign-keys-method=auto--recursion-method=none--print--execute##2.删除字段#pt-online-schema-change--user=$user--password=$password--host=$host--port=$port--alter"DROPCOLUMNcontent"D=$D,t=$t--no-check-replication-filters--alter-foreign-keys-method=auto--recursion-method=none--quiet--execute##3.修改字段#pt-online-schema-change--user=$user--password=$password--host=$host--port=$port--alter"MODIFYCOLUMNageTINYINTNOTNULLDEFAULT0"D=$D,t=$t--no-check-replication-filters--alter-foreign-keys-method=auto--recursion-method=none--quiet--execute##4.字段改名#pt-online-schema-change--user=$user--password=$password--host=$host--port=$port--alter"CHANGECOLUMNageaddressvarchar(30)"D=$D,t=$t--no-check-alter--no-check-replication-filters--alter-foreign-keys-method=auto--recursion-method=none--quiet--execut##5.增加索引#pt-online-schema-change--user=$user--password=$password--host=$host--port=$port--alter"ADDINDEXidx_address(address)"D=$D,t=$t--no-check-alter--no-check-replication-filters--alter-foreign-keys-method=auto--recursion-method=none--print--execute##6.删除索引#pt-online-schema-change--user=$user--password=$password--host=$host--port=$port--alter"DROPINDEXidx_address"D=$D,t=$t--no-check-alter--no-check-replication-filters--alter-foreign-keys-method=auto--recursion-method=none--print--execute##--------------参数说明-------------#1.--ask-pass#隐式输入连接MySQL的密码#2.--defaults-file#-F读取配置文件#3.--alter#结构变更语句,不需要altertable关键字。可以指定多个更改,用逗号分隔。如下场景,需要注意:#不能用RENAME来重命名表。#列不能通过先删除,再添加的方式进行重命名,不会将数据拷贝到新列。#如果加入的列非空而且没有默认值,则工具会失败。即其不会为你设置一个默认值,必须显示指定。#删除外键(dropforeignkeyconstrain_name)时,需要指定名称_constraint_name,而不是原始的constraint_name。#如:CONSTRAINT`fk_foo`FOREIGNKEY(`foo_id`)REFERENCES`bar`(`foo_id`),需要指定:--alter"DROPFOREIGNKEY_fk_foo"#4.--alter-foreign-keys-method#需要特殊处理带有外键约束的表,以保证它们可以应用到新表.当重命名表的时候,外键关系会带到重命名后的表上。#该工具有两种方法,可以自动找到子表,并修改约束关系。#auto:在rebuild_constraints和drop_swap两种处理方式中选择一个。##rebuild_constraints:使用ALTERTABLE语句先删除外键约束,然后再添加.如果子表很大的话,会导致长时间的阻塞。#drop_swap:执行FOREIGN_KEY_CHECKS=0,禁止外键约束,删除原表,再重命名新表。这种方式很快,也不会产生阻塞,但是有风险:#在删除原表和重命名新表的短时间内,表是不存在的,程序会返回错误。#如果重命名表出现错误,也不能回滚了.因为原表已经被删除。#none:类似"drop_swap"的处理方式,但是它不删除原表,并且外键关系会随着重命名转到老表上面。#5.--[no]check-alter#默认yes,语法解析。配合--dry-run和--print一起运行,来检查是否有问题(changecolumn,dropprimarykey)。##6.--max-lag#默认1s。每个chunk拷贝完成后,会查看所有复制Slave的延迟情况。要是延迟大于该值,则暂停复制数据,直到所有从的滞后小于这个值,使用Seconds_Behind_Master。#如果有任何从滞后超过此选项的值,则该工具将睡眠--check-interval指定的时间,再检查。如果从被停止,将会永远等待,直到从开始同步,并且延迟小于该值。#如果指定--check-slave-lag,该工具只检查该服务器的延迟,而不是所有服务器。#7.--check-slave-lag#指定一个从库的DSN连接地址,如果从库超过--max-lag参数设置的值,就会暂停操作##8.--check-interval#默认是1。--max-lag检查的睡眠时间。##9.--[no]check-replication-filters#默认yes。如果工具检测到服务器选项中有任何复制相关的筛选,如指定binlog_ignore_db和replicate_do_db此类。发现有这样的筛选,工具会报错且退出。#因为如果更新的表Master上存在,而Slave上不存在,会导致复制的失败。使用–no-check-replication-filters选项来禁用该检查。#10.--[no]drop-old-table#默认yes。复制数据完成重命名之后,删除原表。如果有错误则会保留原表。###-------------------------------------------------
使用时根据案例和参数说明更改相关参数即可。
感谢你能够认真阅读完这篇文章,希望小编分享的“数据库中pt-online-schema-change的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。