迁移Subversion服务器遇BDB DB_VERSION_MISMATCH错误求解决方案
解决Subversion仓库迁移时BDB版本不匹配的问题
错误原因
你遇到的BDB0091 DB_VERSION_MISMATCH错误,本质是旧CentOS7服务器上Subversion 1.7.14依赖的Berkeley DB(BDB)版本,与新Ubuntu22服务器Subversion 1.14.3适配的BDB版本不兼容。直接复制仓库文件夹后执行svnadmin upgrade,无法处理跨BDB大版本的环境签名不匹配问题。
推荐解决方案:转FSFS格式迁移
FSFS是Subversion官方推荐的仓库格式,兼容性更强、迁移更稳定,步骤如下:
1. 在旧服务器导出仓库快照
先暂停旧服务器的SVN服务避免写入操作,然后执行导出命令:
# 导出完整仓库到dump文件 svnadmin dump /path/to/old/repository > repo_full_dump.svn # 仓库较大时可分块导出(每100MB一块) svnadmin dump /path/to/old/repository | split -b 100m - repo_dump_
2. 传输dump文件到新服务器
用scp或其他工具将dump文件传到新服务器的目标目录:
scp repo_full_dump.svn user@new-server-ip:/path/to/dump-storage/ # 分块文件需传输所有repo_dump_*文件
3. 在新服务器创建FSFS格式空仓库
svnadmin create --fs-type fsfs /path/to/new/repository
4. 导入dump文件到新仓库
# 单文件导入 svnadmin load /path/to/new/repository < /path/to/dump-storage/repo_full_dump.svn # 分块文件合并导入 cat /path/to/dump-storage/repo_dump_* | svnadmin load /path/to/new/repository
5. 验证与配置
- 执行
svn info file:///path/to/new/repository检查仓库基本信息 - 配置新服务器的SVN服务(如httpd或svnserve),确保权限与旧仓库一致
- 测试checkout、commit等操作,确认仓库功能正常
备选方案(不推荐):升级旧服务器BDB后迁移
若必须保留BDB格式,需在旧CentOS7服务器手动编译安装与新服务器兼容的BDB版本,再执行svnadmin upgrade后复制仓库。但CentOS7软件源的BDB版本较低,手动编译操作复杂且易出问题,因此不推荐此方案。
内容的提问来源于stack exchange,提问作者user26533539
相关产品推荐
相关产品推荐

