数据库自动备份

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

# 设置备份目录
backupDir="/home/backup"

# 设置需要备份的数据库名称和用户名、密码
dbUser="root"
dbPass="123456"
dbName="database_name"

# 设置备份文件名,包括日期和时间
backupFile="$backupDir/${dbName}_$(date +%Y%m%d_%H%M%S).sql"

# 执行备份命令
mysqldump -u$dbUser -p$dbPass $dbName > $backupFile

# 压缩备份文件
gzip -f $backupFile

# 删除7天前的备份文件
find $backupDir -mtime +7 -type f -name "${dbName}*.sql.gz" -delete

脚本的实现流程如下:

  1. 首先设置备份目录和要备份的数据库的用户名、密码和名称。
  2. 然后,设置备份文件名,这里使用了当前日期和时间来命名备份文件。
  3. 接下来,使用mysqldump命令备份数据库并将结果重定向到备份文件中。
  4. 备份完成后,使用gzip命令将备份文件压缩。
  5. 最后,使用find命令删除7天前的备份文件,以避免占用过多磁盘空间。

将这个脚本保存到一个文件中,如backup_db.sh,并添加可执行权限:

1
chmod +x backup_db.sh

通过编辑crontab文件,可以将这个脚本设置为定期自动运行,比如每天执行一次备份。打开终端,输入:

1
crontab -e

在文件末尾添加下面的一行:

1
2
3
0 0 * * * /path/to/backup_db.sh

# 20 12 * * * /path/to/backup_db.sh 表示每天12:20会执行一次脚本。

保存并退出crontab文件,这样在每天午夜0点进行自动备份。如果需要调整自动备份的时间,也可以修改crontab文件中的时间字段。