svn sync主从同步学习

svn备份的方式有三种:

1svnadmin dump 
2)svnadmin hotcopy 
3)svnsync.

优缺点分析
============== 
第一种svnadmin dump是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。 
缺点是:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。 
个人建议在版本数比较小的情况下使用这种备份方式。 
第二种svnadmin hotcopy原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份; 
优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。 
缺点是:比较耗费硬盘,需要有较大的硬盘支持(俺的备份机有1TB空间,呵呵)。 
第三种svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。 
优点是:当制作成2个镜像库的时候起到双机实时备份的作用;

以上不是自己观点,下面真实记录我的svn sync实验过程

两台机器

server1: 192.168.1.224

server2: 192.168.1.225

都是centos6.5环境

首先在sever1上搭建好了一个svn,然后模拟提交了一些东西

然后在sever2上搭建了一个一模一样的svn,保持空的

现在的目的是将server1同步备份到server2

在server1上直接运行:

svnsync init svn://192.168.1.225/ svn://192.168.1.224/

即svnsync init 目标svn链接  源svn链接,执行同步之前的初始化

这一步失败了,报如下错误:

svnsync: Repository has not been enabled to accept revision propchanges;

ask the administrator to create a pre-revprop-change hook

提示需要在hooks下面创建一个pre-revprop-change hook

简单解释下,hook类似于操作系统的勾子,svn会在收到一些操作请求的时候执行hooks目录下的对应的脚本,例如想要commit的时候做一些事情就可以在对应的脚本下面添加你要执行的命令,下一次在commit 的时候就会触发执行

一开始没明白,不知道应该在源机器上创建还是在目标机器上创建,其实是在目标机器上创建的

然后在目标机器上copy了一份pre-revprop-change.tmpl成pre-revprop-change

再次执行初始化命令

依然报错,这次的错误不一样了

svnsync: Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.

大概就是同步的过程中刚刚创建的hook调用没有成功,然后尝试给pre-revprop-change添加可执行权限,依然失败

依然失败,依然失败,在stack overflow上看到有人提出的解决方法是把pre-revprop-change改成下面这个样子:

#!/bin/sh

exit 0

再次初始化,终于成功,提示先让你输入用户名密码,最后一步的输出如下:

后来经过验证,确实需要可执行权限,改了之后还是失败的原因是hooks执行的结果是失败的,确实执行了

这一步成功之后,下一步同步就直接成功了:

svnsync sync svn://192.168.1.225/

执行这个命令会把没有同步的版本都同步过去

然后为了让server1每次有更新之后都自动同步到server2,可以在server1的commit的hooks最后加上执行一下同步的命令:

svnsync sync svn://192.168.1.225/

这样就完美实现了实时备份,而且在server1出现问题的时候随时都可以直接切换到server2哟

最后有一点要注意的是,我尝试备份到一个不为空的svn,也就是目标svn已经存在要备份的repos的时候,是会失败的,因此,只能备份到一个空的svn

最后还有一个非常重要的要注意的问题就是,如果在直接在目标在做了修改的话,那么后面就没有办法同步了,都会失败,所以,禁止在备份svn上直接做任何操作,这里的花建议专门写一个脚本,在post-commit勾子里面调用,通过脚本来同步,然后判断一下是否同步成功,如果同步失败了需要及时处理,比如可以给相关人员发邮件通知及时处理,防止同步失败了导致server1一旦宕机之后突然发现server2早就没有同步了就晚了。

时间: 2024-08-10 19:17:58

svn sync主从同步学习的相关文章

[记录]CentOS搭建SVN服务器(主从同步)

CentOS搭建SVN服务器(主从同步)1.安装步骤如下: 1)安装: #yum install subversion 2)查看安装位置: #rpm -ql subversion 3)查看版本: #/usr/bin/svnversion --version2.创建svn版本库目录 #mkdir -p /var/svn/svnrepos3.创建版本库 #svnadmin create /var/svn/svnrepos4.进入/var/svn/svnrepos/conf目录 1)authz文件是权

Redis主从同步原理-SYNC【转】

和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,下图为级联结构.   Redis主从复制可以根据是否是全量分为全量同步和增量同步. 1 全量同步 Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份.具体步骤如下:  1)从服务器连接主服务器,发送SYNC命令:  2)主服务器接收到SYNC命名后,开始

Redis主从同步原理-SYNC

和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构. Redis主从复制可以根据是否是全量分为全量同步和增量同步. 1 全量同步 Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份.具体步骤如下: 1)从服务器连接主服务器,发送SYNC命令: 2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成

Linux学习笔记:MySQL主从同步

概括的讲,主从同步就是,从库先导入主库的某一个位置点的备份,然后根据主库的binlog日志再不停地通过增量执行增删改,达到与主库一致. 工作原理: Master开启binlog功能(日志功能): 把Master某个时间点的整库备份导入到Slave中,备份时最好使用master-data=1这个参数: 在Master上分配一个REPLICATION SLAVE的帐号用于同步: MASTER包含一个IO进程,SLAVE的MySQL包括了IO进程和SQL进程(但这两个进程没有关联): SLAVE发起复

20190327 Redis主从同步、三台服务器部署,基于sentinel实现redis主从切换

一.缓存:缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如 CPU 的一级.二级缓存是保存了 CPU 最近经常访问的数据,内存是保存 CPU 经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的 raid 卡有也缓存,都是为了起到加速 CPU 访问硬盘数据的目的一因为 CPU 的速度太快了,CPU 需要的数据硬盘往往不能在短时间内满足 CPU 的需求,因此 PCU 缓存.内存.Raid 卡以及硬盘缓存就在一定程度

redis主从同步原理

redis主从: 作用: 实现数据的实时备份,可用来实现redis的读写分离及redis高可用 主从同步原理: 一主一从环境: 环境:2台redis,一台master一台slave 1,master等待命令进入 2,slave连接master,发送一个sync命令 3,master开始执行BESAVE,并使用缓冲区记录BESAVE之后所执行的所以写命令 4,slave端如果现在有请求进来,可以根据配置项来决定是继续用当前数据做处理客户端的请求还是给客户端返回报错 5,master BESAVE执

Linux服务器集群架构部署搭建(六)数据库服务器MySQL编译安装及主从同步配置(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 数据库企业应用场景 1.1 数据库的企业应用 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小.速度快.总

mysql主从同步设置

1.主服务器地址:192.168.1.244    从服务器地址:192.168.1.245 2.主服务器master设置 1)修改/etc/my.cnf 添加: log-bin = /home/mysql/log/mysql-bin.log server-id=244 (注:主从server id不可重复,建议以IP地址设置) 2)登录mysql 创建用户sync并授权192.168.1.245 mysql> GRANT REPLICATION SLAVE ON *.* to 'sync'@'

Mycat读写分离、主从切换学习(转)

http://blog.csdn.net/zhanglei_16/article/details/50707487 Mycat读写分离.主从切换学习问题一:分表.分库的优缺点,以及分表无法成为主流分表方式:是在将一个大表,在一个db库内,分成多个分表,优点是:分开之后的表,仍然在一个库内,便于查看.管理.缺点:db只能在一个服务器内,不能解决I/O问题,负载集中 分库方式:将一个大表,分布在多个DB中,每个DB只保留一部分数据,所有数据组合起来才是全库的数据.优点:优点是分担IO.负载均衡,可以