概述
前两天写了一个删除180天的备份脚本。
今天领导说,需要对那些删除的表做备份操作,之后放在冷盘上供后续审计。
具体脚本如下:
#!/bin/bash
# Mysql vars
DB_HOST=$1
DB_POINT=$2
DB_USER=$3
DB_PASS=$4
DB_NAME="zactemp"
MYSQLDUMP_OPT="--opt --events --ignore-table=mysql.events --set-gtid-purged=OFF "
# Others vars
DATE=`date +%Y%m%d_%H%M`
BIN_DIR="/usr/local/mysql/bin"
BACK_DIR="/data/backup/mysql/${DB_HOST}/${DB_NAME}/${DATE}"
# GET TABLE_NAMES
TABLE_NAMES=`${BIN_DIR}/mysql -h${DB_HOST} -u${DB_USER} -p${DB_PASS} -D ${DB_NAME} -e "select t.table_name from information_schema.TABLES t where t.TABLE_SCHEMA = '${DB_NAME}' and t.CREATE_TIME <= date_add(now(),interval -180 day) and t.CREATE_TIME > date_add(now(),interval -181 day);" | egrep -v "table_name"`
# Todo mysqldump
[ -d ${BACK_DIR} ] || mkdir -p ${BACK_DIR}
# mysqldump all databases
echo "==========${DATE}databases backups start==========" >>${BACK_DIR}/../mysqldump_backup.log
for TABLE_NAME in ${TABLE_NAMES}; do
sleep 1
${BIN_DIR}/mysqldump ${MYSQLDUMP_OPT} -h${DB_HOST} -P${DB_POINT} -u${DB_USER} -p${DB_PASS} -B ${DB_NAME} --tables ${TABLE_NAME} > ${BACK_DIR}/${DB_NAME}_${TABLE_NAME}.sql
[ $? == 0 ] && echo "${DATE}:mysqldump ${TABLE_NAME} success." >>${BACK_DIR}/../mysqldump_backup.log || echo "${DATE}:mysqldump ${TABLE_NAME} err,please check." >>${BACK_DIR}/../mysqldump_backup.log
done
echo "==========${DATE}databases backups over==========" >>${BACK_DIR}/../mysqldump_backup.log
# tar backup
cd ${BACK_DIR}/../ &&
tar -zcvf ${DATE}.tar.gz ${DATE}
--remove-files
再配合这个以下脚本可以实现多台机器一起备份
#!/bin/bash
cd /root/crontab_shell
#./zactemp_dumper.sh 127.0.0.1 3306 za_root password
./zactemp_dumper.sh 10.18.32.9 3306 za_root password
再配合之前那个定期删除的,就可以形成自动备份自动清理。
最后
以上就是傻傻钻石为你收集整理的MySQL一个备份数据表(180天前)的脚本的全部内容,希望文章能够帮你解决MySQL一个备份数据表(180天前)的脚本所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复