- 编写shell脚本
#!/bin/bash
# 连接 MySQL 数据库的用户名和密码
DB_USER="root"
DB_PASS="Ytxzs123456."
# 数据库主机名或 IP 地址
HOSTNAME="127.0.0.1"
# 需要备份的数据库名称
DB_NAME="curtain_aide"
# 备份文件保存路径
BACKUP_DIR="/home/work/dbBackup"
# 备份文件名前缀
PREFIX="db-backup"
# 保留最新的 N 个备份文件,删除其他旧备份
MAX_BACKUPS=60
# 创建备份目录(如果不存在)
# mkdir -p $BACKUP_DIR
# 生成备份文件名
BACKUP_FILENAME=${PREFIX}-$(date +%F-%H-%M-%S).sql.gz
# 使用 mysqldump 命令导出数据库,并压缩保存到备份目录下
/usr/bin/mysqldump --opt --single-transaction --user="$DB_USER" \
--password="$DB_PASS" --host="$HOSTNAME" "$DB_NAME" | gzip > ${BACKUP_DIR}/${BACKUP_FILENAME}
# 列出所有数据库备份文件并按创建时间降序排序,以准备执行删除旧备份的操作
ALL_BACKUPS=($(ls -t ${BACKUP_DIR}/${PREFIX}*.sql.gz))
# 计算需要保留的最新备份文件数
NUM_BACKUPS=${#ALL_BACKUPS[@]}
# 删除超出指定数量的旧备份文件
if [ $NUM_BACKUPS -gt $MAX_BACKUPS ]; then
NUM_DELETED=$((NUM_BACKUPS - MAX_BACKUPS))
for ((i=0; i<$NUM_DELETED; i++)); do
rm ${ALL_BACKUPS[${MAX_BACKUPS}+${i}]}
done
fi
- 修改配置文件
crontab -e : 编辑定时任务(用户可以省略,默认是当前用户)
crontab -l : 查看定时任务(只查看当前用户的定时任务)
# 输入以下内容 每天早上凌晨1点整 执行 相应的脚本
0 1 * * * /bin/bash /home/work/backup.sh
参考 大神博客