SVN主备实施方案

Linux安全运维 (3668) 2023-12-19 11:15:02

备份逻辑图

Master 所在物理机:ESX,192.168.3.231
Slave  所在物理机:ESX,192.168.3.232

SVN主备实施方案_https://www.tiejiang.org_Linux安全运维_第1张

主从同步实施

主从同步方案选择:

方案一:

svnsync init https://192.168.3.200/svn/Doc https://192.168.0.226/svn/Doc
svnsync sync https://192.168.3.200/svn/Doc

但是在测试过程中,由于某几个版本的更新文件过大,传输过程超时而造成不可恢复的中断。

方案二:

主-192.168.0.226上执行:
svnhotcopy E:\Repositories\Doc Z:\svnfullbacktest\Doc

从-192.168.3.200上执行:
svnhotcopy Z:\svnfullbacktest\Doc E:\Repositories\Doc

主-192.168.0.226上执行:
svnsync init https://192.168.3.200/svn/Doc https://192.168.0.226/svn/Doc --allow-non-empty

这样是使用先完全备份的方式,然后再在完全备份的基础上执行同步初始化,然后再在此基础上完成之后的同步。

已使用选用方案二成功测试了Doc Repositories的备份过程,故采用方案二。

实施步骤:

1. 完全备份到备份服务器158上

svnadmin hotcopy E:\Repositories\Doc Z:\svnbackup\Doc
svnadmin hotcopy E:\Repositories\ProjectNew Z:\svnbackup\ProjectNew
svnadmin hotcopy E:\Repositories\Project Z:\svnbackup\Project

2. 复制158上的完全备份到从服务器192.168.3.200

在备份服务器192.168.3.200上将映射的158的Z盘中的Z:\svnbackup\Doc、Z:\svnbackup\ProjectNew、Z:\svnbackup\Project拷到E盘的Repositories目录下

3. 复制参数文件并创建备份用户sync

首先在源服务器192.168.0.226的svnmanager上创建用于同步的用户sync,密码sync,并为每个Repositories添加sync用户,使其具有Read/Write的权限

将源服务器192.168.0.226上的参数文件完全copy到备份服务器192.168.3.200对应的目录下:E:\Repositories\groups.conf,E:\Repositories\htpasswd,E:\Repositories\ VisualSVN-GlobalWinAuthz.ini

4. 修改目标服务器192.168.3.220的hook文件

复制文件E:\Repositories\Doc\hooks\pre-revprop-change.tmpl为E:\Repositories\Doc\hooks\pre-revprop-change.bak,并删除行的bak文件的所有内容,添加一行exit 0。保持其他的tmpl文件不变。

ProjectNew和Project目录同样修改。

5. 执行主从服务器的初始化

svnsync init https://192.168.3.200/svn/Doc https://192.168.0.226/svn/Doc --username sync --password sync --allow-non-empty

svnsync init https://192.168.3.200/svn/ProjectNew https://192.168.0.226/svn/ProjectNew --username sync --password sync --allow-non-empty

svnsync init https://192.168.3.200/svn/Project https://192.168.0.226/svn/Project --username sync --password sync --allow-non-empty

6. 设置更新同步

修改源服务器192.168.0.226上的
Z:\svnbackuptest\Doc\hooks\post-commit.bat
在最后添加一行同步命令:
svnsync sync https://192.168.3.200/svn/Doc --username sync --password sync --non-interactive --trust-server-cert --sync-trust-server-cert-failures  unknown-ca,cn-mismatch,expired,not-yet-valid,other --source-trust-server-cert-failures  unknown-ca,cn-mismatch,expired,not-yet-valid,other
ProjectNew和Project目录页同样进行修改

至此,192.168.0.226和192.168.3.200之间的主从同步建立完成

完全备份实施

备份策略

主服务器(192.168.0.226)每周二、四、六凌晨02:00执行远程备份,将3个Repositories远程备份到192.168.0.158的E:\hotcopyfullbackup对应目录下

从服务器(192.168.3.200)每周三、五凌晨02:00执行远程备份,将3个Repositories远程备份到192.168.0.158的E:\hotcopyfullbackup对应目录下

实施步骤

通过计划任务实施自动备份,详情如下:

1. 目标备份目录:

Z:\svnhotcopyfullbackup\Doc
Z:\svnhotcopyfullbackup\ProjectNew
Z:\svnhotcopyfullbackup\Project

2. 备份命令:

svnadmin hotcopy E:\Repositories\Doc Z:\svnhotcopyfullbackup\Doc\Doc-hc.%date:~0,4%年%date:~5,2%月%date:~8,2%日

svnadmin hotcopy E:\Repositories\ProjectNew Z:\svnhotcopyfullbackup\ProjectNew\ProjectNew-hc.%date:~0,4%年%date:~5,2%月%date:~8,2%日

svnadmin hotcopy E:\Repositories\Project Z:\svnhotcopyfullbackup\Project\Project-hc.%date:~0,4%年%date:~5,2%月%date:~8,2%日

3. 计划任务:

SVN主备实施方案_https://www.tiejiang.org_Linux安全运维_第2张

4. 备份脚本路径

E:\backupscripts
Tips 备份目录名时间设置
******************
年     %date:~0,4%
月     %date:~5,2%
日     %date:~8,2%
******************

增量备份

主服务器(192.168.3.200)通过E:\Repositories\Doc\hooks中的脚本post-commit.bat实施进行增量备份,并且每天晚上11:30将增量备份文件copy一次到158
SVN主备实施方案_https://www.tiejiang.org_Linux安全运维_第3张
目标备份目录沿用之前的Z:\svndeltabackup\Doc、Z:\svndeltabackup\Project 和 Z:\svndeltabackup\ProjectNew。

修改计划任务

取消原有的dump完全备份以及0.226和0.158之间的dump文件移动操作

THE END

发表评论