简介:今天咱们聊聊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. C# 事件 订阅与发布

    两种方式: 一: //服务器 public class Server { //服务器发布的事件 public event Action<string> MyEvent; public vo ...

  2. Coding Contest HDU - 5988(费用流)

    题意: 有n个区域和m条路,每个区域有a[i]个人和b[i]个食物,然后是m条路连接两个区域,这条路容量为cap,这条路断掉的概率为p,第一个经过的时候一定不会断,后面的人有概率p会断,现在需要所有人 ...

  3. MT【9】绝对值二次函数

    解答: 评:容易用绝对值不等式证明当$x\in[1,5]$时$|x^2+px+q|\ge2$

  4. java freemarker导出word时添加或勾选复选框

    最近项目导出word碰到一个需求,要求根据数据动态的决定word里的复选框是否勾选, 公司导出word用的是freemarker,相比较其他技术,freemarker可以很容易的控制输出样式, 在wo ...

  5. React Native——组件FlatList

    属性 添加头部组件 ListHeaderComponent属性用来给FlatList添加头部组件 简单使用: //ES6之前写法 _header = function () { return ( &l ...

  6. SDL2.0 VLC ubuntu安装和黑屏问题

    开发环境安装: 1,执行:"sudo apt-get build-dep libsdl1.2",确定依赖库都装全了. sdl2.0没有正式发布到ubuntu,使用下面方法安装: h ...

  7. 为项目添加CUDA支持

    最近研究体绘制方面的东西,需要用到CUDA加速.从官网下载了CUDA 7.0(支持VS2013)装好后,VS2013中能直接创建CUDA项目,也可以在原有项目中添加cu文件. 进入正题,为已有项目添加 ...

  8. chrome 显示图片遇到的问题,与 淘宝图片服务器 缓存 有关系

    最近发现使用淘宝的jae环境,一个 abc.jsp 地址,随机跳转到淘宝图片空间里任意的一张图片. 但在chrome浏览器发现一个奇怪的问题: 用户第一次访问 abc.jsp  -> 302 f ...

  9. echarts图表点击事件之跳转页面和加载页面

    下图显示四个条形图,点击条形图就跳转到其页面,这说明您要判断你点了那个条形图. echarts给了它点击事件 写法,我们只要模仿就行,代码如下: //echarts图表点击跳转 myChart.on( ...

  10. get方式传值中文乱码

    问题描述: 本机可以,服务器乱码: 解决方案: 我采用了第三条,改server.xml配置 方法一: get方式提交的参数编码,只支持iso8859-1编码.因此,如果里面有中文.在后台就需要转换编码 ...