svn sync主从同步学习

svn备份的方式有三种:
1svnadmin dump 
2)svnadmin hotcopy 
3)svnsync. 
优缺点分析
============== 
第一种svnadmin dump是官方推荐的备份方式,优势是比较灵活,能够全量备份也能够增量备份,并提供了版本恢复机制。 
缺点是:若是版本比较大,如版本数增加到数万、数十万,那么dump的过程将很是慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。 
我的建议在版本数比较小的状况下使用这种备份方式。 
第二种svnadmin hotcopy原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份; 
优势是:备份过程较快,灾难恢复也很快;若是备份机上已经搭建了svn服务,甚至不须要恢复,只须要进行简单配置便可切换到备份库上工做。 
缺点是:比较耗费硬盘,须要有较大的硬盘支持)。 
第三种svnsync其实是制做2个镜像库,当一个坏了的时候,能够迅速切换到另外一个。不过,必须svn1.4版本以上才支持这个功能。 
优势是:当制做成2个镜像库的时候起到双机实时备份的做用; 
 
以上不是本身观点,下面真实记录个人svn sync实验过程
两台机器
server1: 192.168.1.224
server2: 192.168.1.225
都是centos6.5环境
首先在sever1上搭建好了一个svn,而后模拟提交了一些东西
而后在sever2上搭建了一个如出一辙的svn,保持空的
如今的目的是将server1同步备份到server2
在server1上直接运行:
svnsync init svn://192.168.1.225/ svn://192.168.1.224/
即svnsync init 目标svn连接  源svn连接,执行同步以前的初始化
这一步失败了,报以下错误:
svnsync: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
提示须要在hooks下面建立一个pre-revprop-change hook
简单解释下,hook相似于操做系统的勾子,svn会在收到一些操做请求的时候执行hooks目录下的对应的脚本,例如想要commit的时候作一些事情就能够在对应的脚本下面添加你要执行的命令,下一次在commit 的时候就会触发执行
一开始没明白,不知道应该在源机器上建立仍是在目标机器上建立,实际上是在目标机器上建立的
而后在目标机器上copy了一份pre-revprop-change.tmpl成pre-revprop-change
再次执行初始化命令
依然报错,此次的错误不同了
svnsync: Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.
大概就是同步的过程当中刚刚建立的hook调用没有成功,而后尝试给pre-revprop-change添加可执行权限,依然失败
依然失败,依然失败,在stack overflow上看到有人提出的解决方法是把pre-revprop-change改为下面这个样子:
#!/bin/sh
exit 0
再次初始化,终于成功,提示先让你输入用户名密码,最后一步的输出以下:
 
后来通过验证,确实须要可执行权限,改了以后仍是失败的缘由是hooks执行的结果是失败的,确实执行了
这一步成功以后,下一步同步就直接成功了:
svnsync sync svn://192.168.1.225/
执行这个命令会把没有同步的版本都同步过去
而后为了让server1每次有更新以后都自动同步到server2,能够在server1的commit的hooks最后加上执行一下同步的命令:
svnsync sync svn://192.168.1.225/
这样就完美实现了实时备份,并且在server1出现问题的时候随时均可以直接切换到server2哟
 
 
最后有一点要注意的是,我尝试备份到一个不为空的svn,也就是目标svn已经存在要备份的repos的时候,是会失败的,所以,只能备份到一个空的svn
 
最后还有一个很是重要的要注意的问题就是,若是在直接在目标在作了修改的话,那么后面就没有办法同步了,都会失败,因此,禁止在备份svn上直接作任何操做,这里的花建议专门写一个脚本,在post-commit勾子里面调用,经过脚原本同步,而后判断一下是否同步成功,若是同步失败了须要及时处理,好比能够给相关人员发邮件通知及时处理,防止同步失败了致使server1一旦宕机以后忽然发现server2早就没有同步了就晚了。
相关文章
相关标签/搜索