EMOS 1.5 利用sersync2.5 beta1 进行热备份

好久没有在百度这里与看官们分享了,写完这篇文章之后我要准备去医院接受脚的手术。希望很快恢复正常以后继续跟看官们分享文章。


在Extmail的论坛上有大大小小一堆的备份脚本和方法,有人用压缩整个邮件目录然后归档,有人按照时间进行压缩归档,有的用rsync定时同步目录。
 

之前有留意过新核心上可以使用inotify这模块来记录一些文件改变的状态,更加有外国友人写了inotify-tools
 
来触发脚本。这种备份方式的确节省管理成本、配置比较容易相比起使用DRBD+HA的方法。

为什么要使用sersync2.4进行热备份呢?
 

大家到这里先看看作者johntech的介绍 
code.google.com/p/sersync/

废话不多说了,现在马上开始。
 

先准备了两台机器安装上EMOS 1.5 x86_64 [i386 可以按照本方案实现的]
 

hostname R1 Private IP 192.168.1.122
 

hostname R2 Private IP 192.168.1.123 


1. 同步MySQL 数据库 [如果你只是需要备份用户邮箱数据跳过这一步,我练功而已]
 

R1 设定数据库配置档 my.cnf
 

server-id=1

log-bin=mysql-bin


然后添加用户


MYSQL>grant all privileges on *.* to mysql_rsync@'%' identified by '123456#';


记得需要MySQL网络端口3306进行同步通信.


R2 设定数据库配置档 my.cnf


server-id = 2

relay-log = s2-relay-bin
 

master-host     =   192.168.1.122
 

master-user     =   mysql_rsync
 

master-password =   123456#


查看日志看看是否同步成功


100418  8:16:33 [Note] Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log './s2-relay-bin.000001' position: 98
100418  8:16:33 [Note] Slave I/O thread: connected to master 'mysql_rsync@192.168.1.122:3306',  replication started in log 'FIRST' at position 4


这里看官会想为何不用sersync同步数据呢?是这样的Mysql的数据不是立即写入MYD/MYI文件内的,所以使用sersync是不可能同步数据的。


2. 使用sersync同步邮箱数据


R1 是数据源 R2 是备份源


R1 与 R2 安装 rsync-3.0.7-1.el5.rf.x86_64.rpm


R2 备份源 设定同步目录


# vi /etc/rsyncd.conf


max connections=36000
uid = root

gid = root


[domains]
path = /home/domains
read only = no
hosts allow = 192.168.1.0/24
hosts deny = *


*注 目前sersync2.4对于rsync用户认证有 -r 参数 bug,所以不采用认证。

如果用认证方式是以下的配置

max connections=36000

uid = root
gid = root


[domains]
path = /home/domains
auth users = domains
secrets file = /etc/rsync.secrets
read only = no

# chmod 600 /etc/rsync.secrets

# vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 873 -j ACCEPT

R1 数据源

# vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 873 -j ACCEPT

# echo '123456#' >> /etc/rsync.pas

# mkdir /usr/local/sersync2.5b1/

# 下载 code.google.com/p/sersync/downloads/list

然后解压

看见 2个文件

配置档案 confxml.xml

启动档案 sersync2

第一步复制配置档

# cp -a confxml.xml domains.xml

修改内容

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.4">
<host hostip="192.168.1.122" port="8008"></host> R1 数据源服务器
<filter start="false">    可以指定那些文件不同步
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
</filter>
<inotify>
<delete start="true"/>
</inotify>
<sersync>
<localpath watch="/home/domains" debug="false">
<remote ip="192.168.1.123" name="domains"/> R2 备份服务器,可以多个备份副本.
</localpath>
<rsync>
<auth start="true" users="domains" passwordfile="/etc/rsync.pas"/> 开启认证方式
</rsync>
<crontab start="false" schedule="600">
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="refreshCDN"/>
</sersync>

<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
</head>

启动服务

./sersync2 -d -r -n 4 -o ./domains.xml

* 如果服务器是8核开启 -n 20 ,如果像我这台牛机服务器当然是 -n 4 因为sersync 十分吃cpu负载。

测试

建立了 1万用户,每个用户邮箱大小为1GB。然后向R1 服务器不停掉10MB - 1MB 随机邮件

最后发现机器实在太难了,测试没有结果。

但一些可以预知的东西,sersync 占用CPU资源十分高,管理员需要考虑pop3 收取信件 与 SMTP 发送信件的密度来判断使用sersync是否应付到数据频密的改变。

posted @ 2010-11-10 17:08  YoKing  阅读(766)  评论(0编辑  收藏  举报