假设我们邮件服务器主机名为mail (192.168.0.1),备份主机名为mailbak(192.168.0.2),则需要做的工作如下: 1. 确保在两台服务器上分别装上rsync,如果已经装好就跳过。 rsync3.0.6 http://www./ftp/rsync/src/rsync-3.0.6.tar.gz 下载好后放到服务器上解压 #tar -zxvf rsync-3.0.6.tar.gz 安装 #cd rsync-3.0.6 #./configure --prefix=/usr/ #make #make install 查一下安装目录 #find / -name rsync /usr/bin/rsync /root/rsync-3.0.6/rsync 2. 在备机192.168.0.2上配置rsync服务(只需新增两个文件 rsyncd.conf 和 rsyncd.secrets 即可) #vim /etc/rsyncd.conf 注意修改2处hosts allow 的IP地址是主机的IP uid = root gid = root use chroot = no max connections = 4 strict modes =yes port = 873 [mailbak-update-mysql-extmail] path = /var/lib/mysql/ comment = This is a test ignore errors read only = no list = no secrets file = /etc/rsyncd.secrets hosts allow = 192.168.0.1 [mailbak-update-home] path = /home/ comment = This is a test ignore errors read only = no list = no secrets file = /etc/rsyncd.secrets hosts allow = 192.168.0.1 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log 上述文件的作用是将备份服务器本地的/home/domains目录及/var/lib/mysql/extmail/目录作为同步操作的对象供邮件主服务器实时写入更新的资料 #vim rsyncd.secrets root:123456 #认证信息,随意即可,但两端要保持一致 3. 在邮件备份服务器上将同步服务开启,方法是在/etc/rc.d/rc.local文件中加入一行: #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local /usr/local/mailgraph_ext/mailgraph-init start /usr/bin/freshclam --daemon /usr/local/slockd/slockd-init start /var/www/extsuite/extman/daemon/cmdserver -v -d /usr/bin/rsync --daemon
保存后 登陆到邮件主服务器192.168.0.1上来操作: 1. 创建一个同步数据的脚本/root/rsync-to-mailbak.sh内容如下(两行): rsync -rlptgoDvHS --progress --delete --force --password-file=/etc/rsyncd.secrets /home/ root@192.168.0.2::mailbak-update-home rsync -rlptgoDvHS --progress --delete --force --password-file=/etc/rsyncd.secrets /var/lib/mysql/ root@192.168.0.2::mailbak-update-mysql-extmail 2. 将这个新建的脚本权限变为可执行744或755: chmod 744 /root/rsync-to-mailbak.sh 3. 在主服务器上创建密码文件/etc/rsyncd.secrets,使其内容和备份服务器上的密码一致。 #vi rsyncd.secrets root:123456 #认证信息,保持一致 现在可以试运行一下这个脚本看看效果了,如果是第一次,正常情况你会看到很多数据在拷贝。第二次则很少了,因为所做的是差异对比同步,相同的文件不会再次拷贝。 4. 将这个脚本放到计划任务中,设定每5分钟执行一次: crontab -e 添加一行命令如下: 0,5 * * * * /root/rsync-to-mailbak.sh 保存,退出即可立即生效。 现在如果你的邮件主服务器192.168.0.1突然发生硬件故障当机,所需要做的只是立即将备份主机的IP地址192.168.0.2改为主服务器192.168.0.1后运行一下/sbin/service network restart或重新启动一下即可,用户丢失的信件仅仅是在最近5分钟内的内容(<=5分钟)。 故障排除 rsync: failed to connect to 192.168.1.223: No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6] 原因:对方没开机、没开rsync、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp 的873端口打开,或者rsync没装。 vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p udp --dport 873 -j ACCEPT service iptables restart #重启防火墙 2、备份机服务未启动 rsync: failed to connect to 10.10.10.170: Connection refused (111) rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5] 启动服务输入:rsync --daemon --config=/etc/rsyncd.conf
|
|