简介:今天咱们聊聊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. BZOJ4399魔法少女LJJ——线段树合并+并查集

    题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味: ...

  2. Network POJ - 3694(lca并查集+连通图求桥)

    就是求出原先图中的桥的数量,在每一次询问时加入一条新边,求加入当前边后图中剩余的桥的数量 求出原先图中的桥的数量,然后减去新加入边的两端点之间的桥的数量,就是剩余桥的数量.. 用并查集把属于同一集合的 ...

  3. 棋盘问题 POJ - 1321

    题意: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放 ...

  4. 因为代理原因导致的NotSerializableException

    错误信息: NotSerializableException Failed to serialize object Proxy   报这个错,一开始就往没有序列化这一块想,可是报错点是: excelT ...

  5. APIO2016赛艇

    首先每个学校的边界范围是\(1e9\),肯定不能直接\(dp[i][j]\)表示前i所学校,第\(i\)所学校派出\(j\)艘船,但\(b<=500\)所有考虑把\(a,b\)离散,第二维改为当 ...

  6. 自学Aruba5.3.1-Aruba安全认证-有PEFNG 许可证环境的认证配置OPEN、PSK

    点击返回:自学Aruba之路 自学Aruba5.3.1-Aruba安全认证-有PEFNG 许可证环境的认证配置OPEN.PSK OPEN.PSK都需要设置Initial Role角色, 但是角色派生完 ...

  7. 移除SharePoint2013里的NoteBook笔记本链接

    cls $featureID = (Get-SPFeature | ?{ ($_.DisplayName -eq "SiteNotebook") -and ( $_.Scope - ...

  8. volatile的内存语义

    volatile的特性 理解volatile特性的一个好方法是把对volatile变量的单个读/写,堪称是使用同一个锁对这些单个读/写操作做了同步. 锁的happens-before规则保证释放锁和获 ...

  9. HDU 3081 Marriage Match II (二分图,并查集)

    HDU 3081 Marriage Match II (二分图,并查集) Description Presumably, you all have known the question of stab ...

  10. A1074. Reversing Linked List

    Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...