[跟我学中小企业架构部署]之八:备份服务器部署

BAK 服务器部署

所需软件:
Portmap
Nfs
Rsync

1
2
mkdir -p /backup /www                     #创建网站图片、附件存储目录
mkdir -p /backup/data /backup/www

#创建网站备份目录、数据库备份目

以wiki为例:
wiki 程序下的附件、图片目录有 /data/attachment /uploads
那我们需在BAK服务器上建立这两个文件目录,用NFS共享,

1
2
3
4
5
6
7
8
cd  /www/
mkdir -p wiki/uploads wiki/data/attachment
chmod –R 777  www
rpm -qa  portmap nfs                  #查看是否安装,默认是安装的,直接启动即可
service portmap start
chkconfig portmap on
service nfs start
chkconfig nfs on

为LNMP服务器共享目录为可读写:

1
2
echo "/www/wiki/uploads/  10.0.10.84(rw,sync,anonuid=1,anongid=1)" >>/etc/exports
echo "/www/wiki/data/attachment/  10.0.10.84(rw,sync,anonuid=1,anongid=1)"  >>/etc/exports
1
service nfs restart                      #重启NFS服务使其生效

看到上图说明共享成功!!

LNMP上操作

1
2
3
4
5
6
7
8
9
10
11
12

killall nginx                                  #停止WEB服务,防止打包不完整
cd /www/htdocs/wiki
tar zcvf data.tar.gz data/
tar zcvf uploads.tar.gz uploads/
mv data databak
mv uploads uploadsbak
service portmap start                        #启动portmap nfs服务并添加到开机自启动
chkconfig portmap on
service nfs start
chkconfig nfs on
showmount –e 10.0.10.85                   #查看BAK服务器共享的目录

1
2
3
mkdir -p data uploads
mount -t nfs 10.0.10.85:/www/wiki/data ./data            #挂载共享目录到本地
mount -t nfs 10.0.10.85:/www/wiki/uploads ./uploads

上图提示,挂载成功!!
回到BAK服务器上操作

1
2
3
4
5
cd /www/wiki/
scp 10.0.10.84:/www/htdocs/wiki/data.tar.gz ./
scp 10.0.10.84:/www/htdocs/wiki/uploads.tar.gz ./
tar zxvf data.tar.gz
tar zxvf uploads.tar.gz

#以上操作是把LNMP上打包的目录拷贝回来,解压到相应目录。

LNMP上操作
用 ls 命令查看,发现目录里都有文件

启动nginx,用浏览器访问 http://wiki.cgzg.net

看到图片都正常显示,即NFS 部署网站附件、图片到BAK服务器成功!!
作为发布程序的BAK服务器,还需有直接发送数据到WEB服务器上的功能,这里使用ssh 无密码登录验证技术实现。

首先在要添加信任关系的每台服务器上修改hosts文件
vi /etc/hosts
在下面添加:
把各服务器的IP和主机名一一对应添加,注意区分大小写

LAMP上操作
建立rsa key

1
2
3
ssh-keygen -t dsa         #直接一路回车
cd /root/.ssh/
mv id_dsa.pub authorized.keys    #修改公钥

BAK上操作
建立rsa key

1
2
3
ssh-keygen -t dsa         #直接一路回车
cd /root/.ssh/
cat id_dsa.pub

把BAK里id_dsa.pub里的密钥复制 到 LAMP的authorized_keys里 即可。
登陆验证

1
ssh lamp

此时,已经无需输入密码了。

注:关于无密码验证可参考本人另一篇文章:http://www.elain.org/?p=275

LNMP上操作
建立rsa key

1
2
3
ssh-keygen -t dsa         #直接一路回车
cd /root/.ssh/
mv id_dsa.pub authorized.keys    #修改公钥

把BAK里id_dsa.pub里的密钥复制 到 LNMP的authorized_keys里 即可。
在BAK主机上登陆验证

1
ssh lnmp

其它服务器都依次做即可!
这时发现 bak 既可以登录lamp,又可以登录lnmp
DB 服务器同理操作即可,这里就不一一操作了

MYSQL 数据备份,通常我们在从服务器上备份
在db2上备份3306的数据

1
2
mkdir –p /www/data
mysqldump -uroot -p''elain'' -S /data/3306/mysql.sock wiki |gzip >/www/data/www_`/bin/date +%Y%m%d%H%M`.sql.gz

在db1上备份3307的数据

1
2
mkdir –p /www/data
mysqldump -uroot -p''elain'' -S /data/3307/mysql.sock blog |gzip >/www/data/bbs_`/bin/date +%Y%d%m%H%M`.sql.gz

在各DB上做好定时任务
在db1上

1
2
Crontab –e
00 04 * * * mysqldump -uroot -p''elain'' -S /data/3307/mysql.sock blog |gzip >/www/data/blog_`/bin/date +%Y%d%m%H%M`_.sql.gz

在db2上

1
00 04 * * * mysqldump -uroot -p''elain'' -S /data/3306/mysql.sock wiki |gzip >/www/data/www_`/bin/date +%Y%m%d%H%M`.sql.gz

接下来就是做定时任务,把备份好的数据按时传送到bak服务器上

1
rpm -qa |grep rsync                  #检查系统是否安装(默认一般都已安装)
1
rsync -avzrtopg --delete --progress  web01:/www/data/  /backup/data/mysql/bbs

#对lamp上的MYSQL备份执行增量备份到BAK服务器上

1
rsync -avzrtopg --delete --progress  web02:/www/data/  /backup/data/mysql/www

#对lnmp上的MYSQL备份执行增量备份到BAK服务器上

做成定时任务为:
在bak服务器上

1
2
3
crontab –e
30 04 * * *  rsync -avzrtopg --delete --progress  web01:/www/data/  /backup/data/mysql/bbs
00 05 * * *  rsync -avzrtopg --delete --progress  web02:/www/data/  /backup/data/mysql/www

到此,所有服务器都已经部署完毕,望大家学业有成!
作者:elain MSN:elain2012@hotmail.com
个人博客:http://www.elain.org
成功中国网 http://www.cgzg.net/
2010年08月27日于北京

文章目录
,