pt-online-schema-change运用参数是怎样的呢
发布时间:2022-01-13 14:20 所属栏目:115 来源:互联网
导读:这期内容当中小编将会给大家带来有关pt-online-schema-change使用参数是怎样的呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 工作原理: 1、如果存在外键,根据alter-foreign-keys-method参数的值,检测外键相关的
这期内容当中小编将会给大家带来有关pt-online-schema-change使用参数是怎样的呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 工作原理: 1、如果存在外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理。没有使用 --alter-foreign-keys-method=rebuild_constraints 指定特定的值,该工具不予执行 2、创建一个和源表表结构相同的表(table_new),执行alter修改临时表结构 3、在原表上创建三个触发器,insert,delete,udpate对应的触发器,(用于copy数据的过程中,在原表的更新操作更新到新表) 4、从原表拷贝数据到新表,拷贝过程中在原表的写操作都会更新到新建的临时表 5、修改外键相关的子表,根据修改后的数据,修改外键关联的子表 6、rename源数据表为old,把新表rename为源表明,并将old表删除 7、删除触发器 执行条件: 1、操作的表必须有主键或者唯一索引,否则报错 2、该表不能定义触发器,否则报错 用法介绍: pt-online-schema-change --host=ip --port=3306 --user=username --password='password' D=db_name,t=table_name --alter="modify order_id bigint(20) COMMENT '订单id';" --critical-load="Threads_running=200" --sleep=1 --charset=utf8mb4 --check-slave-lag="192.168.1.2,192.168.1.3" --check-interval=1 --execute --dry-run 创建并修改新表,但不创建触发器,也不复制表,或者替换原表,与--execute互斥 --execute 这个参数的作用和前面工作原理的介绍的一样,会建立触发器,来保证最新变更的数据会影响至新表。注意:如果不加这个参数,这个工具会在执行一些检查后退出 --critical-load 每次chunk操作前后,会根据show global status统计指定的状态量的变化,默认是统计Thread_running。目的是为了安全,防止原始表上的触发器引起负载过高。这也是为了防止在线DDL对线上的影响。超过设置的阀值,就会终止操作,在线DDL就会中断。提示的异常如上报错信息 --charset=utf8 连接到MySQL后运行SET NAMES UTF8 --check-slave-lag 检查主从延迟 --check-replication-filters 检查复制中是否设置了过滤条件,如果设置了,程序将退出 --nocheck-replication-filters 不检查复制中是否设置了过滤条件 --set-vars 设置mysql的变量值 --sleep 每个chunk导入后与下一次chunk导入开始前sleep一会,sleep时间越长,对于磁盘IO的冲击就越小 --[no]drop-old-table rename新表后drop旧表,可以no-xxx来保留旧表 --[no]drop-new-table 如果复制原表失败则删除新表; 也可以no-xxx来保留新表 --ask-pass 连接的时候会要求提供密码 上述就是小编为大家分享的pt-online-schema-change使用参数是怎样的呢了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读