网站文件的同步
一个网站,除了有数据库,还有很多别的文件,比如用户上传的图片,你的网站代码之类,光有数据库而没有这些文件你的网站也没法跑起来。
和数据库比起来,网站文件要大得多,而且文件数目也多得多,要做到实时同步必须考虑“增量文件同步”,一般传统的方法是使用 inotify + rsync 写脚本来操作。
我们这里采用 Sersync (https://code.google.com/p/sersync/) 来做网站数据同步 。
配置 Slave 上的 WWW 同步
采用 Rsync 做数据同步
uid=root gid=root use chroot=no max connections=10 pid file=/var/run/rsyncd.pid lock file=/var/run/rsync.lock log file=/var/log/rsyncd.log munge symlinks = no hosts allow=这里填写 Master 的 IP 地址 hosts deny=* list=false read only=no ignore errors [WWW] path=/var/WWW ## 网站数据所在的位置
启动 rsync 服务: rsync –daemon
启动 Master 上的 Sersync2 做数据同步
<?xml version="1.0" encoding="ISO-8859-1"?> <head version="2.5"> <host hostip="localhost" port="8008"></host> <debug start="false"/> <fileSystem xfs="false"/> <filter start="true"> <exclude expression="^BZFSHOP/Asset/*"></exclude> <exclude expression="^BZFSHOP/Runtime/*"></exclude> <exclude expression="^BZFSHOP/Trash/*"></exclude> <exclude expression="^BZFSHOP/Data/cache/*"></exclude> <exclude expression="^BZFSHOP/Data/temp/*"></exclude> </filter> <inotify> <delete start="true"/> <createFolder start="true"/> <createFile start="true"/> <closeWrite start="true"/> <moveFrom start="true"/> <moveTo start="true"/> <attrib start="false"/> <modify start="false"/> </inotify> <sersync> <localpath watch="/var/WWW"> <remote ip="Slave的IP" name="WWW"/> </localpath> <rsync> <commonParams params="-artu"/> <auth start="false" users="root" passwordfile="/etc/rsync.pas"/> <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="false" time="100"/><!-- timeout=100 --> <ssh start="false"/> </rsync> <failLog path="/tmp/www_rsync_fail_log.sh" timeToExecute="3"/><!--default every 3mins execute once--> <crontab start="false" schedule="600"><!--600mins--> <crontabfilter start="false"> <exclude expression="*.php"></exclude> <exclude expression="info/*"></exclude> </crontabfilter> </crontab> <plugin start="false" name="command"/> </sersync> </head>
启动文件监控同步
## 第一次启动加上 -r 参数做首次同步,之后就不要再加 -r 参数了 ./sersync2 -n 2 -d -r -o www.xml
后记
完整的对 数据库 和 所有文件 做了实时同步之后,我们的业务就有了保障。一旦主机房出现严重问题,我们可以使用备份数据立即继续中断的业务,最重要的是,业务数据几乎没有任何的丢失。
不像之前,每天一个备份,如果发生严重故障,只能从“昨天”开始了,中间数据丢失会带来巨大的麻烦。
如果需要更加安全,可以考虑 3 备份或者 N 备份,在 N 个城市同时做实时备份数据,一旦发生多点灾难一样可以迅速恢复业务,当然需要的成本也更高。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。