构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]

简介:
构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]
出处: http://jimmyli.blog.51cto.com/  我站在巨人肩膀上Jimmy Li
作者:Jimmy Li
关键词:网站,电子商务,Shell,自动备份,异地备份
------[连载之电子商务系统架构]访问量超过100万的电子商务网站技术架构
连接:
http://jimmyli.blog.51cto.com/3190309/584992  网站运维异地备份方案及故障应急备用镜像站

上一遍文章详细介绍了服务器安全方面,接下来继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构。针对安全性有多种多样的解决方案,其中数据备份是重中之重的首要工作。
电子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份、异地备份架构。其中Linux服务器的备份方案非常多,本文介绍一个大众化适用的解决方案,通过编写Shell脚本来完成自动备份。本架构包括备份网站文件、数据库,自动本地备份并FTP上传备份脚本,完成相应本地备份、异地备份,实现双层备份解决方案。
 
本文要点:


1.全自动完成网站文件及数据库备份。
2.编写Shell脚本来完成自动备份。
3.同时进行自动本地/异地双备份,FTP上传备份。
4.Linux服务器的备份解决方案。
5.包括备份网站文件,网站程序文件、数据文件,MYSQL数据库。
6.定期定时自动完成备份。定期删除旧备份,这里是自动删除30天前备份,复用利用备份空间。
 

 
目录:

一、准备工作
二、构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图
三、网站及数据库自动本地备份并FTP上传备份Shell脚本,完整的实例;备份脚本进行详细解说,注释。
 

在运营中的电子商务网站,建站之初就一直在重申一定要备份好自己的数据,因为太多的不确定性可能会造成数据库丢失,而且大部分基础服务商也不可能提供每天备份数据。原来本BLOG提供过一个备份方法,只是略微说了一下,可能部分新手会不太好入手。今天分享一个自己的备份脚本。
详见后面附录 
http://jimmyli.blog.51cto.com/3190309/584992  《网站运维异地备份方案及故障应急备用镜像站》
 
一、准备工作:

1.软件安装
需要提前在Linux服务器安装好lftp,lftp功能上比较强大,CentOS直接执行:yum install lftp,Debian执行:apt-get install lftp 。
2.备份目录建立
需要在Linux服务器上创建/home/backup/ 目录。
3.FTP异地备份IP 账号 密码
需要在异地FTP上创建backup目录。
如果Linux服务器上数据库不多的话使用网络基础服务商的存储空间就可以。也可以用专门的备份服务器。可根据应用的大小,数据量的大小,网络状况,和实际的网络资源,硬件资源灵活支配。
 
二、构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图

三、网站及数据库自动本地备份并FTP上传备份Shell脚本
完整的实例:
========================================================================
Shell
  1. #!/bin/bash
  2. #Funciont: Backup website and mysql database
  3. #Author: Jimmy Li
  4. #Website: http://jimmyli.blog.51cto.com/
  5. #IMPORTANT!!!Please Setting the following Values!
  6. Backup_Dir1=/data/wwwroot/jimmyli.blog.51cto.com
  7. MYSQL_UserName=root
  8. MYSQL_PassWord=你的mysql数据库root密码
  9. Backup_Database_Name1=jimmyli.blog.51cto.com
  10. FTP_HostName=jimmyli.blog.51cto.com
  11. FTP_UserName=jimmyli.blog.51cto.com
  12. FTP_PassWord=jimmyli.blog.51cto.com
  13. FTP_BackupDir=jimmyli.blog.51cto.com——backup
  14. TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
  15. TodayDBBackup=db-*-$(date +"%Y%m%d").sql
  16. OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz
  17. OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql
  18. tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir1 --exclude=soft
  19. /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql
  20. rm $OldWWWBackup
  21. rm $OldDBBackup
  22. cd /home/backup/
  23. lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF
  24. cd $FTP_BackupDir
  25. mrm $OldWWWBackup
  26. mrm $OldDBBackup
  27. mput $TodayWWWBackup
  28. mput $TodayDBBackup
  29. bye
  30. EOF

 

========================================================================

下面将备份脚本进行详细解说,注释:
#!/bin/bash
#Funciont: Backup website and mysql database
#Author: Jimmy Li
#Website: 
http://jimmyli.blog.51cto.com/
#IMPORTANT!!!Please Setting the following Values!
######~Set Directory you want to backup~######将下面的目录修改成自己要备份的目录,一般按我的都是在/data/wwwroot/下面所有直接写了需要备份的目录。可以继续再加:Backup_Dir2=你的目录 ,Backup_Dir后面的数字依次递增。如果不足N个,直接删除不需要的就可以,同时修改下面tar zcf 部分。
Backup_Dir1=/data/wwwroot/jimmyli.blog.51cto.com

######~Set MySQL UserName and password~######设置MySQL的用户名和密码,最好是root,其他用户可能因为权限问题无法导出部分数据库。
MYSQL_UserName=root
MYSQL_PassWord=你的mysql数据库root密码
######~Set MySQL Database you want to backup~######设置要部分的数据库,可以继续再加:Backup_Database_Name2=数据库名,Backup_Database_Name后面的数字依次递增。
Backup_Database_Name1=jimmyli.blog.51cto.com

######~Set FTP Information~######设置用来存放备份数据的FTP信息
FTP_HostName=jimmyli.blog.51cto.com   //FTP服务器的IP或者域名
FTP_UserName=jimmyli.blog.51cto.com                //FTP服务器用户名
FTP_PassWord=jimmyli.blog.51cto.com   //FTP服务器用户对应的密码
FTP_BackupDir=jimmyli.blog.51cto.com——backup                    //备份到FTP上的目录,需要提前创建好。
#Values Setting END! ######设置结束
TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
TodayDBBackup=db-*-$(date +"%Y%m%d").sql
OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz
OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql
tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir1 --exclude=soft

###上面为备份网站文件数据,因为我的网站比较零散,而且网站目录下面有些目录属于临时目录并不需要备份,所以可以在上面加上--exclude=不备份的目录。如果在前面加了Backup_Dir2=yourdir,则再加tar zcf /home/backup/www-$Backup_Dir2-$(date +"%Y%m%d").tar.gz -C
/home/wwwroot/ $Backup_Dir2 。如果多余则删除多余行。
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql

###上面为备份MySQL数据库,如果在前面加了Backup_Database_Name2=yourdatabasename,则再加/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 > /home/backup/db-$Backup_Database_Name2-$(date +"%Y%m%d").sql 。如果多余则删除多余行。
rm $OldWWWBackup
rm $OldDBBackup
###删除30天前的备份###
cd /home/backup/
###下面为自动上传部分,不得不说lftp很强大,抛弃ftp吧####
lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF
cd $FTP_BackupDir
mrm $OldWWWBackup
mrm $OldDBBackup
mput $TodayWWWBackup
mput $TodayDBBackup
bye
EOF
脚本下载地址:
下载脚本,将脚本放到/root/ 下面,按上面的注释修改脚本中的参数,并保存,如果不熟悉vim或者nano编辑器,可以用winscp,执行:chmod +x /root/backup.sh 为脚本添加执行权限,执行:crontab -e 添加定时执行
在crontab中加入:0 3 * * * /root/backup.sh
凌晨3点自动执行/root/bakcup.sh 脚本,备份Linux服务器上的数据并上传到预先设定好的异地FTP上。
选择在凌晨3进行备份,是因为这个时间段网站的访问量是最低。也就是说在很少人访问的情况下做备份操作。
 
附录:
 
网站运维异地备份方案及故障应急备用镜像站
 
定期检查异地备份故障应急时,启用应急Web服务
连接:http://jimmyli.blog.51cto.com/3190309/584992 网站运维异地备份方案及故障应急备用镜像站

出处: http://jimmyli.blog.51cto.com/  Jimmy Li Blog 。欢迎朋友一起交流,讨论。扣扣:柒⑥柒陆叁⑤叁伍
 




     本文转自jimmy_lixw 51CTO博客,原文链接:http://blog.51cto.com/jimmyli/691069 ,如需转载请自行联系原作者



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
1555 3
|
SQL 弹性计算 关系型数据库
如何用读写分离构建高效稳定的数据库架构?
在少写多读业务场景中,主实例读请求压力大,影响性能。通过创建只读实例并使用数据库代理实现读写分离,可有效降低主实例负载,提升系统性能与可用性。本文详解配置步骤,助你构建高效稳定的数据库架构。
存储 人工智能 机器人
399 0
|
安全 关系型数据库 数据管理
阿里云数据库:构建高性能与安全的数据管理系统
阿里云数据库提供RDS、PolarDB、Tair等核心产品,具备高可用、弹性扩展、安全合规及智能运维等技术优势,广泛应用于电商、游戏、金融等行业,助力企业高效管理数据,提升业务连续性与竞争力。
|
传感器 安全 前端开发
如何开发一套EHS健康安全环境管理系统中的风险管理板块?(附架构图+流程图+代码参考)
本文详解企业EHS(健康·安全·环境)系统中的风险管控板块,强调其核心在于构建“识别—评估—巡检—治理—验证”的闭环流程,将风险数据可视化并转化为可落地的行动指引。内容涵盖风险管控的意义、功能边界、系统架构、LEC评估方法、巡检流程、看板设计、开发技巧、落地建议、实现效果及代码参考,帮助技术团队和EHS负责人快速掌握系统搭建要点,提升企业安全管理水平。
|
存储 安全 前端开发
如何开发一套EHS 健康安全环境管理系统?(附架构图+流程图+代码参考)
本文介绍如何开发一套完整的EHS(健康、安全和环境)管理系统,涵盖系统核心模块、技术架构、数据库设计、前后端开发示例及上线建议,帮助企业提升安全管理效率与合规性。
|
存储 设计模式 人工智能
AI Agent安全架构实战:基于LangGraph的Human-in-the-Loop系统设计​
本文深入解析Human-in-the-Loop(HIL)架构在AI Agent中的核心应用,探讨其在高风险场景下的断点控制、状态恢复与安全管控机制,并结合LangGraph的创新设计与金融交易实战案例,展示如何实现效率与安全的平衡。
2232 0
|
人工智能 安全 Cloud Native
Nacos 3.0 架构升级,AI 时代更安全的 Registry
随着Nacos3.0的发布,定位由“更易于构建云原生应用的动态服务发现、配置管理和服务管理平台”升级至“ 一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台 ”。
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
1108 4
微服务架构实战指南:从单体应用到云原生的蜕变之路

热门文章

最新文章