EMOS 1.5 利用sersync2.5 beta1 进行热备份
时间:2010-05-05 来源:dongjincai
好久没有在百度这里与看官们分享了,写完这篇文章之后我要准备去医院接受脚的手术。希望很快恢复正常以后继续跟看官们分享文章。![]() 在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
查看日志看看是否同步成功
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
这里看官会想为何不用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 gid = root
[domains]
*注 目前sersync2.4对于rsync用户认证有 -r 参数 bug,所以不采用认证。 如果用认证方式是以下的配置 max connections=36000
uid = root
# 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是否应付到数据频密的改变。 |