研究了一下项目运维中自动备份数据库到阿里云OSS的步骤,记录一下阿里云后台和服务器的一系列操作。
阿里云后台准备工作
进入阿里云对象存储OSS后台,先开一个Bucket,命名为“brain-backup-db”。因只是做备份数据库用,所以存储类型选最便宜的“归档存储”即可,其他选项用不着的就都不开。关于费用,本文最后一节会做介绍。
然后进入这个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。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。