最近公司的svn服务器真的是炒鸡慢慢慢,该服务器为win server2003 内存仅2GB,增加内存仍然无法解决svn慢,系统卡顿的问题,因此怀疑磁盘IO问题,由于该系统比较老安全性又没有保证,考虑将该svn迁移到linux系统。
1.搭建linux环境的svn服务
准备了一台centos7的linux服务器 ,使用yum安装svn ,非常简单
yum -y install subversion
2.迁移win server 上的svn资源库到linux
考虑了两种方式来迁移:
1.svnadmin dump 直接备份整个svn库
2.使用svnsync直接同步到新的资源库
由于第一种方式备份时需要停机,而业务需要又不能停用,所以采用第二种方式,直接同步,Let`s do it!
源svn服务的环境:
svn://192.168.1.110 只有一个资源库 名为CHNI
新svn服务的环境:
svn://192.168.1.120
创建一个空的资源库,并启用
svnadmin create /chni/svn/CHNI
svnserver -d /chni/svn/CHNI
将源服务器的密码和权限配置文件覆盖掉新资源库的配置文件
注意我们需要一个有所有文件夹访问权限的用户 ,不然没法完全同步数据,假设有这个用户,名为:admin 密码:admin
(如果没有可以自己配置一个)
在CHNI/hooks 目录下新建 pre_revprop-change 脚本,并给予可执行权限,内容为:
#!bin/bash
exit 0
初始化同步 svnsync init 目标服务器 源服务器
svnsync init svn://192.168.1.120 svn://192.168.1.110
提示我们输入用户名:admin ,密码 :admin
如果都正确,提示
执行同步操作
至此等待复制完全部版本,大功告成!100G的资源库,同步了2天,最后将新服务器IP改为110 ,无缝替换。。
总结:
所有操作基本上在目标服务器上完成,仅仅需要了源服务器的配置而已。
注意脚本需要可执行权限
同步需要的用户需要有该资源库的所有权限