前言
数据库异地备份,想必大家都知道,如果有时候服务器上不去了,那么你在服务器本机中备份再多的数据库也是白搭;
或者服务器被黑客给勒索了,那么他会加密你所有的sql
以及其他类型的文件,所以备份还是没有用几个;
所以,我们还是得异地备份,双保险打开,遇到突发情况,也不会那么被动。
脚本文件
那么,如何实现将linux
服务器中的数据库备份,并且上传到别的地方呢,我这边以上传到七牛云为例,其他的也都差不多。
下面是我们整个最全的脚本,
#!/bin/bash# 数据库备份脚本# ******配置部分*****# 数据库用户名DB_USER="" # 数据库密码,请替换为您的密码 DB_PASSWORD="" # 备份文件存放目录BACKUP_DIR="/home/project/dbBackUp/sql" # gzip压缩等级COMPRESSION_LEVEL=9
# 保留备份的天数 KEEP_DAYS=7
# 获取当前时间戳 DATE=$(date +"%Y%m%d%H%M%S")
# 日志文件路径LOG_FILE="$BACKUP_DIR/backup.log" #当前时间datetime1=$(date +"%Y%m%d")# qshell的安装路径,根据实际情况调整 ,安装命令如下# $ wget https://github.com/qiniu/qshell/releases/download/v2.12.0/qshell-v2.12.0-linux-386.tar.gz# $ tar -xvf qshell-v2.12.0-linux-386.tar.gz# $ mv qshell /usr/bin/# $ chmod +x /usr/bin/qshellQSHELL_DIR="/usr/bin"# 替换为您的AccessKeyACCESS_KEY="" # 替换为您的SecretKey SECRET_KEY=""# 替换为您的存储桶名称 BUCKET_NAME="mxx"# 存储桶所在的区域,例如: z0, z1, z2, asiaz0等 BUCKET_ZONE="cn-east-2" # 创建备份目录如果它不存在mkdir -p "$BACKUP_DIR"# 指定要备份的数据库列表DATABASES="blog_new wechatbot wewe-rss" # 请替换为您的数据库名称,多个数据库之间用空格分隔# 开始备份for DB in $DATABASES; do
# 备份单个数据库
mysqldump -u "$DB_USER" -p"$DB_PASSWORD" --databases "$DB" --single-transaction --quick --lock-tables=false --routines --triggers > "$BACKUP_DIR/${DB}_$DATE.sql"
# 压缩备份文件
gzip -$COMPRESSION_LEVEL "$BACKUP_DIR/${DB}_$DATE.sql"
# 记录备份日志
echo "备份 $DB 数据库 $DATE" >> "$LOG_FILE"
#文件路径
FILE_PATH="$BACKUP_DIR/${DB}_$DATE.sql.gz"
# 文件名称
FILE_NAME="${DB}_$DATE.sql.gz"
echo "开始上传文件:$FILE_PATH下的$FILE_NAME文件 到七牛云存储桶: $BUCKET_NAME"
# 使用qshell进行认证
"$QSHELL_DIR/qshell" account "$ACCESS_KEY" "$SECRET_KEY" muxiongxiong > /dev/null
# 上传文件到七牛云,参数分别是(桶的名称、备份的文件名、文件全路径)
"$QSHELL_DIR/qshell" rput "$BUCKET_NAME" "dbBackUpYeCaoYun/$datetime1/$FILE_NAME" "$FILE_PATH" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
echo "$FILE_PATH 上传成功" >> "$LOG_FILE"
echo "上传成功"
else
echo "$FILE_PATH 上传失败" >> "$LOG_FILE"
echo "上传失败"
fidoneecho "删除$keepDay天前的备份文件" >> "$logFile"# 删除旧备份,保留最近$KEEP_DAYS天的备份find "$BACKUP_DIR" -name "*.gz" -type f -mtime +$KEEP_DAYS -exec rm {} \;# 脚本执行结束echo "备份完成" >> "$LOG_FILE"echo "备份完成"sh
shell脚本文件说明
针对上面的shell
脚本文件,我有必要将关键部分说明一下:
DB_USER
:你的本机数据库的用户名,得要有权限,一般为root
DB_PASSWORD
:数据库的密码
BACKUP_DIR
:数据库文件的备份目录,随便找个目录就可以
ACCESS_KEY
:你七牛云的ak
SECRET_KEY
:你七牛云的sk
BUCKET_NAME
:你存储空间名称
BUCKET_ZONE
:存储桶所在的区域,例如: z0, z1, z2, asiaz0等
剩下的默认即可,然后我们就可以直接把脚本放在服务器上,设置个定时执行即可。
定时执行也很简单,请看下面的命令:
crontab -esh
如果是第一次执行,系统会让你选择一个编辑器,大家自行选择就行。
然后进入添加定时任务就行:
例如,如果你想每天的上午 9 点执行 /path/to/script.sh
,则可以添加以下内容到 crontab
文件中:
0 9 * * * /path/to/script.shsh
##green## ? 至此,就over
啦!
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/7570.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏微信支付宝扫一扫,打赏作者吧~
休息一下~~