LNMP定期自动备份MySQL数据库到阿里云OSS详细步骤

本站所有文章均为博主人工写作,绝无AI辅助成分,请放心参阅。

研究了一下项目运维中自动备份数据库到阿里云OSS的步骤,记录一下阿里云后台和服务器的一系列操作。

阿里云后台准备工作

进入阿里云对象存储OSS后台,先开一个Bucket,命名为“brain-backup-db”。因只是做备份数据库用,所以存储类型选最便宜的“归档存储”即可,其他选项用不着的就都不开。关于费用,本文最后一节会做介绍。
创建OSS Bucket
OSS Bucket列表

然后进入这个Bucket的概览页面,找到外网访问的Endpoint,记录下来。

如果你的ECS和OSS是在同一地区的,也可以根据实际网络情况,这里的Endpoint选第二或第三个,存储速度飞快。特别说明,一般购买阿里云ECS,默认网络是经典网络,也就是说同区域的ECS数据备份到OSS上,大部分情况下可以选绿框圈出的那个;跨区域或者用的是非阿里云ECS服务器的,则选红框圈出的。


进入Bucket的基础设置页面,新增一条生命周期规则如下,定为自动删除超过30天的文件,避免容量过大产生浪费:

接下来进入阿里云RAM访问控制后台,添加一个新的用户,访问方式这里勾选“编程访问”。

如图赋予这个账号OSS管理权限,这个账号将在阿里云ECS上使用。

进入用户详情页面,在用户AccessKey区域下,创建AccessKey。

记录下这个AccessKey ID和AccessKey Secret,后面在服务器软件设置的时候要用。

自此,有以下3个变量在后面的服务器设置上会用得着:
– Endpoint
– AccessKey ID
– AccessKey Secret

在服务器上安装并设置阿里云OSS命令行工具ossutil

具体安装和配置可以查看阿里云官方文档:https://help.aliyun.com/document_detail/120075.html
本文只记录用得着的步骤。
登录服务器,运行命令安装

wget http://gosspublic.alicdn.com/ossutil/1.7.3/ossutil64                           

赋予工具权限

chmod 755 ossutil64

执行配置

./ossutil64 config

前面几个选项都是一路回车按默认配置即可,到了endpoint开始这3项,就用第一步获取的值填充;最后一条stsToken什么也不填直接回车。

自此安装和配置完毕,可以直接测试一下从服务器存一个文件到OSS上

比如我服务器有一张图片/home/backup/1.jpg 要存到OSS上,就可以用以下命令

./ossutil64 cp /home/backup/1.jpg oss://brain-backup-db                

提示上传成功

到阿里云OSS里看一下,文件已经在那里了

编写服务器脚本,定时备份数据库并上传到阿里云OSS

有了以上准备工作,开始编写脚本:

Backup_Home="/home/backup/"
MySQL_Dump="/usr/local/mysql/bin/mysqldump"
Backup_Database=("website_db_name")

######~Set MySQL UserName and password~######
MYSQL_UserName='username'
MYSQL_PassWord='password'

#Values Setting END!
TodayDBBackup=db-*-$(date +"%Y%m%d").sql
OldDBBackup=db-*-$(date -d -3day +"%Y%m%d").sql

Backup_Sql()
{
    ${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Backup_Home}db-$1-$(date +"%Y%m%d").sql
    /root/ossutil64 cp ${Backup_Home}db-$1-$(date +"%Y%m%d").sql oss://brain-backup-db
}

if [ ! -f ${MySQL_Dump} ]; then  
    echo "mysqldump command not found.please check your setting."
    exit 1
fi

if [ ! -d ${Backup_Home} ]; then  
    mkdir -p ${Backup_Home}
fi

echo "Backup Databases..."
for db in ${Backup_Database[@]};do
    Backup_Sql ${db}
done

echo "Delete old backup files..."
rm -f ${Backup_Home}${OldDBBackup}

把以上代码保存为文件backup_db.sh,并上传到服务器/etc/cron.daily/
赋予执行权限

chmod +x /etc/cron.daily/backup_db.sh 

这样就能每天备份一次指定的数据库到阿里云OSS了

此脚本改编自LNMP自带工具包里的备份脚本,在服务器上每3天自动清理一次备份文件,每天自动上传一次最新的数据库备份到阿里云OSS上。

关于费用

之所以选择归档存储,就是因为它费用便宜。你还可以预先买个资源包,那费用就更便宜了,100G的容量,当前费用每年只要27元。

假如你购买的是低频存储,价格大约相当于归档存储的2.5倍,而标准存储的价格大约是归档存储的3倍。不过标准存储有一个更加优惠的套餐,是40G – 9元/年。这个套餐是必买的,因为我们ECS会需要做定期快照,这40G就是给快照用的。要不然你的ECS不小心开了快照,很快就会发现账户费用在一点一点地扣除,新手可能还会产生困惑。购买阿里云OSS的套餐可以点击 这个链接,滚动到下面看到“对象存储OSS”就是了。

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/2479.html。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注