远程备份数据库文件,阿里云 OSS 安装与命令使用指南

Lunvps
pENeBMn.png

安装阿里云OSS

安装官方文档,下载并安装程序。命令如下:

sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash

安装过程中需要使用解压工具(unzip、7z)对包进行解压,请提前安装其中一个解压工具,安装完成后ossutil会安装在/usr/bin/目录下。

配置ossutil

输入配置命令:

ossutil config

根据提示设置配置文件路径,文件名可以包括路径(默认为:/root/.ossutilconfig,回车则使用默认路径,建议回车默认!!!)

然后设置语言,请输入语言CH或者EN(注意大写),工具使用的语言默认和操作系统一致,config命令设置成功后该配置项才会生效。

远程备份数据库文件,阿里云 OSS 安装与命令使用指南

确认语言后,输入最重要的AccessKey信息,最后一个stsToken可以不填,登录阿里云账号,从右上角头像获取相关信息,如图:

远程备份数据库文件,阿里云 OSS 安装与命令使用指南

根据提示进行设置,复制粘贴即可,后续如果还需要修改配置文件,可以在[/root/.ossutilconfig]中修改:

[Credentials]
language=CH
accessKeyID=******wwwliblogcn******
endpoint=https://oss-cn-beijing.aliyuncs.com
accessKeySecret=********wwwliblogcn*****

这里特别说明一下关于[endpoint]的region设置,第一次安装配置后就出错了,不管怎么上传都一直弹出错误提示,原因是这个设置不对,大概是这样的:

错误:oss:服务返回错误:StatusCode=400,ErrorCode=InvalidBucketName,ErrorMessage="指定的存储桶无效。",RequestId=65F1345AF15BB23733AEA62D,Ec=0015-00000001

附上阿里云公有云OSS Region与Endpoint对照表:点击链接直达,找到后需要在后面加上[ ]或者[ ]。

到此阿里云OSS的安装基本就完成了,最后我们来验证一下ossutil是否安装成功,命令如下:

ossutil

如果屏幕上输出了ossutil支持的命令,则说明ossutil安装成功,如图所示,有很多文件,只抓取了上面一部分:

远程备份数据库文件,阿里云 OSS 安装与命令使用指南

看到这个内容证明安装已经完成,功能也已经集成。接下来我们修改脚本文件,找到昨天设置的【backup.sh】文件。如果不知道昨天写了什么,可以查看《记录Linux定时备份MySQL数据库文件,详细图文教程,仅限新手和专家》,如果懒得看,就自己新建一个脚本文件就行了。相关代码如下:

#!/bin/bash
# 备份的数据库名
DB_NAME="zbp_1012"
# 设置备份路径  
BACKUP_PATH="/www/b"
OSS_BUCKET="OSSbucket名称"
OSS_PREFIX="OSS存储目录"
# 生成备份文件名
BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).sql"
# 使用mysqldump备份数据库  
/usr/bin/mysqldump $DB_NAME > $BACKUP_PATH/$BACKUP_FILE
# 上传备份文件到OSS
/usr/bin/ossutil64 cp $BACKUP_PATH/$BACKUP_FILE oss://$OSS_BUCKET/$OSS_PREFIX/$BACKUP_FILE
# 删除旧的备份文件(保留最近3天的备份)
find $BACKUP_PATH -type f -mtime +3 -name "backup_*.sql" -exec rm {} \;
# 删除旧的远程备份文件(保留最近3天的备份)
find_and_delete_old_backups() {
  local backup_path="$1"
  local current_date=$(date +%s)
  ossutil ls "$backup_path" | awk 'NR > 1 {print $2}' | while read -r line; do
    local file_date=$(echo "$line" | sed 's/.*backup_\([0-9]*\)_.*/\1/')
    local file_age=$((current_date - file_date))
    if [ $file_age -gt 259200 ]; then
      ossutil rm "$line"
    fi
  done
}
find_and_delete_old_backups "$BACKUP_PATH"

比昨天的本地备份多了几个远程上传和删除的命令,备份路径改成你实际需要的路径,[/usr/bin/ossutil64]路径就可以

which ossutil

查询的时候一定要把返回的路径替换成你自己的,一般默认的好像都是一样的。全部修改完成后,保存文件,运行以下命令:

sed -i 's/\r$//' /www/b/backup.sh

该命令会使用sed工具将脚本文件中的DOS格式换行符(\r)替换为空格,从而转换为Unix格式。命令运行后不会有任何提示。然后运行脚本,命令代码:

bash /www/b/backup.sh

将上面两个路径替换成你的实际路径,然后看图:

远程备份数据库文件,阿里云 OSS 安装与命令使用指南

如果效果如图,就是正常的。本地备份和OSS远程备份已经完成,进度随时可以看到,上传速度不是很快,但是够用了。好了,到此为止Linux的定时备份功能和远程OSS备份功能已经完成了,有些人可能用的是腾讯云或者其他云服务,代码基本一样,但是安装云存储可能会有些不同,自己研究一下吧。哦对了,有些人可能会有疑问,至少我一开始就有这个疑问,就是我明明设置了只存3份,为什么云存储和本地会有这么多文件呢?原因是我们预留了天数,比如我们在代码里设置了3天,那么我们今天手动测试了N次备份,所以定时任务还是会按计划备份的,但是这些都是以天为单位的,不会超过3天,所以可能会有多个,过期之后应该就正常了。我们拭目以待吧。 如果有问题我们以后再讨论,再见~~~

pENeBMn.png
文章版权声明:除非注明,否则均为论主机评测网原创文章,转载或复制请以超链接形式并注明出处。

pENeBMn.png

目录[+]