Skip to main content

moregeek program

(暂定) SVN分库转移平台使用的技术要点-多极客编程

http://spiritfrog.iteye.com/blog/448578

http://blog.sina.com.cn/s/blog_5eb1a2670100l24i.html

主要参考渣浪博客的文档,不过那个svn仓库重组新结构,反应测试几次才了解.

如果正好您也在切割SVN库,最好看新浪文档,那里很详细,此处主要是我们实际

生产切割报告.


SVN备份策略

SVN库已经切换过来,可是一直没有进行数据备份,真的很佩服自己,不怕死.

SVN备份三种方式

svnadmin dump

svnadmin hotcopy

SVN数据备份方式选择

svn备份不宜采用普通的文件复制备份方式,因为程序运行会导致数据读取不一致的

情况,与MYSQL类似吧。根据资料显示,大师使用rsync命令来进行增量和全量备份时,

结果在后期的复查过程中,发现备份的数据不可用,因此最好使用SVN自带的备份工具。

svnadmin hotcopy

相当于物理意义上复制出一份数据,可是很消耗磁盘资源,而且没有试过如何实现跨机

远程备份。

svnadmin dump/svnadmin load

官方推荐使用备份方式,灵活且支持全量和增量备份,支持版本恢复机制.

如果数据量过多,版本历史数目庞大,会导致备份数据占用过多空间.不过在之前项目

应用使用有过实际生产经验,因此会使用此种方式.



SVN全库备份

svnadmin dump /data/web/svndata/code > svnadmin_code_alldata

命令 dump关键字 SVN源库路径  导出数据    

svnadmin create /mnt/newdir

命令 create创建新搬迁目录 

svnadmin load /mnt/newdir < svnadmin_code_alldata

命令 load导入数据 目的目录 导入数据


SVN增量备份和还原

svnlook youngest /data/web/svndata/code 当前SVN版本库最新版本

svnadmin dump /data/web/svndata/code -r NO. > svnadmin_code_alldata.NO.

只备份对应版本的SVN数据,丢失重要的历史数据

svnadmin dump /data/web/svndata/code -r 1:100 > svnadmin_code_alldata.1to100

svnadmin dump /data/web/svndata/code -r 101:200 --incremental > svnadmin_code_alldata.101to200


数据还原

svnadmin create /mnt/newdir

svnadmin load /mnt/newdir < svnadmin_code_alldata.1to100

svnadmin load /mnt/newdir < svnadmin_code_alldata.101to200



假如将父级SVN库数据抽取data目录的数据,生成新的data仓库.

排除其它不相关空版本,并重新排列.此图列出没有处理前的情况.

(暂定) SVN分库转移平台使用的技术要点_SVN分库转移平台

svndumpfilter include data 从父库挑选出关于data内容

svndumpfilter exclude data other 将data other内容排除外,再创建新库

--drop-empty-revs 选出关于data目录生成的新库,剔除与data库不相关的版本数据

--renumber-revs 生成新库重新生成版本号

以下为实际生产环境使用语句

svndumpfilter include data < backupzz.alldata > backupzz.data.version.alldata --drop-empty-revs --renumber-revs



SVN顶级库目录去除操作,将data目录移到最顶级

之前data在父级位于/data目录,现在需要将数据移置/路径下

这些路径处理必须正确,否则在导入回来时会报错退出.

DATA库父目录处理,直接对dump出文件进行内容修改操作,将下面新建目录删除,

即让新库位于根目录下

Node-path: data

Node-action: add

Node-kind: dir

Prop-content-length: 10

Content-length: 10


PROPS-END



另外顶层目录也有些目录没有生成,也需要添加上面的一些设置

另外还要将以下内容进行替换,反正做数据也挺麻烦的

%s#Node-copyfrom-path: data/#Node-copyfrom-path: #

%s#Node-path: data/#Node-path: #

其它剩余的那个追加执行%s#Node-path: data/#Node-path: # 即可


©著作权归作者所有:来自51CTO博客作者teemomo的原创作品,如需转载,请注明出处,否则将追究法律责任
(暂定) SVN分库转移平台使用的技术要点
https://blog.51cto.com/teemomo/1605966