TIDB备份脚本

#!/bin/bash

# global variables
ip="ip"
user="root"
passwd="passwd"
dumpling="/opt/tidb-toolkit-v4.0.15-linux-amd64/bin/dumpling"
project="project_name"
url="https://oapi.dingtalk.com/robot/send?access_token?"

#set the path to tidb bak files
tidb_files_path="/erp/tidb-bak/"
tidb_files_dir=${tidb_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")
tar_dir=${tidb_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
date1=$(date -d "yesterday" +"%F")
date2=$(date -d "yesterday" +"%d")
tidb_files_tar=${tidb_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/tidb-${date1}.tar.gz
tar_name=$(echo ${tidb_files_tar} |awk -F[/] '{print $NF}')

log_dir="${tidb_files_path}/logs/"
log_name="${log_dir}tidb-${date1}.log"
#log_name="/erp/tidb-bak/logs/tidb_bak-2022-04-09.log"

mkdir -p ${tidb_files_dir}
mkdir -p ${log_dir}

dingalert(){
		bak_time=$(/usr/bin/date -d yesterday +%F" "%T)
         curl -H 'Content-Type: application/json' \
              -d '{"msgtype": "markdown",
                "markdown": {
                 "title":"'"${project}"'-数据库备份'"$1"'",
                "text": "### '"${project}"'-数据库备份 \n > **'"$1"'**  \n >时间:'"${bak_time}"'" 
                },
                 "at": {
                 "isAtAll": true}
                 }' \
                $url
                }

tidb_bak(){
		cd ${tar_dir};
		# tidb bak
		
		${dumpling}  -h ${ip} -u ${user} -p ${passwd} -P 4000 --threads 20  -f '*.*' -f '!INFORMATION_SCHEMA.*' -f '!METRICS_SCHEMA.*' -f '!PERFORMANCE_SCHEMA.*' -f '!*.sc*' -f '!*.tmp*' -f '!*.dim*' -f '!*.sync_table_batch'  -o  ${date2} &> ${log_name}
		#${dumpling}  -h ${ip} -u ${user} -p ${passwd} -P 4000 --threads 20  -f 'test*.*'  -o  ${date2} &> ${log_name}
		
}

tidb_tar(){
		cd ${tar_dir};
		tar -zcvf ${tar_name} ${date2}
		rm -rf ./${date2}
}

tidb_yujing(){
		result=$(grep -i successfully ${log_name})
		if [ -z ${result} &> /dev/null ];then
			dingalert 异常;
			exit
		else
			tidb_tar > /dev/null;
			dingalert 正常;
		fi
}

save_bak(){
		#Set how long do you want to save
		save_days=30
		
		#delete 7 days ago tidb files
		find $tidb_files_path -type f -mtime +${save_days} -exec rm -rf {} \;
		
		#back to nas
		#/usr/bin/ansible 10.1.70.22 -m copy -a "src=${tidb_files_tar} dest='/erp/tidb-bak'"
		remote_ip="10.1.70.22"
		remote_dir="/erp/tidb-bak/"
		remote_date_dir=${remote_dir}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
		
		/usr/bin/ansible ${remote_ip} -m shell -a "mkdir -p ${remote_date_dir}"
		/usr/bin/ansible ${remote_ip} -m copy -a "src=${tidb_files_tar} dest=${remote_date_dir}"
}

tidb_bak
tidb_yujing
save_bak

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值