简介:今天咱们聊聊PT-OSC的东东
一 简单介绍
  1 标准组合
   pt-online-schema-change --user= --password= --host= D=,t= --sock=/tmp/mysql.sock --alter '' --charset=utf8 --alter-foreign-keys-method=auto --print --execute
   --charset 字符集设置 不支持utf8mb4
   --alter-foreign-keys-method auto 自身采用哪种方法处理外键 强烈建议开启,因为你不可能在执行之前去查看每张表是否有外键
   --print 打印进度
   --execute 执行
   注意:因为pt-osc工具默认有一些控制参数搭配,这些参数会导致pt工具暂缓进行(比如主从延迟>1s这种) 所以以上组合推荐在没有任何压力的小表上做
  2 不考虑从库延迟和主从复制设置的过滤表
  pt-online-schema-change --user= --password= --host= D=,t= --sock=/tmp/mysql.sock --alter '' --charset=utf8 --alter-foreign-keys-method=auto --max-load='Threads_running=35,Threads_connected=10000' --no-check-replication-filters -recursion-method=none --print --    execute
  --no-check-replication-filters 不考虑复制过滤规则
  -recursion-method=none 不设置默认方法来指定发现从库,必须显示指定
  --max-load 默认thread_running=25 一旦大于25会暂缓pt任务的执行,可以看情况是否调大,参数格式(Threads_running=35,Threads_connected=10000) 
  注意:如果不是非常高强度一致性或者接受的情况下,建议采取此策略.配合--max-load根据服务器负载进行条件
  3 考虑从库延迟
  pt-online-schema-change --user= --password= --host= D=,t= --sock=/tmp/mysql.sock --alter '' --charset=utf8 --alter-foreign-keys-method=auto --max-load='Threads_running=35,Threads_connected=10000' --no-check-replication-filters -recursion-method=processlist --   max-lag=10000 -recursion-method=none --print --execute
 -recursion-method=processlist/host 发现从库的方式
 --max-lag 默认1s 也就是说一旦从库延迟超过1s 就会暂缓执行
二 注意事项
 1 pt-osc 无法作用于没有主键的表,请特别注意(包括PT的一系列的工具其实都需要主键或者唯一性索引)
 2 pt-osc 可根据主库负载和从库延迟这两方面自由调节
 3 pt-osc 操作上的表不能有触发器
 4 pt-osc 的速度不如原生Online ddl的速度 5 百万级别的表建议都采用pt-osc

三 一些问题
 1 我曾经遇到过pt-osc任务卡在创建触发器的问题,不得不中断。此时有高密度的DML操作,所以如果此表有很高的DML操作,请暂缓执行任务,业务低谷再做
 2 关于pt-osc修改主键的问题

3 pt-osc在处理存在外键约束的表,有可能出现异常,pt-osc它爸Baron也提过,所以先检查是否有外键(有外键的,尽量不要使用)。

四 关于联合主键的修改问题
  场景 关于将联合主键如何修改为自增ID为主键
  DDL执行顺序
  add unique key()
  drop primary key
  add id int auto_increment primary key
 采用PT执行

加上 --no-check-alter 才可以执行
 在这里要注意一点:再执行主键变更的时候要确保没有太多的DML和select的操作否则会严重影响性能(本人经历过一次) 
 对主键的变更操作要格外慎重
五 pt-osc的执行过程
  1 创建一个和要执行 alter 操作的表一样的新的空表结构(是alter之前的结构)
  2 在新表执行alter table 语句(速度应该很快)
  3 在原表中创建触发器3个触发器分别对应insert,update,delete操作
  4 以一定块大小从原表拷贝数据到临时表,拷贝过程中通过原表上的触发器在原表进行的写操作都会更新到新建的临时表
  5 Rename 原表到old表中,在把临时表Rename为原表
  6 如果有参考该表的外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理
  7 默认最后将旧原表删除

这就是我对于pt-osc的理解

mysql 案例~关于pt-osc工具的用途的更多相关文章

  1. mysql 案例 ~ pt修复工具的使用

    简介:今天咱们来聊聊PT修复工具pt-table-sync 注意事项:   1 表要有主键或者唯一键   2 针对每一个chunk加的是for update锁   3 修复过程中不能容忍从库延迟 如果 ...

  2. mysql 案例 ~ pt校验工具介绍

    简介:今天咱们来聊聊PT校验工具pt-table-checksum 注意事项:    1. 根据测试,需要一个即能登录主库,也能登录从库的账号:    2. 只能指定一个host,必须为主库的IP:  ...

  3. MYSQL优化浅谈,工具及优化点介绍,mysqldumpslow,pt-query-digest,explain等

    MYSQL优化浅谈 msyql是开发常用的关系型数据库,快速.稳定.开源等优点就不说了. 个人认为,项目上线,标志着一个项目真正的开始.从运维,到反馈,到再分析,再版本迭代,再优化… 这是一个漫长且考 ...

  4. MySQL监控、性能分析——工具篇

    https://blog.csdn.net/leamonjxl/article/details/6431444 MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性 ...

  5. MySQL监控、性能分析——工具篇(转载)

    MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预 ...

  6. MySQL/MariaDB数据库的mysqldump工具备份还原实战

    MySQL/MariaDB数据库的mysqldump工具备份还原实战 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.mysqldump概述 1>.逻辑备份工具 mysq ...

  7. mysql几种性能测试的工具使用

    mysql几种性能测试的工具使用 近期由于要比较mysql及其分支mariadb, percona的性能,了解了几个这方面的工具,包括:mysqlslap sysbench tpcc-mysql,做一 ...

  8. mysql慢查日志分析工具 percona-toolkit

    备忘自: http://blog.csdn.net/seteor/article/details/24017913 1. 工具简介 pt-query-digest是用于分析mysql慢查询的一个工具, ...

  9. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...

  10. MySQL高可用复制管理工具 —— Orchestrator使用

    背景 在上一篇「MySQL高可用复制管理工具 —— Orchestrator介绍」中大致介绍了Orchestrator的功能.配置和部署,当然最详细的说明可以查阅官方文档.本文开始对Orchestra ...

随机推荐

  1. Galaxy S10使用几乎零黑边框的OLED显示屏

    2019年的首波安卓旗舰中,目前关于三星Galaxy S10的爆料是最多的,在销量连续萎缩后,外界对手机一哥的“发力之作”充满期待. 据TheElec报道,Galaxy S10正面使用的是一块几乎零黑 ...

  2. 删除文件,copy文件bat

    由于IntelliJ IDEA Build Artifacts速度实在是无法忍受,特整理了一个bat脚本方便maven install后更新jar文件到部署包 del /F /S /Q D:\Idea ...

  3. BZOJ3160 万径人踪灭(FFT+manacher)

    容易想到先统计回文串数量,这样就去掉了不连续的限制,变为统计回文序列数量. 显然以某个位置为对称轴的回文序列数量就是2其两边(包括自身)对称相等的位置数量-1.对称有啥性质?位置和相等.这不就是卷积嘛 ...

  4. POJ3268(Silver Cow Party)

    题意: 有n头牛去第x个点开party(有点高大上~),单向路,去到还得回来,问这n头牛每一头花费的总时间的最大值是多少 模板spfa: #include <iostream> #incl ...

  5. MT【191】阿波罗尼乌斯圆

    已知$f(x)=2\sqrt{(\cos x+\frac{1}{2})^2+\sin^2 x}-\sqrt{\cos^2 x+(\sin x-\frac{1}{2})^2}$,若$m\ge f(x)$ ...

  6. hdu5306 Gorgeous Sequence

    hdu5306 Gorgeous Sequence 题目大意 ​ 给你一个序列,维护区间和,区间chkmin和区间最大值 数据范围 数据组数T,序列长度n,操作次数m $T = 100,\sum n ...

  7. LoadRunner断言:正确结果有多种情况

    用过lr的都知道,我们可以用web_reg_find这个注册函数判断某个请求的返回中是否有我们要找的内容. 但是,如果正常的情况有多种,该如何断言呢? 设置多个检查点 把每个检查点获取到的结果数量相加 ...

  8. windows下用bat启动jar包,修改cmd标题(title)

    新建start.bat,输入以下内容即可. @echo off title myprogress-%date%-%time%-%cd% java -jar myprogress.jar

  9. mod(%)之规律(除数与被除数的正负分析)

    首先注意“-9 % 4”,根据运算符优先级,负号运算符优先级大于余数(取模),所以执行的是“(-9) % 4”. 其次 % = mod ,只是在不同地方表示方法不同而已. 被除数无论是正数和负数结果都 ...

  10. Linux下JDK+Eclipse安装

    Ubuntu版本14.04 JDK8_144 eclipse最新下载 注:原本安装JDK7配置好环境后报错,原来是最新eclipse的一个功能只有JDK8支持,若想使用JDK7需要注释某条代码 JDK ...