pt-archiver 数据删除、迁移工具使用
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,1. 数据库连接参数参数说明A字符编码D库F从文件读取选项L加载数据本地文件P端口Ssocket文件a执行查询的数据库b如果是true, 禁用SQL_LOG_BINh数据库地址i查询使用的索引m插件模
千家信息网最后更新 2025年11月08日pt-archiver 数据删除、迁移工具使用
1. 数据库连接参数
| 参数 | 说明 |
|---|---|
| A | 字符编码 |
| D | 库 |
| F | 从文件读取选项 |
| L | 加载数据本地文件 |
| P | 端口 |
| S | socket文件 |
| a | 执行查询的数据库 |
| b | 如果是true, 禁用SQL_LOG_BIN |
| h | 数据库地址 |
| i | 查询使用的索引 |
| m | 插件模块名称 |
| p | 数据库密码 |
| t | 表 |
| u | 用户名 |
2. 常用参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| --limit 10000 | 每次取1000行数据用pt-archive处理,Number of rows to fetch and archive per statement. | |
| --txn-size 1000 | 设置1000行为一个事务提交一次,Number of rows pertransaction. | |
| --where 'id<3000' | 设置操作条件 | |
| --progress 5000 | 每处理5000行输出一次处理信息 | |
| --statistics | 输出执行过程及最后的操作统计 | |
| --charset=UTF8 | 指定字符集为UTF8 | |
| --bulk-delete | 批量删除source上的旧数据(例如每次1000行的批量删除操作) | |
| --bulk-insert | 批量插入数据到dest主机 (看dest的general log发现它是通过在dest主机上LOAD DATA LOCAL INFILE插入数据的) | |
| --replace | 将insert into 语句改成replace写入到dest库 | |
| --sleep 120 | 每次归档了limit个行记录后的休眠120秒(单位为秒) | |
| --file '/root/test.txt' | 导出的文件路径 | |
| --purge | 删除source数据库的相关匹配记录 | |
| --header | 输入列名称到首行(和--file一起使用) | |
| -no-check-charset | 不指定字符集 | |
| --check-columns | 检验dest和source的表结构是否一致,不一致自动拒绝执行(不加这个参数也行。默认就是执行检查的) | |
| --no-check-columns | 不检验dest和source的表结构是否一致,不一致也执行(会导致dest上的无法与source匹配的列值被置为null或者0) | |
| --chekc-interval | 默认1s检查一次 | |
| --local | 不把optimize或analyze操作写入到binlog里面(防止造成主从延迟巨大) | |
| --retries | 超时或者出现死锁的话,pt-archiver进行重试的间隔(默认1s) | |
| --no-version-check | 目前为止,发现部分pt工具对阿里云RDS操作必须加这个参数 | |
| --analyze=ds | 操作结束后,优化表空间(d表示dest,s表示source) |
2. example
1. 删除老数据
pt-archiver \--source h=localhost,u=root,p=1234,P=3306,D=test,t=t \--no-check-charset --where 'a<=376' --limit 10000 --txn-size 1000 --purge2. 复制数据到其他mysql实例,且不删除source的数据(指定字符集):
/usr/bin/pt-archiver \--source h=localhost,u=root,p=1234,P=3306,D=test,t=t1\--dest h=192.168.2.12,P=3306,u=archiver,p=archiver,D=test,t=t1_bak \--progress 5000 --where 'mc_id<=125' \--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --no-delete3. 复制数据到其他mysql实例,并删source上的旧数据(指定字符集):
/usr/bin/pt-archiver \--source h=localhost,u=root,p=1234,P=3306,D=test,t=t1 \--dest h=192.168.2.12,P=3306,u=archiver,p=archiver,D=test,t=t1_his \--progress 5000 --where "CreateDate <'2017-05-01 00:00:00' " \--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --bulk-delete4. 复制数据到其他mysql实例,不删除source数据,但是使用批量插入dest上新的数据(指定字符集):
/usr/bin/pt-archiver \--source h=localhost,u=archiver,p=archiver,P=3306,D=test,t=t1 \--dest h=192.168.2.12,P=3306,u=archiver,p=archiver,D=test,t=t1_his \--progress 5000 --where "c <'2017-05-01 00:00:00' " \--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --no-delete --bulk-insert5. 导出数据到文件
/usr/bin/pt-archiver \--source h=10.0.20.26,u=root,p=1234,P=3306,D=test,t=t \--file '/root/test.txt' \--progress 5000 --where 'a<12000' \--no-delete --statistics --charset=UTF8 --limit=10000 --txn-size 10006. 导出数据到文件并删除数据库的相关行:
/usr/bin/pt-archiver \--source h=10.0.20.26,u=root,p=1234,P=3306,D=test,t=t \--file '/root/test.txt' \--progress 5000 --where 'a<12000' \--statistics --charset=UTF8 --limit=10000 --txn-size 1000 --purge
数据
参数
字符
数据库
文件
一致
字符集
实例
处理
主机
名称
结构
查询
检查
检验
输出
工具
巨大
主从
事务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
福建系统软件开发外包
丰富的数据库翻译
如何查询金蝶数据库保存路径
数据库系统概论怎么学
淮安网络安全市场报价
计算机与网络技术的应用
金融软件开发 恒生
我国网络安全风险缺口
ibm 机架式服务器
华为有自己的数据库吗
网络安全检查工作gov
挂Q软件开发
阿里云服务器下载不了游戏
全球三大互联网科技公司
共享单车平台软件开发
高端服务器台式机
服务器硬盘为啥600GB
爱奇艺服务器切换为上限
北京迅捷网络技术有限公司
陕西省网络安全等级保护
日语电脑软件开发
软件开发外包公司怎么找业务
外文文献的查询网站和数据库
列举三个常见的网络安全风险
数据库表达式怎么输入
一款软件开发要多少钱
吓人视频软件开发
广州交易进口软件服务器
戴尔服务器风扇声音大
怎么查自己的网络安全密钥