• Linux操作文档——pt-osc工具



    一、pt-osc的工作原理

    1、创建一个和源表一样表结构的新表
    2、在新表执行DDL语句
    3、在源表创建三个触发器分别对应insert、update、delete操作
    4、从源表拷贝数据到新表,拷贝过程中源表通过触发器把新的DML操作更新到新表中
    5、rename源表到old表中,把新表rename为源表,默认最后删除源表

    二、pt-osc工具的限制

    1、源表不能有触发器存在(insert、update、delete)
    2、源表必须要有主键或唯一索引,如果没有工具将停止工作
    3、源表有外键,必须使用–alter-foreign-keys-method指定特定的值
    4、如果线上的复制环境过滤器操作过于复杂,工具将无法工作
    5、如果开启复制延迟检查,但主从延迟时,工具将暂停数据拷贝工作
    6、如果开启主服务器负载检查,但主服务器负载较高时,工具将暂停操作
    7、只支持Innodb存储引擎表,且要求服务器上有该表1倍以上的空闲空间。
    8、修改索引、外键、列名时,优先采用online ddl,并指定 ALGORITHM=INPLACE

    三、安装pt-osc工具

    下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/

    [root@mysql ~]# wget https://www.percona.com/downloads/percona-toolkit/3.2.1/binary/redhat/7/x86_64/percona-toolkit-3.2.1-1.el7.x86_64.rpm
    [root@mysql ~]# yum -y install  percona-toolkit-3.2.1-1.el7.x86_64.rpm
    
    • 1
    • 2

    四、pt-osc使用

    [root@mysql ~]# pt-online-schema-change \
    --host="127.0.0.1" \
    --port=3306 \
    --user="root" \
    --password="xxxxxxx" \
    --charset="utf8mb4" \
    --max-lag=10 \
    --check-salve-lag='xxx.xxx.xxx.xxx' \
    --recursion-method="hosts" \
    --check-interval=2 \
    D="testdb1",t="tb001" \
    --alter="add column age int(4) default 0" \
    --dry-run
    --print
    --execute
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    参数说明
    –host数据库主机IP
    –port=3306端口号
    –user=“root”登录用户
    –password登录密码(明文)
    –ask-pass手动输入(密文)
    –charset=“utf8mb4”指定字符集为UTF8mb4
    –max-lag=10默认10s,检查slave延迟的值,超过10秒则暂停复制数据
    –check-salve-lag=指定一个从库的DSN连接地址,如果从库超过–max-lag参数设置的值,就会暂停操作
    –recursion-method=“hosts”默认是show processlist,发现从的方法,也可以是host
    –check-interval–max-lag检查的睡眠时间,默认是1
    D指定数据库名
    t指定表名
    –alter=结构变更语句,不需要 ALTER TABLE关键字。与原始ddl一样可以指定多个更改,用逗号分隔
    –dry-run只进行模拟测试
    –print输出结果
    –execute确定修改表
  • 相关阅读:
    .NET Emit 入门教程:第六部分:IL 指令:2:详解 ILGenerator 辅助方法
    医院项目-预约挂号-第一部分
    Java - HashMap原理分析
    Unity游戏Mod/插件制作教程03 - 插件实例1: HelloWorld
    STM32F407 电机编码器测量
    springboot配置文件自定义为json格式
    你的小程序为什么还是不被用户看好?
    Debezium Mysql BinLog同步引擎的内存爆满,频繁GC导致CPU爆高
    Java并发编程学习五:并发容器
    网络通信(套接字通信)(C/C++)
  • 原文地址:https://blog.csdn.net/g950904/article/details/108822529