实验环境:
A,172.17.201.243(主)
B,172.17.201.88(备)
项目需求,生产环境要求svn服务器实现热备机制,于是就想到了svn自带的svnsync机制,操作流程如下:
1、在要备份的机器上(172.17.201.88)建立版本库
mkdir -p /home/svn/SH2014/SVNdata svnadmin create /home/svn/SH2014/SVNdata
2、进入备份机器(172.17.201.88)版本库SVNdata下的hooks目录。
cd /home/svn/SH2014/SVNdata/hooks/
3、创建pre-revprop-change文件
cp pre-revprop-change.tmpl pre-revprop-change
4、修改pre-revprop-change权限,更改为755
chmod 755 pre-revprop-change
5、修改pre-revprop-change内容
为 echo “Changing revision properties other than svn:log is prohibited” >&2 exit 0(1修改为0)
说明如下:
原脚本的意思是如果修改的是svn:log属性,将允许修改,返回0;否则,不允许,返回1
我们要将它改为允许修改所有的属性,在脚本中直接返回0
6、在备份机器上执行同步初始化操作
svnsync init file:///home/svn/SH2014/SVNdata http://172.17.201.243/SHSVN/SVNdata --username "svnadmin" --password "adminpassword"
会出现以下信息:
Copied properties for revision 0.
7、在备份机器上执行同步操作
svnsync sync file:///home/svn/SH2014/SVNdata
会出现以下信息:
Transmitting file data . Committed revision 1. Copied properties for revision 1. Transmitting file data . Committed revision 2. Copied properties for revision 2. Transmitting file data . Committed revision 3. Copied properties for revision 3.
出现以上信息就说明同步成功了。
8、设置备份库的uuid,uuid是respository创建时自动生成的一个随机数,SVN Client利用uuid判断是否为同一个库。
进入主机,查看主机库的uuid
svnlook uuid /home/svn/repos
会显示主机库的uuid
78312468-8f6a-4e0c-9dc4-2b397672ca84
进入备份机,查看备份机新建库的uuid
svnlook uuid /home/svn/SH2014/SVNdata
会显示新建库的uuid
c7717876-c1c0-4c6c-9b12-70b43bd7116b
将新建库的uuid改成与主机库的uuid相同
svnadmin setuuid /home/svn/SH2014/SVNdata 78312468-8f6a-4e0c-9dc4-2b397672ca84
再次查看新建库的uuid
svnlook uuid /home/svn/SH2014/SVNdata
会显示新库的uuid与主机库的uuid相同了
78312468-8f6a-4e0c-9dc4-2b397672ca84
9、配置Apache和权限
当出现主机宕机需要备份机马上顶上去时,修改一下IP即可。
客户端如果已经有checkout的项目,则需要relocate,relocate 前提条件就是uuid是相同的。
时间: 2024-11-09 00:37:08