目的:容灾
最终效果:1. 每天凌晨2:30备份数据库(/data/backup/db/dbname/20210727-023000.sql.gz)
2. 删除5天前备份(Linux Shell)
#1. 创建备份目录
mkdir /data/backup/db
#2. 创建脚本
vim /sbin/mysql_db_backup.sh
#!bin/bash
#mysql配置信息
NOW=$(date +%Y%m%d-%H%M%S)
MYSQL_USER="root"
MYSQL_PWD="root"
MYSQL_HOST="localhost"
MYSQL_DUMP_DB="dbname"
MYSQL_CONN="mysql -u$MYSQL_USER -p$MYSQL_PWD --host $MYSQL_HOST"
MYSQL_DUMP="mysqldump $MYSQL_CONN --databases $MYSQL_DUMP_DB"
BACKUP_DIR="/data/backup/db/$MYSQL_DUMP_DB"
#若不存在备份目录则创建
[ ! -d "${BACKUP_DIR}" ] && mkdir "${BACKUP_DIR}"
#备份数据库
${MYSQL_DUMP} | gzip > "${BACKUP_DIR}/${NOW}.sql.gz"
echo "BACKUP ${BACKUP_DIR}/${NOW}.sql.gz $?"
#删除5天前备份
find ${BACKUP_DIR} -ctime +5 -name "*.gz" -exec rm -rf {} \;
#编辑任务调度文本
crontab -e
#每天凌晨2:30定时调用备份脚本
30 2 * * * sh /usr/sbin/mysql_db_backup.sh
指令 | 说明 |
find | -ctime N -N N天以内创建的文件。 +N N 天以外创建的文件。 N 正好N天创建的文件 -name PATTERN 使用正则匹配查找文件 * 通配符 -exec COMMAND 找到文件后执行COMMAND指令 rm -rf 删除 {} 查询结果 \; 结束符 |
$? | 1. 获取上一个命令的退出状态(即执行结果) 成功返回 0 失败返回 1 2. 或返回上一个函数的返回值 |