阿里云轻量服务器网站备份脚本备份数据库到对象存储OSS图文教程

最近搬主题在入手了阿里云轻量服务器后,发现性价比不错,而且还很稳定。将自己的一个站点放到了上面,接下来需要考虑每天自动备份网站数据库的问题。对于搬主题来说,能不用插件就不用插件,直接一个脚本解决的问题。

这里搬主题因为考虑到对象存储的私密性,因此考虑到将网站数据自动备份到阿里云对象存储OSS上面,接下来就是分享这些操作的图文教程。

自动备份思路

总体的流程大概如下:在阿里云轻量服务器上挂载对象存储OSS—>编写自动备份脚本—>每日自动备份

对于阿里云轻量服务器,这里搬主题比较推荐香港区域,确实比较稳定。可以参考如下文章:

阿里云香港轻量云服务器性能网络2022最新评测
2022年阿里云上云采购季攻略 35元/年最高优惠5000元

接下来先介绍如何挂载阿里云对象存储OSS。

挂载阿里云的对象存储OSS

既然我们要挂载对象存储OSS,那么就要考虑先购买阿里云的对象存储OSS。目前阿里云推出优惠,购买一年40G标准对象存储,只要8.1元/年。

存储包挂载介绍和ESC共性:

  • OSS与同地域的全部ecs内网互通 OSS内网IP是特殊IP段 全阿里云的vpc/经典机器都可以访问任一一个该地区的OSS 所以OSS和ecs只有地域关系;
  • OSS内网传输不收流量费 但是收API操作费 这个费用包括但不限于读写次数 1块钱100W次;
  • OSS外网传输费是0.3块多钱/GB;
  • 国内版OSS可以内网给国际站/日本站的机器用 只要你是OSS和ecs相同地区的就OK。

购买OSS

简单来说,阿里云轻量走OSS对象存储内网流量不要钱,操作费基本等同于无的价格。因此只要购买对象存储OSS容量即可。

>>>阿里云对象存储OSS独家8.1元/年活动链接<<<

购买的时候记得选择和自己轻量服务器同区域的。比如你的阿里云轻量服务器是香港的,那就选择香港区域的对象存储,如果是上海的,那就选择上海区域的对象存储。如果是国内的话,直接选择大陆通用,不过建议还是同区域会更好。

确认无误后,付款即可。

创建Bucket

购买完成后,就可以前往阿里云的后台对象存储的界面创建Bucket了。

在此快速购买存储包然后进入控制台创建bucket:填写名称及选择区域,记得选择和自己阿里云轻量服务器同样的区域。

安装OSSFS

用SSH登陆自己的阿里云轻量服务器,先输入如下的命令

wget https://github.com/aliyun/ossfs/releases/download/v1.80.5/ossfs_1.80.5_centos7.0_x86_64.rpm

centos7为例,其他系统版本ossfs下载:https://github.com/aliyun/ossfs/releases

安装:

yum localinstall ossfs_1.80.5_centos7.0_x86_64.rpm

如果是Ubuntu/Debian系统安装:

首先安装gdebi,然后使用gdebi安装。

sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi your_ossfs_package

挂载OSS

获取 AccessKeyId/Secret

登录阿里云控制台。单击页面左上方的管理控制台。将鼠标移至右上方的“账号管理”图标选择accessKeys,然后创建key

注意:提示信息中的云账号AccessKey是您访问阿里云API的密钥,具有该账户完全的权限,请务必妥善保管。请勿通过任何方式(如Github等)将AccessKey公开至外部渠道,以免被恶意利用而造成安全威胁。强烈建议您遵循阿里云安全最佳实践,使用RAM子用户AccessKey来进行API调用。

挂载过程:

挂载过程看起来很繁琐,实际上就几步就操作完成了,请耐心看完。

设置bucket name(购买后创建的bucket名称) 和 AccessKeyId/Secret信息,将其存放在/etc/passwd-ossfs 文件中,注意这个文件的权限必须正确设置,建议设为640

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

my-bucket:my-access-key-id:my-access-key-secret 对应为 bucket名称 : AccessKey ID : Access Key Secret

OSS bucket挂载到指定目录:

ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

oss endpoint地址可以在OSS控制台找到 一定要选择内网地址。

示例(以阿里云香港区域轻量为例):

my-bucket这个bucket挂载到/tmp/ossfs目录下,AccessKeyIdabcdeAccessKeySecret123456oss endpointoss-cn-hongkong-internal.aliyuncs.com

echo my-bucket:abcde:123456 > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hongkong-internal.aliyuncs.com

挂载成功后可以通过如下命令查看:

df -h

root@centos:~#  df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        486M     0  486M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M  6.7M  490M   2% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/vda1        25G  2.5G   21G  11% /
tmpfs           100M     0  100M   0% /run/user/0
ossfs           256T     0  256T   0% /www/wwwroot/default/ossfs

这样就算挂载成功了。

设置开机自动挂载

Q: 如何开机自动挂载ossfs?

  • Step 1 

首先请参考使用说明,把bucket nameaccess key id/secret等信息写入/etc/passwd-ossfs,并将该文件权限修改为640。

echo your_bucket_name:your_access_key\_id:your_access_key_secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
  • Step 2 

接下来针对不同的系统版本,设置方式有所不同

  • /etc/init.d/目录下建立文件ossfs
cd /etc/init.d/
touch ossfs

查看文件是否创建成功,用ls命令查看,创建成功后直接用vi命令编辑

  • 接下来把以下代码中的内容拷贝到这个新文件中。并将其中的your_xxx内容改成您自己的信息。
#! /bin/bash
#
# ossfs      Automount Aliyun OSS Bucket in the specified direcotry.
#
# chkconfig: 2345 90 10
# description: Activates/Deactivates ossfs configured to start at boot time.

ossfs your_bucket your_mountpoint -ourl=your_url -oallow_other

注意改为自己对应的内容

  • 执行命令:chmod a+x /etc/init.d/ossfs
  • 上述命令是把新建立的ossfs脚本赋予可执行权限。您可以执行该脚本,如果脚本文件内容无误,那么此时oss中的bucket已经挂载到您指定的目录下了。
  • 执行命令:chkconfig ossfs on
  • 上述命令是把ossfs启动脚本作为其他服务,开机自动启动。
  • /etc/fstab中加入下面的命令
ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0 0

设置自动备份脚本

以上主要是挂载对象存储的过程。接下来我们要进行自动备份脚本的操作。可以重新登录SSH了,尽量根据自己需要将备份脚本放到root目录或者自己想要设置的目录内。

这里主要使用的是一键备份VPS的脚本backup.sh

backup.sh的主要特点有:

1、支持 MySQL/MariaDB/Percona 的数据库全量备份或选择备份;
2、支持指定目录或文件的备份;
3、支持加密备份文件(需安装 openssl 命令,可选);
4、支持上传至 Google Drive(需先安装 gdrive 并配置,可选);
5、支持在删除指定天数本地旧的备份文件的同时,也删除 Google Drive 上的同名文件(可选)。

下载该脚本并赋予执行权限:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/backup.sh
备用:https://raw.githubusercontent.com/freehao123/across/master/backup.sh
chmod +x backup.sh

备份脚本的内容配置

直接vi编辑backup.sh文件,相关的变量名说明:

ENCRYPTFLG (加密FLG,true 为加密,false 为不加密,默认是加密)
BACKUPPASS (加密密码,重要,务必要修改)
LOCALDIR (备份目录,可自己指定)
TEMPDIR (备份目录的临时目录,可自己指定)
LOGFILE (脚本运行产生的日志文件路径)
MYSQL_ROOT_PASSWORD (MySQL/MariaDB/Percona 的 root 用户密码)
MYSQL_DATABASE_NAME (指定 MySQL/MariaDB/Percona 的数据库名,留空则是备份所有数据库)
BACKUP (需要备份的指定目录或文件列表,留空就是不备份目录或文件)

LOCALAGEDAILIES (指定多少天之后删除本地旧的备份文件,默认为 7 天)
DELETE_REMOTE_FILE_FLG (删除 Google Drive 或 FTP 上的备份文件 FLG,true 为删除,false 为不删除)

FTP_FLG (上传文件至 FTP 的 FLG,true 为上传,false 为不上传)
FTP_HOST (连接的 FTP 域名或 IP 地址)
FTP_USER (连接的 FTP 的用户名)
FTP_PASS (连接的 FTP 的用户的密码)
FTP_DIR (连接的 FTP 的远程目录,比如: public_html)

※ MYSQL_DATABASE_NAME 是一个数组变量,可以指定多个。举例如下:

MYSQL_DATABASE_NAME[0]=”phpmyadmin”
MYSQL_DATABASE_NAME[1]=”test”

※ BACKUP 是一个数组变量,可以指定多个。举例如下:

BACKUP[0]=”/data/www/default/test.tgz”
BACKUP[1]=”/data/www/default/test/”
BACKUP[2]=”/data/www/default/test2/”

如果只是备份数据库的话,可以参考如下的一些编写,就填这几个就行了。

执行以下命令开始备份:

./backup.sh

我们可以在我们设置的路径下看到已经备份的文件和数据库。

如何设置每日自动备份呢?

接下来使用crontab -e命令进入定时任务。

输入命令

30 3 * * * /root/backup.sh

代表每天凌晨3点30分自动执行脚本一次,即自动备份一次。

然后保存即可。

千百度
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容