跳到主要内容

定时任务备份数据库

将这个脚本保存为一个文件,比如 backup_script.sh,然后给它执行权限:

chmod +x backup_script.sh
#!/bin/bash

# 检查是否已安装 mysqldump,如果未安装则自动安装
if ! command -v mysqldump &> /dev/null; then
echo "mysqldump 未安装,开始安装..."
# 根据你的 Linux 发行版选择合适的安装命令
# 例如,如果是基于 Debian/Ubuntu 的系统,可以使用:
# sudo apt-get install mysql-client
# 如果是基于 Red Hat/CentOS 的系统,可以使用:
# sudo yum install mysql
# 根据实际情况进行修改
echo "mysqldump 安装完成"
fi

# 配置数据库信息
DB_HOST="localhost"
DB_USER="your_db_user"
DB_PASS="your_db_password"
DB_NAME="your_db_name"

# 配置阿里云 OSS 信息
OSS_BUCKET="your_oss_bucket"
OSS_ACCESS_KEY="your_oss_access_key"
OSS_SECRET_KEY="your_oss_secret_key"
OSS_ENDPOINT="your_oss_endpoint"

# 备份文件名
BACKUP_FILENAME="$(date +'%Y%m%d%H%M%S').sql"

# 检查是否已安装 ossutil,如果未安装则自动下载安装
if ! command -v ossutil &> /dev/null; then
echo "ossutil 未安装,开始下载安装..."
curl -O https://gosspublic.alicdn.com/ossutil/1.7.0/ossutil64
chmod +x ossutil64
mv ossutil64 /usr/local/bin/ossutil
echo "ossutil 安装完成"
fi

# 执行数据库备份
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILENAME

# 检查备份是否成功
if [ $? -ne 0 ]; then
echo "数据库备份失败"
exit 1
fi

# 使用 ossutil 上传备份文件到阿里云 OSS
ossutil cp $BACKUP_FILENAME oss://$OSS_BUCKET/$BACKUP_FILENAME \
-e $OSS_ENDPOINT \
-i $OSS_ACCESS_KEY \
-k $OSS_SECRET_KEY

# 检查上传是否成功
if [ $? -ne 0 ]; then
echo "上传到阿里云 OSS 失败"
exit 1
fi

# 删除本地备份文件
rm $BACKUP_FILENAME

echo "数据库备份并上传成功"

接下来,你可以使用 crontab 来设置定时执行这个脚本。比如,如果你想每天凌晨 2 点执行一次备份,可以执行以下命令来编辑你的定时任务:

crontab -e

然后在编辑器中添加一行:

0 2 * * * /path/to/backup_script.sh