我们选择VPS和架设服务器的项目后,所有的项目和网站数据都需要自己备份和维护,即使有些服务商提供托管服务器,但是数据自行备份管理更可靠。无论是网站还是其他项目,备份数据的方式有很多种。有服务提供商提供的快照备份,也可以手动和自动使用脚本备份到本地服务器或远程服务器。然而,许多方法只能实现定期和计划的备份。如果我们网站项目的数据吞吐量比较大,定时备份并不能完全解决数据容灾问题。万一数据丢失或不完整,我们可能只能恢复到最后一个备份点,同样会出现数据丢失的情况。如果我们的项目比较大,数据比较重要,定期备份的方法肯定行不通。我们可以在定时备份的同时使用增量同步备份。比如当主服务器的数据增加时,也会在备份服务器同步。如果我们的数据比较重要,我们也可以使用多台备份服务器进行同步。***。准备工作1、数据备份如果我们不确定是否可以一次性完成,我们可以准备两台测试环境服务器来实现rsync同步备份功能,然后在生产环境中使用。如果是生产环境,我们可以备份服务器快照,或者备份网站和项目数据。2、服务器准备这里我们使用rsync同步增量备份,所以需要准备主服务器和备份服务器。鉴于数据备份后的功能,我们可以直接备份到备份服务器的某个目录,或者安装备份服务器作为主服务器环境,将需要备份的网站项目备份到对应的相同目录。3.端口开放如果我们的服务器没有设置iptables防火墙规则,那么就不要设置端口。如果我们设置了iptables防火墙,需要添加873端口允许。vi/etc/sysconfig/iptables打开iptables规则文件,添加:-AINPUT-ptcp-mstate--stateNEW-mtcp--dport873-jACCEPT编辑保存后,重启/etc/init.d/iptables即可生效。同样的,我们需要同时设置主服务器和备份服务器。二、配置备份服务器1、安装rsyncyuinstallrsyncxinetd-y2,配置文件vi/etc/xinetd.d/rsync,将配置文件的disable参数由“yes”改为“no”。3.创建配置文件vi/etc/rsyncd.conf创建一个文件,然后添加如下脚本:logfile=/var/log/rsyncd.logpidfile=/var/run/rsyncd.pidlockfile=/var/run/rsync.locksecretsfile=/etc/rsync.passmotdfile=/etc/rsyncd.Motd#创建模块名称,需要保持一致[www.laobuluo.com]#备份服务器目录地址path=/home/wwwroot/www.laobuluo.com#对应上面的moduleNamecomment=www.laobuluo.comuid=rootgid=rootport=873usechroot=noreadonly=nolist=nomaxconnections=200timeout=600#创建一个同步用户名,随便取,反正当后面会出现authusers=www.laobuluo.com_user#main服务器IP地址hostsallow=xxx.xxx.xxx.xxx根据我们的网站项目和实际服务器信息创建一个文件,粘贴到配置文件中,保存退出。4.创建密码配对文件vi/etc/rsync.pass创建密码配对文件:www.laobuluo.com_user:1234567890passwd红色字段需要对应上面的auth用户,蓝色部分是我们创建配对的密码.后面配置主服务器的时候也会用到密码,所以一定要保持一致。5、打开权限,启动chmod600/etc/rsyncd.confchmod600/etc/rsync.passservicexinetdrestart三、配置主服务器1、安装rsyncyuinstallrsyncxinetd-y2,配置文件vi/etc/xinetd.d/rsync,将配置文件改为disable来自“是”的参数被替换为“否”。3、创建密码配对文件vi/etc/passwd.txt,把上面备份服务器里的蓝色密码填进去,一定要一致。4、授权并启动chmod600/etc/passwd.txtservicexinetdrestart四、配置主服务器。在这一步中,我们继续配置主服务器。我们需要安装配置inotify-tools来实现同步增量备份。1、安装环境包yuminstallmakegccgcc-c++-y2,下载安装inotify-toolscd/usr/local/srcwgethttps://download.laobuluo.com/tools/inotify-tools-3.14.tar.gztar-zxvfinotify-tools-3.14.tar.gzcdinotify-tools-3.14./configure--prefix=/usr/local/inotifymakemakeinstall3,配置环境变量echo"PATH=/usr/local/inotify/bin:$PATH">>/etc/profile.d/inotify.shsource/etc/profile.d/inotify.shecho"/usr/local/inotify/lib">/etc/ld.so.conf.d/inotify.confln-s/usr/local/inotify/include/usr/include/inotify4,vi/etc/sysctl.conf添加配置参数到脚本***:fs.inotify.max_queued_events=99999999fs.inotify.max_user_watches=99999999fs.inotify.max_user_instances=655355,创建触发脚本vi/usr/local/inotify/rsync.sh创建脚本:#!/bin/sh#同步主服务器网站目录srcdir=/home/wwwroot/www.laobuluo.com#目录名dstdir=www.laobuluo.comexcludedir=/usr/local/inotify/exclude.list#对应的同步名称要一致rsyncuser=www.laobuluo.com_userrsyncpassdir=/etc/passwd.txt#备份服务器IP地址dstip="xxx.xxx.xxx.xxx"foripin$dstipdorsync-avH--port=873--进度--删除-exclude-from=$excludedir$srcdir$rsyncuser@$ip::$dstdir--password-file=$rsyncpassdirdone/usr/local/inotify/bin/inotifywait-mrq--timefmt'%d/%m/%y%H:%M'--format'%T%w%f%e'-eclose_write,modify,delete,create,attrib,move$srcdir|whilereadfiledoforipin$dstipdorsync-avH--port=873--progress--delete---exclude-from=$excludedir$srcdir$rsyncuser@$ip::$dstdir--password-file=$rsyncpassdirecho"${file}wasrsynced">>/tmp/rsync.log2>&1donedone修改自己的文件和目录,然后保存退出6、创建排除目录列表vi/usr/local/inotify/exclude.list创建一个排除目录,这里可以添加未同步的目录,一行一个目录。如果暂时没有,可以留空,以后补上。7、授权和设置开机启动chmod+x/usr/local/inotify/rsync.sh。在这里我们授权。vi/etc/rc.d/rc.local***添加一行:sh/usr/local/inotify/rsync.sh&五、检测及有效总结1、检查有效设置后,我们可以手动检查sh/usr/local/inotify/rsync.sh&在主服务器上执行脚本,如果看到正在进行的目录,打***,然后到备份服务器上看已经备份的文件目录。2.自动生效重启主服务器,即可自动生效。如果不放心,我们可以在主服务器对应目录下拖一个文件,看看备份服务器有没有增加。这样,我们通过rsync实现主备服务器之间的同步增量备份,解决大数据吞吐量的容灾问题。如果我们的数据不大,可以采用定时和手动备份的方式。毕竟这样的一套设定,实在是太费时间了。
