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

▋相关的操作命令

  1. svn配置文件  vi /etc/httpd/conf.d/subversion.conf apache配置文件 /etc/httpd/conf/httpd.conf       
  2. svn 同步初始化  svnsync initialize file:///var/www/repos/svnrepos/slaver  http://10.9.24.161/aaa  --sync-username slaver --sync-password 123456
  3. svn的用户名密码 /etc/httpd/conf.d/.passwd
  4. 为某个用户添加执行权限  chmod +x pre-revprop-change
  5. 将本地svn服务器与主服务器同步  svnsync sync file:///var/www/repos/svnrepos/slaver                                               

svn

相关推荐