自动备份数据库
我们将设置一个每天凌晨 2:00 执行备份的 Cron 任务。
-
首先确保您已经安装了 MySQL 服务:
sudo apt update sudo apt install mysql-server
-
创建备份目录:
sudo mkdir /opt/mysql_backups sudo chown mysql:mysql /opt/mysql_backups
这里我们创建了一个
/opt/mysql_backups
目录来存放备份文件,并将它的所有者设置为mysql
用户和组。 -
创建备份脚本文件:
sudo vi /opt/mysql_backup.sh
在文件中添加以下内容:
#!/bin/bash # 数据库连接信息 DB_HOST="localhost" DB_USER="root" DB_PASS="your_root_password" DB_NAME="blog" BACKUP_DIR="/opt/mysql_backups" # 备份文件名 BACKUP_FILE="${DB_NAME}_$(date +%Y%m%d_%H%M%S).sql.gz" # 执行备份 mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/$BACKUP_FILE echo "MySQL backup completed: $BACKUP_DIR/$BACKUP_FILE"
请记得将
DB_USER
和DB_PASS
替换为您实际的 MySQL root 用户和密码。 -
设置脚本权限:
sudo chmod +x /opt/mysql_backup.sh
-
创建 Cron 任务:
sudo crontab -e
在文件末尾添加以下行:
0 2 * * * /opt/mysql_backup.sh
这个 Cron 任务会在每天凌晨 2:00 执行
/opt/mysql_backup.sh
脚本。
现在已经成功设置了自动备份 blog
数据库的 Cron 任务。备份文件会被压缩为 .sql.gz
格式,存储在 /opt/mysql_backups
目录下。
如果需要手动执行备份,可以直接运行 /opt/mysql_backup.sh
脚本。
修改支持备份blog1 blog2等多个数据库
好的,让我来为您修改一下备份脚本,以支持同时备份多个数据库。
-
编辑备份脚本文件:
sudo vi /opt/mysql_backup.sh
-
修改脚本内容如下:
#!/bin/bash # 数据库连接信息 DB_HOST="localhost" DB_USER="root" DB_PASS="your_root_password" DB_NAMES=("blog1" "blog2") BACKUP_DIR="/opt/mysql_backups" # 遍历需要备份的数据库 for DB_NAME in "${DB_NAMES[@]}" do # 备份文件名 BACKUP_FILE="${DB_NAME}_$(date +%Y%m%d_%H%M%S).sql.gz" # 执行备份 mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/$BACKUP_FILE echo "MySQL backup completed: $BACKUP_DIR/$BACKUP_FILE" done
在这个修改后的脚本中:
DB_NAMES
数组包含了需要备份的数据库名称。您可以根据实际情况添加或删除数据库名称。- 脚本会遍历
DB_NAMES
数组中的每个数据库,并为每个数据库执行备份操作。 - 备份文件会以
数据库名_时间戳.sql.gz
的格式命名,存储在/opt/mysql_backups
目录下。
-
设置脚本权限:
sudo chmod +x /opt/mysql_backup.sh
-
更新 Cron 任务:
sudo crontab -e
修改 Cron 任务为:
0 2 * * * /opt/mysql_backup.sh
这样就会在每天凌晨 2:00 执行备份脚本,同时备份
blog1
和blog2
两个数据库。