最新消息:

SVN专题-备份与迁移

IT技术 ipcpu 3118浏览

SVN专题-备份与迁移

一、 备份策略

svn的备份方式一般有三种:

1、svnadmin dump
2、svnadmin hotcopy
3、svnsync

TIPS
注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令。
笔者曾经用 rsync命令来做增量和全量备份,在季度备份检查审计中,发现备份出来的库大部分都不可用,因此最好是用svn本身提供的功能来进行备份。

以上三种方式各自的优缺点如下:

第一种svnadmin dump是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。
缺点是:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。
个人建议在版本数比较小的情况下使用这种备份方式。

第二种svnadmin hotcopy原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份;
优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
缺点是:比较耗费硬盘,需要有较大的硬盘支持。

第三种svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。
优点是:当制作成2个镜像库的时候起到双机实时备份的作用;
缺点是:当作为2个镜像库使用时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样子”;而当作为普通备份机制每日备份时,操作又较前2种方法麻烦。

二、备份命令

dump、hotcopy、svnsync三种备份方式的备份方式如下:

2.1、全备份

  1. #dump备份
  2. svnadmin dump myrepos > dumpfile
  3. #hotcopy备份
  4. svnadmin hotcopy path/to/repository path/to/backup --clean-logs
  5. #svnsync备份
  6. $svnsync init 目的库 源库
  7. $svnsync sync 目的库

TIPS
svnadmin hotcopy的方式可以将目的地址设置为NFS的远程地址,就可以直接备份到其他的机器。
svnsync的方式可以在svn hook中写入svnsync脚本实现实时同步。
svnsync不能对已经存在数据的版本库进行init操作。

2.2、增量备份

使用svnadmin dump的–incremental选项来实现

svnadmin dump 版本库路径及名称 –revision 上次导出的版本号:到本次要导出到的版本号 –incremental > 导出的命名

  1. svnadmin dump myrepo --revision 1001:2001 --incremental > myrepo-1001-2001.dump

三、还原命令

  1. svnadmin load 要恢复的版本库路径及名称 < 导出的命名
  2. svnadmin hotcopy path/to/repository path/to/backup --clean-logs

TIPS
svnadmin load命令还原时,conf目录和hook目录不能还原。
svnadmin hotcopy 复制的是整个目录,所以conf和hook目录是平移过来的。

四、备份校验

  1. svn log -r 'HEAD' http://svn.changyou.com/websvn/npt.changyou.com/
  2. svn log http://svn.changyou.com/websvn/npt.changyou.com/
  3. svnlook youngest SVN目录

五、SVN的UUID

使用svnadmin dump/load 、svnadmin hotcopy 来备份和还原时,UUID会保持不变。
使用svnsync来同步时,需要手动设置成一致的。否则客户端会出现错误。

UUID查看和设置方法

  1. svnlook uuid SVN目录
  2. svnadmin setuuid SVN目录 $SVNUUID

对低于 subversion-1.5 的系统可以参照下面的文章设置
http://chowroc.blogspot.hk/2009/05/uuid-of-subversion.html

六、备份时间对照

整个SVN版本库43M
svnsync 耗时0m42.629s
dump 耗时0m1.721s
hotcopy 耗时0m0.215s

svn dump时间明显快于其他备份方式。svnsync方式最慢。

七、大数据量版本库迁移

当版本库数据达到一定规模时,可以使用svnadmin dump 增量方式,每次导出一部分数据进行迁移(迁移最好安排在使用频率较少的时间)。

通过多次增量备份和恢复来完成迁移。

八、参考文章

http://www.361way.com/svn-backup/2867.html
http://carywu.blog.51cto.com/13185/207571

转载请注明:IPCPU-网络之路 » SVN专题-备份与迁移