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

简介:
构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]
出处: 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;
相关文章
|
3月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
3月前
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
3月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
571 51
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
797 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
3月前
|
Java 关系型数据库 数据库
怎么保障数据库在凭据变更过程中的安全与稳定?
本文介绍了在Spring应用中实现RDS数据源账密运行时轮转的方案,通过集成KMS与Nacos,实现数据库凭据的加密托管、动态更新与无缝切换,保障应用在凭据变更过程中的安全与稳定。适用于使用Java语言开发的Spring Boot或Spring Cloud应用,支持多种数据库类型,如MySQL、SQL Server、PostgreSQL等。
|
3月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的&quot;神经网络&quot;,强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
3月前
|
传感器 人工智能 算法
分层架构解耦——如何构建不依赖硬件的具身智能系统
硬件与软件的彻底解耦,并通过模块化、分层的架构进行重构,是突破这一瓶颈、构建通用型具身智能系统的核心基石。这种架构将具身智能系统解耦为三个核心层级:HAL、感知决策层和任务执行层。这一模式使得企业能够利用预置的技能库和低代码工具快速配置新任务,在不更换昂贵硬件的前提下,实现从清洁机器人到物流机器人的快速功能切换。本文将通过对HAL技术原理、VLA大模型和行为树等核心技术的深度剖析,并结合Google RT-X、RobotecAI RAI和NVIDIA Isaac Sim等主流框架的案例,论证这一新范式的可行性与巨大潜力,探讨硬件解耦如何将机器人从一个“工具”升级为“软件定义”的“多面手”,从而
555 3
|
3月前
|
安全 关系型数据库 数据管理
阿里云数据库:构建高性能与安全的数据管理系统
阿里云数据库提供RDS、PolarDB、Tair等核心产品,具备高可用、弹性扩展、安全合规及智能运维等技术优势,广泛应用于电商、游戏、金融等行业,助力企业高效管理数据,提升业务连续性与竞争力。
|
3月前
|
SQL 弹性计算 关系型数据库
如何用读写分离构建高效稳定的数据库架构?
在少写多读业务场景中,主实例读请求压力大,影响性能。通过创建只读实例并使用数据库代理实现读写分离,可有效降低主实例负载,提升系统性能与可用性。本文详解配置步骤,助你构建高效稳定的数据库架构。

热门文章

最新文章