配置svn的实时双备

场景:为了保证svn服务使用的稳定性,减少物理原因导致对svn数据和服务的影响

处理方案:使用svn提供的svnsync工具实时做一次备份
特点:低成本稳定保护数据,但无法对svn服务的稳定性提供帮助,如正在使用svn发生物理丢失,只能快速配置新svn服务

具体操作:

整体思路:

步骤1

配置主svn环境,可以http访问 ,访问地址为:192.168.16.194:82/svn/proj

配置从svn环境, 可以http访问,访问地址为:192.168.16.18/svn/proj_b

如果是window 可以使用virsualsvn 进行快速安装配置;同时在服务中找到服务virsualsvn server服务 用系统管理身份运行

如果是centos环境需要

1、配置subversion;
2、配置apache(配置关键点 mod_dav_svn.so 和mod_authz_svn.so, 以及location svn的配置)
3、配置nginx(可选)
4、创建的库路径 如:/home/www/svndata 要配置权限和用户组,关键点:

chown -R Apache:apache svn库
chmod -R 757 svn库

步骤二

svn版本是 主库同步到从库,故先到从库进行配置

1、从库已新增为proj_b
进入proj_b/hooks新增并修改pre-revprop-change
新的脚本如下:
exit 0

2、初始化
在机器B上

svnsync init file:///svn/proj1 http://192.168.16.194:82/svn/proj1 

会提示输入用户名和密码,这里提供的用户名和密码

是可以完全读取http://192.168.0.1/svn/proj1的用户名和密码

3、同步
在机器B上
svnsync sync file:///svn/proj1
依然会提示输入用户名和密码,不过,你可以在这个命令之后加上 username 、password参数,
例如svnsync sync file:///svn/proj1 –username username –password password

4、主库(来源库)实时备份同步
在主库的 hooks下,启用 post-commit (如果windows 则用post-commit.bat)

  set SVN="D:\Program Files\VisualSVN Server\bin\"
%SVN%svnsync.exe sync --non-interactive http://192.168.16.181/svn/proj_b --username *** --password ***
  (centos)
  svnsync synchronize --non-interactive http://192.168.16.181/svn/proj_b  --username syncuser --password syncpass

5、检查从库和主库的版本, 测试主库的实时备份功能

过程中碰到的几个问题

1
如果在同步的时候遇到下面的提示,可能是由于原始版本库同时正在提交:

从目标版本库获得锁失败,当前被“xxxxx”持有
如果是在svn中,可以使用svn cleanup来解除锁定。但是svnsync并没有这个功能。我们可以使用下面的代码来解除锁定:

svn propdel svn:sync-lock --revprop -r 0 file:///var/svn/project1/
# 删除属性 “svn:sync-lock” 于版本库版本 0

2
在主库上配置 pro-commit.bat 文件后,执行bat 文件或者提交新的版本,提示:svnsync: warning: W200007: Target server

does not support atomic revision property edits; cons
pgrading it to 1.7 or using an external locking program
svnsync: E175008: While handling the ‘svn:sync-lock’ property on ‘/svn/proj_b/!svn/bln/0’:
svnsync: E175008: Can’t open file ‘/home/www/svndata/proj_b/db/write-lock’: Permission denied

该问题发生的原因 说明目标库的对应文件的权限设置有问题;

chown -R apache:apache 备份库
chmod 757 备份库

3
如果备用库,被单独修改了或者增加了版本
在备库环境下:

svn propset --revprop -r0 svn:sync-last-merged-rev 40482 http://slave.heylinux.com/svn-proxy-sync/project1
再尝试 svnsync sync file:///var/svn/project1/

具体操作参考链接:
http://www.cnblogs.com/jifeng/p/4297709.html 部署svn

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值