一个简单的Mysql备库脚本
一、创建脚本
1.shell脚本如下:
#!/bin/bash
################################################################
##
## MySQL Database Backup Script
## Author: 无味蓝染
## Last Update: 20230620
##
################################################################
################## 参数 #######################################
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
KEEPTIME=7 ## 备份文件保存时间
DB_BACKUP_PATH=/data/backup/mysql
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=mysql
MYSQL_PASSWORD=mysql
DB_NAME=testdb
################## 备份 ########################################
if [ ! -d ${DB_BACKUP_PATH} ]; then
mkdir -p ${DB_BACKUP_PATH}
fi
echo "Backup started for database - ${DB_NAME}"
mysqldump -h ${MYSQL_HOST} \
-P ${MYSQL_PORT} \
-u ${MYSQL_USER} \
-p${MYSQL_PASSWORD} \
${DB_NAME} | gzip > ${DB_BACKUP_PATH}/${DB_NAME}-${YESTERDAY}.sql.gz
if [ $? -eq 0 ]; then
echo "Mysql backup successfully completed"
else
echo "Error found during backup"
exit 1
fi
##### 删除{KEEPTIME}天前备份的文件(防止数据多了太占内存) ######
##### 看其最后访问时间是否在{KEEPTIME}天以前(-atime) ########
find $DB_BACKUP_PATH -name "*.sql.gz" -atime +$KEEPTIME -exec rm -rf {} \;
### End of script ####
2.赋予脚本执行权限
$ chmod +x mysql_dump.sh
二、创建Linux 定时任务
执行crontab -e 命令,添加如下定时任务:
00 00 * * * /bin/sh /data/sh/mysql_dump.sh
每天凌晨自动备份昨天的数据,并清除30天之前的备份文件。
最后,请监控上述脚本一段时间,已确保脚本的正确性哦~