关于Subversion主从备份方式的调整(全量、增量脚本)更新
本文引用于http://blog.chinaunix.net/uid-25266990-id-3369172.html
之前对Subversion服务器作了迁移,关于SVN的架构也走了调整,有单一的服务器改为主从备份的方式。在“subversion迁移过程中增量备份脚本”中提到了增量备份的方式,但是运行一段时间,发现备份出错,提示导入的文件已存在,于是重新检查,修改了脚本。现在一直稳定运行着。
今天重新回顾,发现了之前文章很多错误的地方,对文章作了更新,附上Subsection 全量和增量备份脚本。
OS:RHEL 5.4
主:192.168.0.1
从:192.168.0.2
Subversion版本:svn, version 1.6.6 (r40053)
版本库:mysvn
全量备份:
天之前的备份文件。
- #!/bin/bash
- #function:SVN全量备份
- #Author: 志在千裏 2012-4-30
- svn_repos="/home/svn/mysvn" #版本库目录
- backup_dir="/home/svn/backup" #备份目录
- next_backup_file="week_incremental_backup".`date %Y%m%d`
- log="$backup_dir/week_backed_up.log" #日志文件
- echo "********************"`date`"***************">> $log
- echo "SVN ALL DUMP start!">> $log
- last_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`" #最新版本
- if [ -f $next_backup_file ];then
- echo "No new revisions to backup."
- exit 0
- else
- /usr/local/subversion/bin/svnadmin dump --incremental --revision 0:$last_rev $svn_repos > $backup_dir/$next_backup_file #0版本,到最新版本的全量备份
- fi
- echo "Last:$last_rev">> $log #记录版本库最新版本
- #删除30天之前的备份数据
- find $backup_dir -type f -mtime +30 -exec rm -rf {} \; | tee -a $log
- echo "********************"`date`"***************">>$log
那么如何还原呢?
- /usr/local/subversion/bin/svnadmin load /home/svn/mysvn 备份文件
增量备份:
较昨天记录最后版本,导出新增的版本,使用load 将每日增量备份导入备份服务器。
说明:nfs降远程文件系统挂载到主服务器,方便本地备份和传输
1、主服务器增量备份时间要比从服务器增量导入时间较前,保证增量备份已完成。
2、备份起点在上一次备份最新版本+1个后开始备份,删除前一天的增量备份文件。
备份:
- #!/bin/bash
- #function:SVN增量备份
- #Author: 志在千裏 2012-4-30
- svn_repos="/home/svn/mysvn" #版本库
- backup_dir="/mnt/svnaddevreyday" #nfs挂载从服务器192.168.0.2的目录
- next_backup_file="add_incremental_backup".`date %Y%m%d` #增量备份文件
- log="$backup_dir/last_add_backed_up.log" #日志文件
- repo="$backup_dir/svn.txt" #记录版本库最新版本
- echo "********************"`date`"***************">> $log
- echo "SVN ADD DUMP start!">> $log
- first_rev="`cat $repo`" #备份起点
- last_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`" #注服务器版本库最新版本
- slave_rev="`cat $backup_dir/slave.txt`" #从服务器提供的校验版本
if [ $first_rev -ne $slave_rev ];then
- echo "SVN Slaves is error, please check. " | mail -s "SVN slave is ERROR! first_rev !== slave_rev" linlianpengit@sina.com #主服务器备份起点版本和从数据最后版本不一致,则邮件报警
else
- /usr/local/subversion/bin/svnadmin dump --incremental --revision $first_rev:$last_rev $svn_repos > $backup_dir/$next_backup_file #上一次记录的版本,到最新版本的增量备份
- fi
- echo "Fist:$first_rev">> $log
- echo "Last:$last_rev">> $log #写入日志文件
- dump_rev=$(($last_rev 1)) #下一次备份起点,重点 +1版本,否则报错
- echo "$dump_rev">$repo #覆盖上一次备份起点
- #删除之前的增量备份文件
- rm -rf $backup_dir/add_incremental_backup.$(date %Y%m%d --date='1 days ago')
从服务:
导入增量数据:
- #!/bin/bash
- #function:SVN增量导入
- #Author: 志在千裏 2012-4-30
- svn_repos="/home/svn/mysvn" #从服务器192.168.0.2版本库目录
- backup_dir="/home/svn/svnaddevreyday" #nfs远程共享主服务器192.168.0.1目录
- log="$backup_dir/last_load.log" #日志文件
- echo "********************"`date`"***************">> $log
- echo "SVN load start!">> $log
- first_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`"
- echo "First:$first_rev">> $log
- /usr/local/subversion/bin/svnadmin load $svn_repos </home/svn/svnaddevreyday/add_incremental_backup.* 2>&1 >>$log #导入增量备份文件
- last_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`"
- echo "Last:$last_rev">> $log #记录最新版本号
- repo_slave=$(($last_rev+1)) #作为检测主服务器和从服务器数据是否同步的判断数据
- echo "$repo_slave">/home/svn/svnaddevreyday/slave.txt
- echo "********************"`date`"***************">>$log
- #删除增量备份文件
- rm -rf /home/svn/svnaddevreyday/add_incremental_backup.*
- echo "SVN load Eed!">> $log
关于Subversion主从备份方式的调整(全量、增量脚本)更新的更多相关文章
- Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...
- Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录
Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...
- 【MySQL】全量+增量的备份/恢复
生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...
- Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景:每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份 ...
- Elasticsearch 索引的全量/增量更新
Elasticsearch 索引的全量/增量更新 当你的es 索引数据从mysql 全量导入之后,如何根据其他客户端改变索引数据源带来的变动来更新 es 索引数据呢. 首先用 Python 全量生成 ...
- innobackupex在线备份及恢复(全量和增量)
Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品.Xtrabackup由个部分组成:xtrabackup和innob ...
- [MySQL] innobackupex在线备份及恢复(全量和增量)
安装percona-xtrabackup 方法1: percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz(D:\share\src\linux-mysql) ...
- Xtrabackup全量 增量备份详解
xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...
- Hbase实用技巧:全量+增量数据的迁移方法
摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...
随机推荐
- [分享]前端javascript插件(均开源)
记录并分享一些自己使用过的插件,便于以后有相应的功能需要使用可以及时想到. 1:数字插件countUp.js 功能:用于动态显示数字的增加和减少 项目github地址:http://inorganik ...
- Java压缩图片
阅读目录 前言 压缩的要求 实现 优点 其他功能 前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的 ...
- sublime text3安装js提示的插件
今天安装Sublime Text3的js插件,在网上查了很多资料,为了方便以后看,写一个安装插件的总结和方法. 要安装js相关的插件,就要先安装一个Package Control(插件管理器)的插件, ...
- C语言基本语法——预处理器和预处理指令
1.什么是预处理器 2.什么是预处理器指令 3.预处理器指令 4.宏指令 5.宏函数 6.宏函数的优缺点 7.条件编译指令 1.什么是预处理器 • 预处理器是一个程序,用来处理源程序中的预处理指令. ...
- 51nod 1392 装盒子(费用流)
如果权值为\(1\)就是最长反链. 然而并不是.考虑用费用流. 把每一个盒子\(i\)拆成i和\(i+n\). 设源点为\(S\),汇点为\(T\). \(S\)向每一个i连容量为\(1\),费用为\ ...
- [USACO18JAN] Lifeguards S (线段树:扫描线面积)
扫描线裸题没什么好说的 注意空间不要开小了!!! #include <cstdio> #include <cstring> #include <algorithm> ...
- map和multimap映射容器
map容器 map所处理的数据与数据库表具有键值的记录非常相似,在键值与映射数据之间,建立一个数学上的映射关系.map容器的数据结构仍然採用红黑树进行管理.插入的元素键值不同意反复,所使用的结点元素的 ...
- Hadoop学习;測试;启动bug;secondary合并edits到fsimage
一个Hadoop集群拥有多个并行的计算机.用以存储和处理大规模的数据集 Hadoop强调代码向数据迁移 要执行的程序在规模上比数据小的多,更easy移动,此外通过网络移动数据比载入执行程序更花时间,这 ...
- JAVA设计模式之【桥接模式】
桥接模式 蜡笔中颜色和型号之间存在耦合 毛笔中,颜色和型号解耦了 如果软件系统中某个类存在两个独立变化的维度,桥接模式可以将两个维度分离出来 角色 抽象类 扩充抽象类 实现类接口 提供基本操作 抽象类 ...
- JAVA设计模式之【外观模式】
通过引入一个外观角色来简化客户端与子系统之间的交互. 顾客无需直接和茶叶.茶具.开水等交互,整个泡茶过程由服务员来完成,顾客只需与服务员交互即可. 通过引入一个外观角色可以降低原有系统的复杂度,同时降 ...