• pt-online-schema-change使用参数说明


    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来保留新表
    --chunk-size chunk的行数,默认1000
    --chunk-index-columns 有复合索引的时候,指定索引列
    --critical-load 默认Threads_running=50; 每次chunk执行后会自动用SHOW GLOBAL STATUS检查负载情况,如果超过阈值则放弃;
    --execute 执行操作 与 --dry-run互斥
    --force 强制运行,可能打破外键约束
    --skip-check-slave-lag 检查SLAVE的时候,指定该SLAVE跳过;
    --print 将会显示工具执行的命令
    --null-to-not-null 修改允许null值为not null
    --preserve-triggers 保留原表的触发器,不删除
    --max-lag 默认1s, 如果主从延时的时间超过这个值,则复制会暂停"--check-interval"秒时间;然后再检查,直到主从延时小于该值;如果指定了"--check-slave-lag",则只会检查指定slave延时,而不是检查所有slave;如果有任何SLAVE stop了,那么工具会一直等待下去;每次停止的时候都会打印报告
    --ask-pass 连接的时候会要求提供密码

  • 相关阅读:
    Flash向量1点和向量
    Flash/Flex学习笔记(2):捕获摄像头
    Flash向量0序言
    Flash向量3加法和投影
    Flash/Flex学习笔记(3):动态添加组件
    Flash/Flex学习笔记(5):捕获摄像头(续)在线抓屏并保存到客户端本地
    异常写法
    关于存储过程得传出参数的错误
    python Beautiful Soup模块的安装
    python学习笔记比较全
  • 原文地址:https://www.cnblogs.com/hankyoon/p/12556508.html
Copyright © 2020-2023  润新知