SVN主从备份

两套环境:192.168.67.63(主SVN)

192.168.67.60(从SVN)


1.主环境上已经装好SVN并且存在数据仓库/home/svndata在从环境上,新建一/home/svndata_bak仓库:

[root@bsdi home]# svnadmin create /home/svndata_bak
[root@bsdi home]# ll
总用量
drwx------. bhd bhd 4月 bhd
drwxr-xr-x. root root 12月 : svndata_bak
[root@bsdi home]# cd svndata_bak/
[root@bsdi svndata_bak]# ll
总用量
drwxr-xr-x. root root 12月 : conf
drwxr-sr-x. root root 12月 : db
-r--r--r--. root root 12月 : format
drwxr-xr-x. root root 12月 : hooks
drwxr-xr-x. root root 12月 : locks
-rw-r--r--. root root 12月 : README.txt

2.把主环境上的conf下的authz、passwd、svnserve.conf拷贝覆盖掉从环境上的conf下的文件,覆盖之后注意修改svnserve.conf中的路径设置,并且主从环境上的svnserve.conf中的anon-access都要设置成none:

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /home/svndata_bak

3.修改hooks文件夹下的pre-revprop-change(注意主从环境上的都要做同样的修改):

[root@bsdi hooks]# vim pre-revprop-change.tmpl
#!/bin/sh
exit 0
[root@bsdi hooks]# mv pre-revprop-change.tmpl pre-revprop-change
[root@bsdi hooks]# chmod +x pre-revprop-change

4.设置完成之后启动svn,这样就得到一个和主环境上相同用户和权限的从SVN库:

[root@bsdi hooks]# svnserve -d -r /home/svndata_bak --listen-port 2396

5.接下来在主环境上操作,如下这一条命令是初始化版本:

[root@bsdi hooks]# svnsync init svn://192.168.67.60:2396 svn://192.168.67.63:2396 --username limang --password pwd123!@ --no-auth-cache
复制版本 的属性。
[root@bsdi hooks]#

6.同步数据:

[root@bsdi hooks]# svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password pwd123!@
已提交版本 。
复制版本 的属性。
传输文件数据......................................................................................................................................................................
已提交版本 。
复制版本 的属性。
传输文件数据.
已提交版本 。
复制版本 的属性。
[root@vasoyn hooks]#

此时主从数据已经成功同步,在svn浏览器中访问从环境,发现已存在一个一摸一样的仓库。

7.接下来在主环境上使用hooks下的post-commit脚本进行SVN实时同步:

修改post-commit如下:

[root@bsdi hooks]# vim post-commit.tmpl
#!/bin/sh
svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password pwd123!@
[root@bsdi hooks]# mv post-commit.tmpl post-commit
[root@bsdi hooks]# chmod +x post-commit

此时当主环境上SVN有代码提交时,会触发这个脚本并执行里面的命令实现主从同步。

8.设置SVN开机启动:

SVN主从同步的前提是,主从SVN可以互相访问,所以需要将主从SVN都设置开机启动:

修改/etc/rc.d/rc.local并设置该文件为可执行文件:

[root@bsdi hooks]# vim /etc/rc.d/rc.local
#!/bin/bash
svnserve -d -r /home/svndata --listen-port 2396
[root@bsdi hooks]# chmod +x /etc/rc.d/rc.local
[root@bsdi hooks]#

SVN主从备份的更多相关文章

  1. 关于Subversion主从备份方式的调整(全量、增量脚本)更新

    本文引用于http://blog.chinaunix.net/uid-25266990-id-3369172.html 之前对Subversion服务器作了迁移,关于SVN的架构也走了调整,有单一的服 ...

  2. 单机部署redis主从备份

    redis为了避免单点故障,也支持主从备份.个人在做主从备份的实验时,因为机器数量有限,一般非常少有多台机器做支撑. 本文就将叙述怎样在一台电脑上实现redis的主从备份. 同一台机器上部署多个red ...

  3. mysql主从备份及常见问题处理

    1.mysql主从备份基本原理 mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新 ...

  4. mysql主从备份+keepalived自动切换

    数据库这一层需要做到避免单点故障可以是主从备份和主主备份,主主备份可能有性能损耗和数据同步的问题.这里记录下主从备份, mysql进行备份之前确保mysql的版本是一样的,我这里用的都是mysql5. ...

  5. mysql实现主从备份

    mysql 主从备份的原理: 主服务器在做数据库操作的时候将所有的操作通过日志记录在binlog里面,有专门的文件存放.如localhost-bin.000003,这种,从服务器 和主服务配置好关系后 ...

  6. 检测MySQL主从备份是否运行

    通过查看 slave  状态,确保 Slave_IO_Running: Yes Slave_SQL_Running: Yes #!/bin/bash#Author:Darius-Dmysql -uro ...

  7. MySQL主从备份配置实例

    转载自:https://www.cnblogs.com/ahaii/p/6307648.html MySQL主从备份配置实例 场景: 1.主服务器192.168.0.225.从服务器192.168.0 ...

  8. Linux之svn数据备份、还原及迁移

    前言 因管理需求现要将svn数据进行备份,作为运维小哥的我在收到指令后进行了相关操作.当然,领导告知的是要备份,但作为一个有思想的运维,我考虑到的是自己要干的不仅仅是备份操作,还要确保在备份后数据还原 ...

  9. mysql主从备份及原理分析

    一.mysql主从备份(复制)的基本原理mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更 ...

随机推荐

  1. NLP基础

    1  自然语言处理三大特征抽取器(CNN/RNN/TF)比较 白衣骑士Transformer:盖世英雄站上舞台 华山论剑:三大特征抽取器比较 综合排名情况 以上介绍内容是从几个不同角度来对RNN/CN ...

  2. Linux命令集锦:tmux命令

    tmux是一款优秀的终端复用软件,平时用到的强大功能有下面两个: 窗口管理:同时启用多个窗口: 保护现场:连接到远程主机之后,一旦断开,那么当前账户登录的任务就被取消了,但是使用 tmux 可以在断开 ...

  3. C语言JS引擎

    基础知识 SpiderMonkey 简介 和其他的 JavaScript 引擎一样,SpiderMonkey 不直接提供像 DOM 这样的对象,而是提供解析,执行 JavaSccript 代码,垃圾回 ...

  4. Nginx教程[归档]

    前言 其一,Nginx不是随随便便一篇博文就能讲清楚的,严谨地说,笔者连入门者都算不上:其二,此文系前段日子里,学习Nginx时的笔记归档类博文,还有诸多不完整处,仅供参考. 写这篇博文的时间点:20 ...

  5. python 粘包现象

    一. 粘包现象 1. 粘包现象的由来(1)TCP属于长连接,当服务端与一个客户端进行了连接以后,其他客户端需要(排队)等待.若服务端想要连接另一个客户端,必须首先断开与第一个客户端的连接. (2)缓冲 ...

  6. Unity3D热更新之LuaFramework篇[10]--总结篇

    背景 19年年初的时候,进到一家新单位,公司正准备将现有的游戏做成支持热更的版本.于是寻找热更方案的任务就落在了我头上. 经过搜索了解,能做Unity热更的方案是有好几种,但是要么不够成熟,要么不支持 ...

  7. 【VS开发】CListBox智能滚动设置

    添加数据以后,再在下面加句, int nCount = m_myListBox.GetCount(); if (nCount > 0) m_myListBox.SetCurSel(nCount ...

  8. git stash save -a 遇到的坑 , 弹出匿藏错误

    情景一: 用命令行的 : git stash save -u "描述" git stash save -a "描述" -u: 会把没有记录到的文件也保存下来(比 ...

  9. MySQL连接处理方式及最佳并发连接数设置

    MySQL连接处理方式及最佳并发连接数设置 mysql是单进程,多线程的架构,通过创建多个线程来服务不同的用户连接,通常情况下,随着用户连接数的增加,mysql内部用于处理用户连接的线程也会同步的增长 ...

  10. 随笔--第一次使用crontab linux选择编辑器问题

    第一次使用crontab 时,会出现:no crontab for root - using an empty one “Select a editor ......”下面有几个选项,就是叫你选择编辑 ...