percona-toolkit系列工具(三)之pt-osc使用介绍

news/2025/1/22 19:46:34/文章来源:https://www.cnblogs.com/sunjiwei/p/18684367
一、pt-osc介绍
mysql大表DDL一直是数据库运维当中的痛点,在实际运维过程中,我们一般有三种选择: 1、原生 online ddl 2、pt-online-schema-change工具 3、ghost工具 本文我们主要介绍pt-online-schema-change工具的使用

pt-online-schema-change 的工作原理是创建要更改的表的空副本,根据需要对其进行修改,然后将原始表中的数据复制到新表中。复制完成后,它会删除原始表并用新表替换它。
数据复制过程以chunk(小块数据)的形式执行。复制期间对原始表中的任何数据修改都将反映在新表中,因为该工具会在原始表上创建触发器来更新新表中的相应行。使用触发器意味着如果表上已经定义了任何触发器,则该工具将不起作用。
当该工具将数据复制到新表后,它会使用原子操作同时重命名原始表和新表,完成后,该工具会删除原始表。
使用该工具,表必须有主键或者唯一索引

安装过程请见我另一篇博客:https://www.cnblogs.com/sunjiwei/p/18584735

二、pt-osc的使用
2.1、参数介绍
Usage: pt-online-schema-change [OPTIONS] DSN--alter                                # 模式变更,后面跟变更的sql,例如 --alter "add column comment varchar(50),ADD INDEX index_updated_time (updated_time)",多个变更使用逗号分隔;--[no]analyze-before-swap              #  在ddl完成后,需要rename新旧表之前是否对新表进行analyze分析,默认yes--ask-pass                             # 连接mysql时提示输入密码, 这样就不用在命令行上输入密码了,如果不加这个参数,就要用--password 这个参数在命令杭商输入密码,默认是no,不提示输入密码--charset=s                            # 指定字符集--[no]check-alter                      # 解析--alter指定内容并尝试警告可能出现的意外行为,默认是yes--[no]check-plan                       # Check query execution plans for safety ( default yes)--[no]check-replication-filters        # 该工具会查找过滤复制的服务器选项,例如 binlog_ignore_db 和 replicate_do_db。如果发现任何此类过滤器,则会中止并显示错误。默认yes--check-slave-lag=s                    # Pause the data copy until this replica's lag is less than --max-lag,该选项已弃用,并在未来删除,用 --check-replica-lag 代替
--check-replica-lag                    # 代替上面这个参数,会定期检查所有已知从服务器的复制延迟情况。如果检测到任何从服务器的延迟超过了设定的阈值,则暂停数据迁移操作,直到延迟恢复到可接受范围内(--max-lag)--max-lag                              # 该参数定义了允许的最大复制延迟秒数。当 --check-replica-lag 启用时,pt-osc 会在每次健康检查期间比较当前从服务器的延迟与 --max-lag 的值。如果任何一个从服务器的延迟超过了 --max-lag,则 pt-osc 将暂停其活动,等待延迟回到可接受范围内再继续。--check-interval=m                     # 参数用于指定在检查复制延迟(--max-lag)等健康检查之间的间隔时间(以秒为单位)。这有助于控制工具在执行过程中对服务器资源的影响,确保不会因为频繁的健康检查而给系统带来过多负担。--[no]check-unique-key-change          # 当启用了此选项时,pt-osc 会分析 ALTER TABLE 语句,检查是否涉及唯一键或者主键的添加、删除或修改。对于涉及唯一键变更的操作,pt-osc 会更加谨慎地处理,以避免因并发插入或更新而导致的数据冲突或重复记录问题。--chunk-index=s                        # 默认使用主键或唯一索引来分块处理数据。然而,在某些情况下,表可能没有合适的主键或唯一索引,或者你希望使用其他索引来优化分块过程。这时可以使用 --chunk-index 参数来明确指定要使用的索引。--chunk-index-columns=i                # 参数允许用户指定分块索引中的列,以便更精确地控制 pt-osc 如何分片和处理数据。这个参数与 --chunk-index 配合使用.虽然 --chunk-index 指定了要使用的索引,但有时你可能希望更具体地控制哪些列用于分片。--chunk-index-columns 让你可以明确指出这些列--chunk-size=z                         # Number of rows to select for each chunk copied (default 1000),就是上面分的块,每块有多少行,一般生产变更实例支援充足可以给几千到几万不等--chunk-size-limit=f                   # --chunk-size-limit 是 --chunk-size 的上限,确保分块不会过大。比如该参数设置为1,那就是最大的块大小就等于--chunk-size,如果该参数设置为2,那就是最大的块大小等于--chunk-size * 2--database=s               -D          # Connect to this database--dry-run                              # 创建并修改新表,但不创建触发器、复制数据或替换原始表,该参数允许你在不实际进行任何更改的情况下测试和验证 pt-osc 的操作
--execute                              # 真正执行操作,和--dry-run  互斥--new-table-name=s                     # New table name before it is swapped.--print                                # Print SQL statements to STDOUT--progress=time,30                     # Print progress reports to STDERR while copying rows (default time,30)
--quiet                      -q        # Do not print messages to STDOUT (和--progress 互斥)--skip-check-slave-lag=d               # DSN to skip when checking slave lag--slave-password=s                     # Sets the password to be used to connect tothe slaves
--slave-user=s                         # Sets the user to be used to connect to the slaves--sleep=f                              # How long to sleep (in seconds) after copying each chunk (default 0)--statistics                           # Print statistics about internal counters,ddl结束后打印统计信息例如:
pt-online-schema-change h=8.153.110.179,P=3306,u=root,p='111111',D=jiwei,t=union_new --alter 'add column name varchar(10)' --chunk-size=5000 --statistics --progress=time,3 --max-lag=60 --execute如果不在乎延迟,则可以不加--max-lag=60 参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873396.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算和服务器

一、云计算概述 ICT是世界电信协会在2001年的全球性会议上提出的综合性概念,ICT分为IT和CT,IT(information technology)信息技术,负责对数据生命周期的管理;CT(communication technology),负责数据的传输管理。 CT技术是ICT技术栈的底核。 1、计算机 计算机是现代一种…

movfuscator学习

demovfuscator docker镜像 - 狗小剩就是利用32位mov的图灵完备性,来代替各种代码(32位汇编太逆天了).如果看到只有mov就知道是这b玩意了,不过这种程序性能肯定不行,代码段也好长.可以利用ida查锁定字节码的范围,查相应的字符串. demovfuscator问题太多了,一个是识别c的代码无法…

中考英语优秀范文-016 How to keep a good relationship with parents 如何与父母保持良好的关系

1 写作要求 某英文报社正就青少年与父母关系这一话题开展题为“How to keep a good relationship with parents”的征文活动。请你根据以下要点, 写一篇80个词左右的英语短文参加此次活动: 1 父母规矩太多, 过于强调学习成绩, 不理解自己等问题; 2 你对这些问题的看法; 3 你与父…

KubeSphere 开源社区 2024 年度回顾与致谢

随着 2024 年圆满落幕,我们回顾 KubeSphere 社区这一年走过的每一步,感慨万千。2024 年,KubeSphere 继续领跑云原生技术的创新与发展,推动开源文化的传播,致力于为全球开发者和企业用户提供更强大的平台和解决方案。感谢每一位社区成员的辛勤付出,正是因为你们的共同努力…

云--什么是云

https://whatiscloud.com/

城市生命线安全保障:技术应用与策略创新

城市生命线工程是维系城市正常运行、满足群众生产生活需要的重要基础设施。随着城市化进程的加快,城市基础设施生命线安全运行的复杂性日益加剧,保障城市居民日常生活正常运行的水、电、气、热等各类地下管线以及桥梁、市政设施、轨道交通等城市基础设施的安全问题日益突出。…

Android图形层垂直同步虚拟VSYNC机制

简介 某次调图形性能的时候(启动后台录屏,下(或)称case)发现Android SurfaceFlinger Vsync机制并没有以前想的这么简单粗糙,特别是这次调图形性能发现一些跟Vsync有关联,因此做个总结详解。 跟不上旋律节奏的VSYNC 一份追踪报告,发现Vsync信号非常不规律,于是从这里入手…

[日志] 打印异常堆栈信息的技巧

序Java的异常堆栈信息,对提升排查问题的效率,有极大的帮助————便于我们快速定位异常的发生过程和发生异常的代码行。本文使用的日志框架slf4j : 1.7.25 log4j(2) : 2.20.0 日志行的打印策略 : log4j2.properties# property.log.layout.consolePattern=%d{yyyy/MM/dd HH:m…

【vjudge训练记录】大一寒假专项训练——前缀和/差分

训练情况A题 前缀和模板题,我们输入完 \(a_i\) 后直接求前缀和 \(a_i = a_i + a_{i-1}\),求区间 \([l,r]\) 的和就为 \(a_r-a_{l-1}\)点击查看代码 #include <bits/stdc++.h> #define int long long #define endl \nusing namespace std;void solve(){int n,m;cin>&…

VSCode使用之go语言配置

时间:2025/1/22 扩展:go 目的:支持go语言,方便安装其他必备插件安装该扩展包后可以执行该扩展包提供的命令Go:Install/Update Tools来进一步扩展go工具执行命令的窗口可以通过Ctrol+Shift+P调出点击后会出现很多选项,可以根据自己需要勾选然后点击确定,等待下载安装,一般情…

VSCode设置之默认在当前文件目录下打开终端

在vscode界面依次点击“文件”→“首选项”→“设置”→“用户”→“功能”→“终端”,找到Integrated:Cwd选项,将其值修改为”${fileDirname}“,即可在所有打开的工程内实现终端默认在当前文件的路径启动