当前位置:首页 > 数据库 > mysql > 正文内容

mysql 数据归档工具pt-archiver

root1年前 (2022-12-29)mysql1578

安装

  • ubuntu: sudo apt-get install percona-toolkit

  • centOS: yum install percona-toolkit

  • mac: brew install percona-toolki

安装成功验证: pt-archiver --help

--source:源库

    h:连接的MySQL主机名或IP地址

    u:连接时使用的MySQL用户名

    p:连接时使用的MySQL密码

    P:连接时使用的MySQL端口

    D:连接时使用的默认数据库,可以在运行时使用不同的数据库

    t:要被归档、删除、导出的表

    下面的参数略微不常用

    i:进行归档、删除、导出时,被指定使用的索引

    S:用于连接的MySQL套接字文件(在Unix系统上)

    a:执行查询时要使用的数据库

    b:如果为true,则使用SQL_LOG_BIN禁用binlog

    L:启用LOAD DATA LOCAL INFILE

    A:连接MySQL的默认字符集(SET NAMES)

    F:通过配置文件读取用户名和密码,格式为:

     [client]

     user=your_user_name

     pass=secret


--where 归档条件。"1=1"代表归档全表。

--dest:目标库

    子参数同 --source


--file: 要归档到的文件

    如:--file '/var/log/archive/%Y-%m-%d-%D.%t'

            %d     Day of the month, numeric (01..31)

            %H     Hour (00..23)

            %i     Minutes, numeric (00..59)

            %m     Month, numeric (01..12)

            %s     Seconds (00..59)

            %Y     Year, numeric, four digits

            %D     Database name

            %t     Table name


--bulk-delete:批量删除


--limit:每批归档的记录数


--commit-each:对于每一批记录,只会 COMMIT 一次,不跟此参数每条数据都会commit


--bulk-insert:归档数据以 LOAD DATA INFILE 的方式导入到归档库中 (根据情况使用,出现问题不会弹出日志信息)


下是归档20w数据,不同参数之间的执行时间对比

没有任何参数                                                                      850.040      

--bulk-delete  --limit 1000                                                    422.352            

--bulk-delete  --limit 1000 --commit-each                            46.646  

--bulk-delete  --limit 5000 --commit-each                            46.111

--bulk-delete  --limit 1000 --commit-each  --bulk-insert       7.650

--bulk-delete  --limit 5000 --commit-each  --bulk-insert       6.540

--bulk-delete  --limit 1000 --bulk-insert                                47.273


--purge 代表只删除,不归档


--no-check-charset  不检查源库(目标库)连接(Connection)字符集和表的字符集是否一致

--check-charset  检查源库(目标库)连接(Connection)字符集和表的字符集是否一致


--ignore  使用INSERT IGNORE归档数据


--no-delete  不删除源库的数据


--safe-auto-increment  在归档有自增主键的表时,默认不会删除自增主键最大的那一行

    这样做,主要是为了规避MySQL 8.0之前自增主键不能持久化的问题。

--no-safe-auto-increment 


--progress  显示进度信息,单位行数 如 --progress 10000,则每归档(删除)10000行,就打印一次进度信息



参考文档

https://www.51cto.com/article/714931.html

https://blog.csdn.net/sinat_36757755/article/details/125834245

https://blog.csdn.net/yin__ren/article/details/103251869







扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://zhiqiu.top/?id=247

分享给朋友:

相关文章

mysql 数据库字段的数量和长度总值是固定的

utf8编码,假设每个字段都是varchar,长度都是1000,那么最多共有:65535-1-2-3*1000*N =0N = 21也就是说只能容纳21个字段有的项目动辄都是几十个字段,很显然21个字段就不满足了字符类型若为gbk,每个字符...