pt-online-schema-change在线修改表结构

  

1。参数

           参数   默认值   说明               ——主机=xxx——用户=xxx密码=xxx      连接实例信息,缩写xxx - h xxx - u - p xxx,密码可以使用参数——ask-pass手动输入。         ——改变      结构变更语句,不需要ALTER TABLE关键字。与原始ddl一样可以指定多个更改,用逗号分隔。         D=db_name t=table_name   指定要ddl的数据库名和表名         ——max-load   默认为Threads_running=25。每个块拷贝完后,会检查显示全球地位的内容,检查指标是否超过了指定的阈值。如果超过,则先暂停。这里可以用逗号分隔,指定多个条件,每个条件格式:状态指标=MAX_VALUE或者地位指标:MAX_VALUE。如果不指定MAX_VALUE,那么工具会这只其为当前值的120%。         ——max-lag      默认1 s。每个块拷贝完成后,会查看所有复制奴隶的延迟情况(Seconds_Behind_Master)。要是延迟大于该值,则暂停复制数据,直到所有从的滞后小于这个值。——检查间隔配合使用,指定出现从库滞后超过max-lag,则该工具将睡眠多长时间,默认1 s,再检查。如max-lag=5,检查间隔=2。         ——chunk-time      默认0.5 s,即拷贝数据行的时候,为了尽量保证0.5秒内拷完一个块,动态调整块大小的大小,以适应服务器性能的变化。         ——set-vars      使用pt-osc进行ddl要开一个会议去操作,set-vars可以在执行改变之前设定这些变量,比如默认会设置,set-vars“wait_timeout=10000, innodb_lock_wait_timeout=1, lock_wait_timeout=60“。         ——即将      创建和修改新表,但不会创建触发器,复制数据,和替换原表。并不真正执行,可以看到生成的执行语句,了解其执行步骤与细节,和——打印配合最佳. .         ——执行      确定修改表,则指定该参数。真正执行alter.-dry-run与执行必须指定一个,二者相互排斥            

1。——改变说明

  

1。绝大部分情况下表上需要有主键或唯一索引,因为工具在运行当中为了保证新表也是最新的,需要旧表上创建删除和更新触发器,同步到新表的时候有主键会更快。个别情况是,当改变操作就是在c1列上建立主键时,删除触发器将基于c1列。

     <李>子句不支持重命名去给表重命名。   <李>改变命令原表就不支持给索引重命名,需要先下降再添加,在pt-osc也一样。(mysql 5.7支持重命名索引old_index_name new_index_name)。但给字段重命名,千万不要drop-add,整列数据会丢失,使用改变col1 col1_new类型约束(保持类型和约束一致,否则相当于修改列类型,不能在线)   <李>子句如果是添加列并且定义了非空,那么必须指定默认值,否则会失败。   <李>如果要删除外键(名fk_foo),使用工具的时候外键名要加下划线,比如,改变“删除外键_fk_foo"李      

2。使用限制

  
      <李>原表上不能有触发器存在李   <李>在使用之前需要对磁盘容量进行评估。因为数据量会多一倍   
  

3。使用示例

  

1。添加字段

  
 <代码> pt-online-schema-change——用户=用户密码=密码——主机=10.0.201.34改变“添加列f_id int默认0”D=融合,t=sbtest3——打印执行 
  <人力资源/>   

 pt-online-schema-change在线修改表结构

pt-online-schema-change在线修改表结构