通过宝塔面板计划任务自动逻辑备份 RDS MySQL 数据库到 OSS 对象存储

本文将教你如何通过阿里 ECS 自动备份 RDS 数据库并自动存储到 OSS。

前言

今年双十一我在阿里云买了 ECS 云主机 2H4G3M(三年664.2大洋)和 RDS MySQL 5.7 数据库 1H1G(一年19.9大洋),当然这个活动价格是针对新用户的老用户与狗不得参与。

步骤

如何安装系统和宝塔面板我这里就不多说了,只简单介绍一下我 ECS 主机部署的系统环境:
主机系统:Centos 8.2
管理系统:宝塔面板 7.4.5
网站环境:Nginx 1.19.4 、PHP 7.4 、Redis 6.0.9 、本机无需安装 MySQL 数据库(因为有 RDS MySQL 5.7 数据库站库分离)

部署好主机环境以后把网站迁移到 ECS 新主机跑起来看看,速度还可以。因为主机带宽只有 3M 所以建议套一层 CDN 做个动静分离,把静态资源都缓存到 CDN 边缘节点就近访问。

再来说说如何定时自动备份网站数据,宝塔面板后台软件商店找到阿里云 OSS 插件安装,然后去阿里云官网开通 OSS 对象存储服务,用阿里云 OSS 的内网地域节点添加到宝塔面板刚刚安装到阿里云 OSS 插件中。

阿里云 OSS 插件设置截图

此时我们就可以通过宝塔面板计划任务创建自动备份任务了,但是由于我们的数据库是用的阿里云 RDS MySQL ,所以在宝塔计划任务中只能添加网站文件的备份无法添加 RDS 数据库的备份计划。这时我们需要一个脚本通过 ECS 主机内网把 RDS 数据库备份到 ECS 主机上,然后再通过阿里云 OSS 插件把备份好的 RDS 数据库存储到阿里云 OSSS。

dnf install git -y
cd /www/wwwroot/www.otakusay.com
git clone https://github.com/daniloaz/myphp-backup.git
cd /myphp-backup
vi /myphp-backup.php //填写RDS数据库中的连接信息

我把脚本下载到了网站根目录中,编辑 /www/wwwroot/www.otakusay.com/myphp-backup/myphp-backup.php 文件,填写 RDS 数据库的相关信息。
注意:网站根目录下的 /myphp-backup 文件夹此时前台是可以访问的,我们需要设置网站配置文件添加 Nginx 规则禁止前台访问。

#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|myphp-backup)
{
    return 404;
}

最后添加两条宝塔计划任务,时间相隔1分钟目的是为了先把 RDS 数据库备份到网站根目录 /myphp-backup 文件夹内,然后再打包备份网站整体数据并通过 ECS 内网上传到 OSS 存储。

宝塔面板计划任务截图
//第一条宝塔面板计划任务
//任务类型:Shell脚本,
//任务名称:备份数据库[www_otakusay_com]
//执行周期:每天 3时 59分
//脚本内容:
rm -rf /www/wwwroot/www.otakusay.com/myphp-backup/myphp-backup-files && cd /www/wwwroot/www.otakusay.com/myphp-backup; php myphp-backup.php
//第二条宝塔面板计划任务
//任务类型:备份网站
//任务名称:备份网站[www.otakusay.com]
//执行周期:每天 4时 00分
//备份网站:www.otakusay.com 备份到:阿里云OSS 保留最新:30份
//排除规则:可以不填写

最后

不要忘记修改站点配置文件禁止前台访问 /myphp-backup 文件夹,否则你打包的数据库是有可能被前台访客下载的,当然你也可以把 /myphp-backup 文件夹放在站点根目录之外的其他地方这样更安全。

Github项目地址:https://github.com/daniloaz/myphp-backup

给TA打赏
共{{data.count}}人
人已打赏
VPS教程

宝塔面板安装第三方 PHP 扩展 libsodium sodium

2020-10-19 13:34:06

VPS教程

教你如何去除宝塔面板后台首页强制要求绑定账号的限制

2020-11-7 23:18:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索