构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图mysql
继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构。针对安全性有多种多样的解决方案,其中数据备份是重中之重的首要工做。
电 子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份、异地备份架构。其中Linux服务器的备份方案很是多,本文介绍一个大众化适用的解决方 案,经过编写Shell脚原本完成自动备份。本架构包括备份网站文件、数据库,自动本地备份并FTP上传备份脚本,完成相应本地备份、异地备份,实现双层 备份解决方案。web
本文要点:sql
1.MYSQL数据库自动本地/异地双备份/MYSQL数据库增量备份。
2.编写Shell脚原本完成自动MYSQL备份、MYSQL数据库增量备份。
3.同时进行自动本地/异地双备份,FTP上传备份。
4.Linux服务器的备份解决方案。
5.Shell脚本包括备份网站文件,网站程序文件、数据文件,MYSQL数据库。
6.按期定时自动完成备份。按期删除旧备份,这里是自动删除30天前备份,复用利用备份空间。数据库
目录:vim
1、准备工做
2、网站运维异地备份方案及故障应急备用镜像站架构图
3、网站MYSQL数据库自动本地/异地双备份/MYSQL数据库增量备份Shell脚本,完整的实例;备份脚本进行详细解说,注释。windows
在 运营中的电子商务网站,建站之初就一直在重申必定要备份好本身的数据,由于太多的不肯定性可能会形成数据库丢失,并且大部分基础服务商也不可能提供天天备 份数据。原来本BLOG提供过一个备份方法,介绍了Shell脚本MYSQL数据库自动备份,没有介绍MYSQL数据库增量备份。今天分享一个本身的备份 脚本。
参考以前的文章 http://jimmyli.blog.51cto.com/3190309/691069 《构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]》安全
1、准备工做:bash
Linux服务器安装好lftp,另外须要提早在Linux服务器上建立/home/backup/ 备份目录创建。而且保证FTP能正常使用帐户密码登录上次文件。既是保证FTP服务正常提供服务。服务器
2、网站运维异地备份方案及故障应急备用镜像站架构图架构
3、网站MYSQL数据库自动本地/异地双备份/MYSQL数据库增量备份Shell脚本
脚本二:
MYSQL数据库增量备份Shell脚本
若是数据库数据量比较大,能够一天全备一次, 再每隔一小时增量备份一次;
创建增量备份目录
增量备份的文件放在/backup/mysql/daily目录下。
增量备份的数据量比较小,可是要在完整备份的基础上操做。
增量备份使用bin log,脚本以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/bin/sh
# mysql data backup script
# use mysqldump
--help,get more detail.
#Author: Jimmy Li
#Website: http://jimmyli.blog.51cto.com/
# mysql binlog backup script
/usr/bin/mysqladmin flush-logs
DATADIR=/var/lib/mysql
BAKDIR=/backup/mysql/daily
###若是mysql bin log你作了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名
HOSTNAME=`uname -n`
cd $DATADIR
FILELIST=`cat $HOSTNAME-bin.
index
`
## COUNTER number
COUNTER=0
for
file
in
$FILELIST
do
COUNTER=`expr $COUNTER + 1 `
done
NextNum=0
for
file
in
$FILELIST
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $COUNTER ]
then
echo
"skip lastest"
else
dest=$BAKDIR/$base
if(test -e $dest)
then
echo
"skip exist $base"
else
echo
"copying $base"
cp $base $BAKDIR
fi
fi
done
echo
"backup mysql binlog ok"
|
脚本解析说明:
增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,而后生成一个新的日志文件,因此咱们只须要备份前面的几个便可,也就是不备份最后一个.
由于从上次备份到本次备份也可能会有多个日志文件生成,因此要检测文件,若是已经备份过,就不用备份了.
舒适提示、增量备份:
天天中午03点和晚上03点作一次全备,每隔一小时备份binlog,也就是增量备份,具体操做以下:
Linux下开启binlog
将脚本放到/root/ 下面,按上面的注释修改脚本中的参数,使用vim编辑器并保存。
执行:chmod +x /root/backup.sh 为脚本添加执行权限。
执行:crontab -e 添加定时执行。
在crontab中加入:0 3 * * * /root/backup.sh
凌晨3点自动执行/root/bakcup.sh 脚本,备份Linux服务器上的数据并上传到预先设定好的异地FTP上。
选择在凌晨3进行备份,是由于这个时间段网站的访问量是最低。也就是说在不多人访问的状况下作备份操做。
1
2
3
4
5
6
7
8
9
10
|
/etc/my.cnf中的mysqld部分加入:
[mysqld]
log-bin=../logs/mysql-bin
max
-binlog-
size
=512M
windows下开启binlog
%mysql%/my.ini中的mysqld部分加入:
[mysqld]
log-bin =../logs/mysql-bin
max
-binlog-
size
=512M
|
脚本一:
网站及数据库自动本地备份并FTP上传备份Shell脚本,完整的实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#!/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.jimmyli.jimmyli.blog.51cto.com
MYSQL_UserName=root
MYSQL_PassWord=你的mysql数据库root密码
Backup_Database_Name1=jimmyli.jimmyli.jimmyli.blog.51cto.com
FTP_HostName=jimmyli.jimmyli.jimmyli.blog.51cto.com
FTP_UserName=jimmyli.jimmyli.jimmyli.blog.51cto.com
FTP_PassWord=jimmyli.jimmyli.jimmyli.blog.51cto.com
FTP_BackupDir=jimmyli.jimmyli.jimmyli.blog.51cto.com
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
|
备份脚本进行详细解说,注释参考 http://jimmyli.blog.51cto.com/3190309/691069 《构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]》
========================================================================
网站运维异地备份方案及故障应急备用镜像站
按期检查异地备份故障应急时,启用应急Web服务
链接:http://jimmyli.blog.51cto.com/3190309/584992 网站运维异地备份方案及故障应急备用镜像站
本文出自 “Jimmy Li我站在巨人肩膀上” 博客,请务必保留此出处http://jimmyli.blog.51cto.com/3190309/888630