MySql 定时备份脚本,数据保留14天

以下是一个简单的 MySQL 定时备份脚本,它使用

1
crontab
来定期执行备份任务,并将备份数据保留14天:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash

# 设置 MySQL 登录信息
MYSQL_USER="your_mysql_username"
MYSQL_PASSWORD="your_mysql_password"
MYSQL_DATABASE="your_database_name"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y-%m-%d)
TIME=$(date +%H-%M-%S)

# 创建备份目录和文件名
mkdir -p $BACKUP_DIR/$DATE
FILENAME=$BACKUP_DIR/$DATE/$MYSQL_DATABASE-$TIME.sql.gz

# 使用 mysqldump 命令备份数据库,并压缩成 gzip 格式
mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD --databases $MYSQL_DATABASE | gzip > $FILENAME

# 删除超过14天的备份文件
find $BACKUP_DIR/* -mtime +14 -exec rm {} \;

这个脚本做了以下事情:

  1. 获取当前日期和时间。
  2. 使用
    1
    mkdir
    命令创建备份目录和文件名。
  3. 使用
    1
    mysqldump
    命令备份数据库,并将结果压缩成 gzip 格式。
  4. 使用
    1
    find
    命令查找超过14天的备份文件,并将其删除。
  5. 最后输出一条备份完成信息。

你可以将以上代码保存到一个脚本文件中,例如

1
mysql_backup.sh
,然后把脚本设置为可执行


1
chmod +x backup_mysql.sh

然后将其添加到

1
crontab
中以每天凌晨 2 点执行备份任务。


1
crontab -e

1
crontab
中添加以下行:


1
0 2 * * * /path/to/mysql_backup.sh >/dev/null 2>&1 && echo "Backup scheduled for tomorrow at 2am."

这将在每天凌晨 2 点执行脚本,并输出一条备份计划信息。备份数据将被保留14天。