服务器信息
角色 | IP |
---|---|
svn主 | 192.168.99.207 |
svn备 | 192.168.99.208 |
一、部署思路
- 经过测试,将svn主的数据目录整个通过rsync物理的方式推到svn备上,svn备通过http的方式是可以正常使用svn的。
- 所以本实例是以rsync的方式做的svn主从备份。
1.基础环境
- svn主/备:svn1.8 + apache2.4 + php5.4 + mysql5.7 + svnmanager1.10
2. MySQL
- svn数据库主/备:主从复制,主要是用于svnmanager记录相关用户及仓库信息。
- svn从数据库:配置
Read_only
主要是防止svn从上误登陆往svn从的svnmanager写入数据,造成主从数据不一致。 - 复制结构:GTID复制
3.实时同步
- 实时同步主要涉及3个路径:
/data/svn/
,/data/wwwroot/svn.test.com/
,/etc/httpd/conf.d/
- 同步我这边测试环境用的是rsync + crontab,也可以换成sersync或者rsync + inotify的实时同步
- 如果对从库的实时性要求没那么高,可以增加crontab的同步时间,好处是对人为的误操作,有响应恢复的时间(推荐svn的从库不要做成实时的)
- 这三个目录可以每天再备一份到另外的一台服务器上。
1 | */1 * * * * /usr/bin/rsync --delete -avzP /data/svn/ 192.168.99.208::svnsync >/dev/null 2>&1 |
4.svn备stand by
svn备两个stand by策略,目的是平时不让访问:
- svn备apache服务器不要启动,或者iptables封锁httpd端口
- mysql配置read_only
二、故障切换
切换步骤
- 彻底断开主的实时同步rsync,关闭rsync或sersync服务,目的是防止svn主起来后影响svn被的数据
- svn备mysql关闭read only
- svn备开启apache或http端口,允许访问svnmanager
- 域名切到svn备
- 测试