mysql 案例~关于pt-osc工具的用途
简介:今天咱们聊聊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工具的用途的更多相关文章
- mysql 案例 ~ pt修复工具的使用
简介:今天咱们来聊聊PT修复工具pt-table-sync 注意事项: 1 表要有主键或者唯一键 2 针对每一个chunk加的是for update锁 3 修复过程中不能容忍从库延迟 如果 ...
- mysql 案例 ~ pt校验工具介绍
简介:今天咱们来聊聊PT校验工具pt-table-checksum 注意事项: 1. 根据测试,需要一个即能登录主库,也能登录从库的账号: 2. 只能指定一个host,必须为主库的IP: ...
- MYSQL优化浅谈,工具及优化点介绍,mysqldumpslow,pt-query-digest,explain等
MYSQL优化浅谈 msyql是开发常用的关系型数据库,快速.稳定.开源等优点就不说了. 个人认为,项目上线,标志着一个项目真正的开始.从运维,到反馈,到再分析,再版本迭代,再优化… 这是一个漫长且考 ...
- MySQL监控、性能分析——工具篇
https://blog.csdn.net/leamonjxl/article/details/6431444 MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性 ...
- MySQL监控、性能分析——工具篇(转载)
MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预 ...
- MySQL/MariaDB数据库的mysqldump工具备份还原实战
MySQL/MariaDB数据库的mysqldump工具备份还原实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.mysqldump概述 1>.逻辑备份工具 mysq ...
- mysql几种性能测试的工具使用
mysql几种性能测试的工具使用 近期由于要比较mysql及其分支mariadb, percona的性能,了解了几个这方面的工具,包括:mysqlslap sysbench tpcc-mysql,做一 ...
- mysql慢查日志分析工具 percona-toolkit
备忘自: http://blog.csdn.net/seteor/article/details/24017913 1. 工具简介 pt-query-digest是用于分析mysql慢查询的一个工具, ...
- mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理
转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...
- MySQL高可用复制管理工具 —— Orchestrator使用
背景 在上一篇「MySQL高可用复制管理工具 —— Orchestrator介绍」中大致介绍了Orchestrator的功能.配置和部署,当然最详细的说明可以查阅官方文档.本文开始对Orchestra ...
随机推荐
- BZOJ4723[POI2017]Flappy Bird——模拟
题目描述 <飞扬的小鸟>是一款风靡的小游戏.在游戏中,小鸟一开始位于(0,0)处,它的目标是飞到横坐标为X的某个位置 上.每一秒,你可以选择点击屏幕,那么小鸟会从(x,y)飞到(x+1,y ...
- IDEA 快捷键修改(长期更新)
最近误操作,导致idea的快捷键没了. 痛定思痛,打算记录一下,以前修改过的key map 搜索一下就好了: 1 代码格式化 -- reformat code:Ctrl+Alt+L(如果按了没反应, ...
- MT【27】对数方程组求范围
解答:3 评论:此类题目通性通法为换元后化归为线性规划问题.当然不等式凑配也是常见技巧,只是容易范围扩大或者缩小.
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
- 集成源码深度剖析:Fescar x Spring Cloud
Fescar 简介 常见的分布式事务方式有基于 2PC 的 XA (e.g. atomikos),从业务层入手的 TCC( e.g. byteTCC).事务消息 ( e.g. RocketMQ Hal ...
- 自学Python1.3-centos内python3并与python2共存
自学Python之路 自学Python1.3-centos内python3并与python2共存 1. 查看是否已经安装Python 测试机系统CentOS 7 默认安装了python2.7, 使用 ...
- 结构体练习(C)
结构体存储学生学号.姓名.总分,动态内存分配增加信息,然后排序 # include <stdio.h> # include <malloc.h> //# include < ...
- vue实现添加与删除图书
先放大图,当我们点击删除的时候,图书名单就会被我们删掉.当我们重新添加回来或者添加新书的时候,我们只需要在添加新书这里添加即可. 当我点击删除的时候,只需要的就是除却删除的那一个书籍之后剩下的图书. ...
- (递推)一只小蜜蜂... hdu2044
一只小蜜蜂... 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044 Time Limit: 2000/1000 MS (Java/Others) ...
- ElasticSearch入门介绍一
ElasticSearch 关于es的几个概念: 集群:多个运行es节点可以组成一个集群,它们拥有相同的cluster.name. 节点:运行es的实例 索引:相当于数据库database,一个集群可 ...