zoukankan      html  css  js  c++  java
  • pt-archiver配置自动归档

    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即可实现定时任务归档。在表设计之初,也需要考虑数据归档的条件及建立合适的索引。另外定时归档计划要对项目组共享,防止不知道的程序员以被归档表的表做全量业务搜索。

  • 相关阅读:
    3.31上午英语视频
    3.30上午
    leetcode 38
    leetcode 36
    leetcode 28
    leetcode 27
    leetcode 26
    leetcode 24
    leetcode 21
    leetcode 20
  • 原文地址:https://www.cnblogs.com/mzsg/p/11978002.html
Copyright © 2011-2022 走看看