SVN 主从复制方案
▋SVN 主从复制方案,主要是为了解决svn服务器大并发量访问的问题,根据svn读写的2/8原则,应该把读写分流将对SVN服务器读操作都引流到从(slave)机器上:
以下是svn 官方文档(http://svnbook.red-bean.com/en/1.5/svn.ref.svnsync.html ,http://svnbook.red-bean.com/en/1.5/svn.reposadmin.maint.html#svn.reposadmin.maint.replication)说叙述的关于svnsyn命令的使用方法
▋官方的文档中只说明了主从全量同步的方案,但是没有很说明增量同步的方法。 看到一篇不错的文章介绍了几种svn库备份方法一种就有一个讲到用svnsync来作备份的方案,这个方案中我觉得最精妙的是用mount的方法来做增量更新 http://www.blogjava.net/jasmine214--love/archive/2010/09/28/333223.html
mount方法的确能够解决从主服务器上通知从服务器触发同步的过程,但是从公司sa的同学了解到,他们非常不建议使用mount的方式来做这个同步操作,原因是mount命令经常发生问题。
其实在通过在网上找的很多资料来看,大部分的文章是通过系统的定时程序来完成主从同步的,也就是定时,比如30分钟让从服务器执行一次同步操作。这样虽然不能保证在主服务器和从服务器实时同步,但是实现方式是简单的。想想也是,svn主从服务器之间没有必要保证实时同步。
在最终的实现方案是在系统中是采用ssh命令,在post-commit 的hook脚本中执行下面这条命令
/usr/bin/ssh remotehost "svnsync sync file://$1" | tee -a /usr/baisui/logs/svnsync.log 2>&1
▋相关的操作命令
- svn配置文件 vi /etc/httpd/conf.d/subversion.conf apache配置文件 /etc/httpd/conf/httpd.conf
- svn 同步初始化 svnsync initialize file:///var/www/repos/svnrepos/slaver http://10.9.24.161/aaa --sync-username slaver --sync-password 123456
- svn的用户名密码 /etc/httpd/conf.d/.passwd
- 为某个用户添加执行权限 chmod +x pre-revprop-change
- 将本地svn服务器与主服务器同步 svnsync sync file:///var/www/repos/svnrepos/slaver
相关推荐
pub_svnserve.conf的 pub_authz.conf的配置文件有非法字符的原因引起,需要查找pub_authz.conf提的非法内容比如多余的空格删除或直接将pub_authz.conf