配置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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章