4

我需要在不同位置的两台台式计算机之间来回迁移一些 CouchDB 数据库数据。其中一台计算机是 Windows XP,一台是运行 OS X 10.5 的 Macintosh。两者都不能通过互联网实际连接到另一个(PC 有防火墙,Mac 没有快速的互联网访问)。但我确实有一个来回携带的 USB 拇指驱动器。

有没有办法为 CouchDB 进行数据库转储(如 MySQL 的 mysqldump),以便我可以从一个导出并导入到另一个?我阅读了有关数据库复制的信息,但它似乎只存在于两个可以相互通信的实时数据库之间。我可以复制原始数据库文件,但我不确定 PC 运行的是什么版本的 CouchDB(它是最新的原生 Windows CouchDB 安装程序,它告诉我 0.0.0),Mac 运行的是最新版本的CouchDBX,而且我不确定文件版本是否兼容。

CouchDB 的复制和版本控制功能对我的应用程序非常有吸引力,因此我期待着进行此设置。

编辑:看起来你要么需要:

  • couchdb 直接复制到另一个(或相同的)couchdb 服务器
  • 来自相同版本的 couchdb 的 couchdb 数据库文件
  • couchdb-python 工具(“couchdb-dump”和“couchdb-load”),但由于某种原因,我无法让它们在 WinXP+Python 2.6.2 上可靠地工作(转储“有效”但加载说它未能通过完整性检查)

这真是令人沮丧。:/

4

3 回答 3

4

已经发布了一些针对 Windows 的实验性二进制文件,但对于 Windows 版本的 CouchDB 来说还处于早期阶段 - 如果您正在执行 Windows 安装,预计会出现一些问题。

我猜你家里有Mac,也许Windows 在公司防火墙后面工作。防火墙不应阻止端口 80。如果您可以从 PC 的端口 80 上远程登录到 Mac 的 IP 地址,则应该可以通过端口 80 进行复制。

或者,couchdb-python 包含 couchdb-dump 实用程序。如果您正在运行 couchdb 0.9.1,则需要 couchdb-python 0.6.0 才能使用 couchdb。

couchdb-dump --version 将确认您的 couchdb-python 版本

就像是:

couchdb-dump http://localhost:5984/prod > 20090724.dump

将从在默认端口上运行的 couchdb 中将名为 prod 的数据库转储到名为20090724.dump的序列化文件中。它将列出它正在输出的每个文档的 ID 以及任何设计文档。

使用 couchdb 0.9.1 和 couchdb-python 0.6.0,这应该在 OS X 上运行良好(我刚刚在我的 Leopard 机器上尝试过)。我建议在 Mac 上进行此设置并确认步骤,然后再查看 Windows 等效项。

于 2009-07-26T02:10:45.187 回答
0

Couch DB 的概念之一是具有断开连接的信息副本,就像离线 Notes 数据库支持分布式信息管理一样。因此,在一个 CouchDB 实例中拥有一个断开连接的数据集,然后和现在针对其他服务器实例复制它可能是一种常见的情况。

在此配置中,您的应用程序可能会处理任一系统中的更改,它至少会检测到冲突并让您有机会处理它们。我目前正在试验的正是这种情况,以便在我大部分断开连接的笔记本电脑和家里的“服务器”上都有一组通用信息。

于 2009-07-09T21:50:07.223 回答
0

Couchfuse可能是您感兴趣的一个选项。“Couchfuse 是一个 FUSE 文件系统,它将 Couchdb 数据库公开为文件系统文件夹。”

于 2010-10-05T18:21:36.217 回答