最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何采用svnsync进行双向同步搭建异地容灾SVN版本库
时间:2026-06-20 10:08:46 编辑:袖梨 来源:一聚教程网
svnsync仅支持单向主从同步,不可用于双向场景;其正确用法是构建只读镜像库,通过初始化、定时增量同步及手动接管实现异地容灾。
svnsync 本身不支持真正的双向同步,它是一个单向、只读复制工具,设计初衷是构建主从式备份(master-slave),即从源库(source)向目标库(destination)单向推送变更。强行“双向”会引发版本历史冲突、修订版本号(revision)错乱、svn:sync-* 属性污染等问题,Subversion 官方明确不推荐也不保障双向场景。
但若目标是异地容灾(即主站点故障时快速切换至备用站点,并保持数据尽可能一致),可采用 “主备切换 + 单向同步 + 手动接管” 的可靠方案。以下是实用、可落地的搭建逻辑:
一、明确主备角色与网络可达性
选一台稳定服务器作为主库(Production),另一台异地机房机器作为备库(DR Site)。两者需满足:
- 主库能通过网络访问备库(HTTP/HTTPS 或 svn:// 协议);
- 备库能反向访问主库(仅用于故障后手动回切或验证,非实时同步所需);
- 主备库 SVN 版本建议一致(≥1.4),避免属性兼容问题。
二、在备库初始化只读镜像
备库必须是全新空库,且配置专用钩子允许 svnsync 写入元数据:
- 创建空库:
svnadmin create /path/to/backup_repo; - 进入
hooks/目录,将pre-revprop-change.tmpl复制为pre-revprop-change(Linux)或pre-revprop-change.bat(Windows); - 编辑该文件,确保最后一行是
exit 0(Linux)或exit /b 0(Windows),禁止任何条件判断; - 赋予执行权限:
chmod a+x pre-revprop-change(Linux)或确认 bat 文件可被 svn 进程调用(Windows)。
三、建立单向同步链路
所有操作在备库所在机器上执行:
- 初始化同步关系:
svnsync init http://dr-server:8080/svn/backup_repo svn://master-server/svn/main_repo
(会提示输入主库读账号、备库写账号;建议使用独立低权限账号,如sync_reader/sync_writer) - 首次全量同步:
svnsync sync http://dr-server:8080/svn/backup_repo - 后续增量同步(可定时运行):
svnsync sync --non-interactive http://dr-server:8080/svn/backup_repo --username sync_writer --password xxx
四、实现容灾切换能力
备库默认只读(因 svnsync 不开放提交入口),切换前需人工干预**:
- 停掉主库服务,确认无新提交;
- 在备库 hooks 中临时移除或重命名
pre-revprop-change(防止意外属性修改干扰); - 修改备库
conf/authz和conf/passwd,启用正常开发用户写权限; - 更新客户端工作副本 URL 指向备库地址(
svn switch --relocate或重新 checkout); - (可选)用
svnadmin dump+load将主库最后若干 revision 补充到备库,确保零丢失。
五、避免常见陷阱
以下错误几乎都源于权限或钩子配置不当:
-
“DAV request failed; pre-revprop-change hook failed” → 检查备库
pre-revprop-change是否存在、是否可执行、是否返回 0; -
同步卡在 rev 0 或报 auth 失败 → 确认主库提供读权限、备库提供写权限,且账号密码未被 svn cache 缓存干扰(加
--no-auth-cache); - 备库无法提交 → 正常现象,svnsync 镜像库默认禁写;切换时才开放,勿提前开启;
- 时间不同步导致 propset 失败 → 主备服务器系统时间误差应
不复杂但容易忽略:容灾价值不在“自动双向”,而在“可控、可验证、可回退”的单向镜像 + 明确切换流程。真正可靠的异地容灾,靠的是定期演练切换,而不是依赖工具自动兜底。
相关文章
- 《明日方舟终末地》陈千语怎么样-陈千语值得培养吗 07-04
- 《明日方舟终末地》余烬怎样配队-余烬阵容搭配推荐 07-04
- 《明日方舟终末地》骏卫怎么样-骏卫值得培养吗 07-04
- 《明日方舟终末地》莱万汀怎样配队-莱万汀强力配队推荐 07-04
- 《明日方舟终末地》原木怎样获得-原木获得方法 07-04
- 《长生天机降世》太虚境十天智遗迹幻境通关攻略-详细打法解析 07-04