#!/bin/bash


date1=`date --date "183 days ago" +"%Y-%m-%d"`
date2=`date -d "$date1 -2 day" +"%Y-%m-%d"`
user=dts
passwd='123456'
host1='192.168.56.101'
host2='192.168.56.102'
host3='192.168.56.103'
logfile='/tmp/archive.log'

冷数据分离

pt-archiver \
--source A=utf8,h=$host1,P=3306,u=$user,p=$passwd,D=data_transfer,t=mysqltab \
--dest A=utf8,h=$host2,P=3306,u=$user,p=$passwd,D=data_transfer_target,t=mysqltab --where "CREATE_DATE<'$date1'" \
--progress=10000 --limit=10000 --txn-size 10000 --bulk-insert --bulk-delete --statistics  --charset=UTF8  --purge >> $logfile 2>&1
 
 
冷数据回数仓,冷数据环境不清理
pt-archiver \
--source A=utf8,h=$host2,P=3306,u=$user,p=$passwd,D=data_transfer_target,t=mysqltab \
--dest A=utf8,h=$host3,P=3306,u=$user,p=$passwd,D=alldata,t=mysqltab --where "CREATE_DATE>'$date2'" \
--progress=10000 --limit=10000 --txn-size 10000 --bulk-insert --bulk-delete --statistics  --charset=UTF8  --no-delete  >> $logfile 2>&1



只清除

#!/bin/bash


date1=`date --date "691 days ago" +"%Y-%m-%d"`
date2=`date -d "$date1 -1 day" +"%Y-%m-%d"`
user=dts
passwd='123456'
host1='192.168.56.101'
logfile='/tmp/archive.log'
database=data_transfer
table=mysqltab


/usr/bin/mysqldump  -h$host1 -u$user -p$passwd -v -E -e -R --triggers  -t       --opt  --single-transaction   --hex-blob ${database}  ${table} --where="
CREATE_DATE<'$date1'" >/opt/${date2}.txt

#线上环境数据分离到归档环境,注意这里源数据库库数据删除
pt-archiver \
--source A=utf8,h=$host1,P=3306,u=$user,p=$passwd,D=${database},t=${table}  --where "CREATE_DATE<'$date1'" \
--progress 10000 --limit=10000  --commit-each --statistics  --set-vars="sql_log_bin=0"   --no-check-charset  --purge >> $logfile 2>&1



--statistics:收集并打印时间统计信息
--progress: 每多少行打印进度信息:打印当前时间,已用时间以及每X行存档的行数

--quiet: 不打印任何输出

--limit: 获取归档语句的行数,默认 1

--commit-each: 控制事务大小,每次归档完数据,提交事务,配合 --limit 参数,一组一组的归档数据,禁用 --txn-size

--set-vars: 设置 mysql 变量,多个变量用逗号分割

--purge:指定执行的清除操作而不是归档操作。允许忽略选项'--dest'和'--file'进行操作,如果只是清除操作可以结合选项'--primary-key-only'会更高效。