构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份),高安全电子商务网站针对安全性有多种多样


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

#!/bin/bash

#Funciont: Backup website and mysql database

#Author: Jimmy Li

#Website: http://jimmyli.blog.51cto.com/

#IMPORTANT!!!Please Setting the following Values!

Backup_Dir1=/data/wwwroot/jimmyli.blog.51cto.com

MYSQL_UserName=root

MYSQL_PassWord=你的mysql数据库root密码

Backup_Database_Name1=jimmyli.blog.51cto.com

FTP_HostName=jimmyli.blog.51cto.com

FTP_UserName=jimmyli.blog.51cto.com

FTP_PassWord=jimmyli.blog.51cto.com

FTP_BackupDir=jimmyli.blog.51cto.com——backup

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

/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

rm $OldWWWBackup

rm $OldDBBackup

cd /home/backup/

lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF

cd $FTP_BackupDir

mrm $OldWWWBackup

mrm $OldDBBackup

mput $TodayWWWBackup

mput $TodayDBBackup

bye

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进行备份,是因为这个时间段网站的访问量是最低。也就是说在很少人访问的情况下做备份操作。

附录:

网站运维异地备份方案及故障应急备用镜像站


出处:http://jimmyli.blog.51cto.com/Jimmy Li Blog

相关内容

    暂无相关文章