Mysql的数据归档通常使用percona的pt-archiver。通过shell脚本加crontab可以应对大多数场景下的数据自动归档。

安装

Percona Toolkit的安装不再赘述,请自行搜索参考内容。

归档脚本

mysql_archiver.sh 代码如下:

d1=`date -d "-1 month " +%Y-%m-%d`
d2=`date -d "-2 month " +%Y-%m-%d`
d3=`date -d "-3 month " +%Y-%m-%d`
d4=`date -d "-4 month " +%Y-%m-%d`
d5=`date -d "-5 month " +%Y-%m-%d`
d6=`date -d "-6 month " +%Y-%m-%d`
echo 'd1='$d1' d2='$d2' d3='$d3' d4='$d4' d5='$d5' d6='$d6 echo archiver table common_req
pt-archiver --source h=xxx.mysql.rds.aliyuncs.com,P=3306,u=test,p='你的密码',D=db1,t=common_req --dest h=xxx.mysql.rds.aliyuncs.com,P=3306,u=ucheer_cgb_user,p='你的密码',D=db1,t=common_req_archive --charset=UTF8 --where 'create_time<"'$d3'"' --progress 10000 --limit=10000 --txn-size 10000 --no-version-check --statistics --purge --ignore

pt-archiver的功能很丰富,相关语法请自行搜索,这里简要介绍下线上实际使用脚本中的参数及取值。

变量d1 - d6分别为当天的前1 - 6个月,实际场景中大多是执行清理多久前的数据。表必须要有主键,归档条件记得建立合适的索引,建议每个表都建立 create_time和update_time。

每批按10000条处理,并显示统计信息。purge是指删除原表中已归档数据,ignore是指当数据冲突时忽略冲突。

归档计划

crontab -e 添加一条定时任务:

00 04 * * * /bin/sh /home/xxx/mysql_archiver.sh>> /home/xxx/mysqlarchiver/output.txt

每天凌晨4点执行一次归档计划脚本且将结果保存到output.txt中。

总结

pt-archiver的功能丰富,通过shell脚本加crontab即可实现定时任务归档。在表设计之初,也需要考虑数据归档的条件及建立合适的索引。另外定时归档计划要对项目组共享,防止不知道的程序员以被归档表的表做全量业务搜索。

pt-archiver配置自动归档的更多相关文章

  1. Linux下Tomcat catalina.out自动归档,以及logrotate 配置详解

    Linux下Tomcat catalina.out自动归档 如果 catalina.out 日志达到 2GB 大小的时候,Tomcat 因为缓存问题,便没有办法继续输出日志了.  为了避免这种情况,你 ...

  2. eclipse配置自动提示EXTJS和jQurey

    extjs-2.3.0下载地址1:http://dev.sencha.com/deploy/ext-2.3.0.zip 下载地址2:http://www.sencha.com/products/ext ...

  3. nginx二级域名配置自动跳转到一级域名

    nginx二级域名配置自动跳转到一级域名 rewrite配置内容: if ($http_host !~ "^www.aaa.com$") { rewrite ^(.*) http: ...

  4. Runtime之NSCoding的自动归档、接档

    为什么要有Runtime的NSCoding的自动归档.接档 大家所熟知的方法 //归档方法 - (void)encodeWithCoder:(NSCoder *)aCoder { //当学生被归档,学 ...

  5. [工具向]__androidstudio签名打包apk及配置自动签名

    前言 好几天了,没怎么更新了,最近迷上了抓妖,有些懈怠了,这两天在看android的一些东西,java暂时就先放了放,昨天终于是完成了一个小阶段的任务,今天来对这两天的东西进行一下总结. *** 因为 ...

  6. jenkins配置自动发送邮件,抄送

    1.安装插件.系统管理-安装插件:可选插件:搜索Email Extension 2.设置全局变量.系统管理-系统设置:a.Jenkins Location 设置发送方邮件--- b.Extended ...

  7. Python使用闭包结合配置自动生成函数

    背景 在构建测试用例集时,常常需要编写一些函数,这些函数接受基本相同的参数,仅有一个参数有所差异,并且处理模式也非常相同.可以使用Python闭包来定义模板函数,然后通过参数调节来自动化生产不同的函数 ...

  8. 【Devops】【docker】【CI/CD】docker启动的Jenkins容器 - 系统管理 - 全局工具配置 - 自动安装JDK、Maven、Git、Docker

    本篇适用于jenkins是启动的docker容器,自动安装JDK  Maven  Git   Docker等全局工具 ========================================= ...

  9. SVN的基本原理 配置自动更新WEB服务器

    SVN的基本原理 配置自动更新WEB服务器 最近有个小项目,需要用SVN来进行版本控制.项目组的同僚有8个人,大家都在本地开发,然后提交到服务器——服务器就是其中一台机器.专门安排一个测试员来进行项目 ...

随机推荐

  1. 调用远程linux服务器shell脚本

    package com.haiyisoft.hyoaPc.ui; import java.io.BufferedReader;import java.io.IOException;import jav ...

  2. leetcode73矩阵置零

    https://leetcode-cn.com/problems/set-matrix-zeroes/ 解答: 两种方法时间复杂度都为O(mn) O(m+n)空间方法: 用两个容器储存为0的行和列 c ...

  3. CSS中 Padding和Margin两个属性的详细介绍和举例说明

    代码示例: <!doctype html> <html lang="en"> <head> <meta charset="UTF ...

  4. 【React自制全家桶】六、React性能优化(持续更新总结)

    一.通过虚拟DOM来提升性能(自动) 底层讲解见[React自制全家桶]二.分析React的虚拟DOM和Diff算法   二.将多次setState合并为一次执行(自动) 底层讲解见[React自制全 ...

  5. GNU项目

    目标在于建立一个完全相容于UNIX的自由软件环境.发展GNU系统的计划,最早由理查德•斯托曼在1983 年启动,它是自由软件基金会最早致力的目标.最近一个GNU系统版本,是于2011年4月1日释出的G ...

  6. GsonForamt插件的使用

    第一步:在AS中安装GsonForamt插件 第二步:创建bean类 第三步: 在bean类体中做如下操作即可快速创建bean类 鼠标右击按图选择: 将需要解析的json字符串复制进去 设置界面:可以 ...

  7. JndiObjectFactoryBean 配置数据源

    转: JndiObjectFactoryBean 配置数据源 2017年08月29日 22:04:28 病毒先生 阅读数:7338   版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  8. Maven国内源设置

    Maven国内源设置 目前国外的maven源访问非常慢,作为一个Java开发者,是一件很痛苦的事,而国内的maven源,oschina已经关闭,目前最好的方式,就是使用阿里云的镜像: <mirr ...

  9. URL encoding(URL编码)

    URL encoding(URL编码),也称作百分号编码(Percent-encoding),是指特定上下文的统一资源定位符(URL)编码机制UrlEncode:将字符串以URL编码返回值:字符串函数 ...

  10. golang depth read map

    Foreword: I optimized and improved the below solution, and released it as a library here: github.com ...