couchdb - 从我的服务器中删除了 Couchdb 1.x,重新安装了 Couchdb 3.x,我如何让具有 .couch 扩展名的旧文件使用它?
问题描述
早上好。
我们已经在我们的 Ubuntu(18.04)服务器上运行 couchdb 很长一段时间了,没有任何问题。不幸的是,IT 部门最近执行了一些更新,这些更新弄乱了服务器上的很多东西。我们已经设法恢复并运行其中的大部分内容,但我们仍在为 couchdb 苦苦挣扎。
我们的 Python 烧瓶网站没有加载,错误日志显示它无法访问 couchdb。经过调查,我们意识到 couchdb 已完全从服务器中删除。
我们重新安装了couchdb,但是安装的版本是版本3,根据我们在安装过程中得到的提示,我们在/var/lib/couchdb中的文件是版本1的,他们建议使用复制器工具将它们升级到版本3.
通过遵循本指南和本指南,我们一直试图做到这一点,但没有成功。我可能是错的,因为我不是 couchdb 专家,但看起来问题是这些教程告诉我们如何从已经运行的 couchdb 复制数据库,而我们现在没有(只有新安装的版本里面没有数据库)。
目前,Python flask 能够连接到 couchdb(新安装的)但没有找到任何数据库,当尝试使用 couchdb 命令手动访问数据库时,我们只会提示:
{"error":"not_found","reason":"Database does not exist."}
我们有一个 couchdb 文件的备份,它们看起来像一堆带有.couch扩展名的文件。它们也仍然在 /var/lib/couchdb 中。
问题是,我们如何才能使这些.couch文件与我们新安装的 couchdb 版本一起使用?
提前感谢任何可以提供帮助的人。
解决方案
我终于设法做到了,这就是:
我在虚拟机上安装了旧版本的 Ubuntu 服务器(我使用了 VirtualBox)并安装了 couchdb 1.6。我使用 FileZilla 手动将我的 .couch 文件添加到 /var/lib/couchdb 中。我测试了一切正常并且确实如此。
之后我将 couchdb 1.6 升级到 couchdb 2.3 并使用 couchdb 2 附带的 couchup 工具(注意 couchdb 2 和 3 需要您设置管理员密码)。此页面显示如何使用它。couchup 脚本位于 /opt/couchdb/bin 中。
我导航到此文件夹并运行以下命令:
$ python couchup list # Shows your unmigrated 1.x databases
$ python couchup replicate -a --login admin --password password # Replicates your 1.x DBs to 2.x
$ python couchup rebuild -a --login admin --password password # Optional; starts rebuilding your views
$ python couchup delete -a --login admin --password password # Deletes your 1.x DBs (careful!)
$ python couchup list # Should show no remaining databases!
事实证明,couchdb 2.x 数据库与 couchdb 3 一起工作得很好,因此不需要其他任何东西。我将复制的数据库上传到我部署的服务器,它立即工作。
信息:请注意,使用 couchdb 1,您创建的每个数据库都显示为一个文件。(例如 db1.couch、db2.couch 等),但对于 couchdb 2 和 3,它们都位于文件 _dbs.couch 中(您可能想要传输碎片、_users.couch 和 /var/lib 中的其他文件/couchdb 以确保一切正常)。
信息 2:couchup 实用程序仅默认安装在 couchdb 2 中,如果您直接跳转到 couchdb 3,您将不会拥有它。但是,couchup 只是一个 python 脚本,我相信可以从这个 github 页面下载它,所以你甚至可能不需要安装 couchdb 2(我没有尝试过这种方式,所以不能保证)。
推荐阅读
- java - 如果他超过 24 格,我想杀死他
- linux - 为什么父进程使用waitpid显式回收子进程的资源?
- java - Java中的多态性错误:找不到符号
- angular - 带有 Ionic 3 应用程序的 webview 3 插件的奇怪行为
- angular - 渲染 angular2 HashMap
> - php - PHP with Serverless(在 AWS Lambda 上):PDO 连接问题
- android - 调试我的代码获取 createHotwordData 异常
- ios - 为什么我的 webfonts 不再适用于 iOS 邮件客户端?
- c# - 如何将变量注入c#中的每个类或方法
- c - 如何修复我的参数,使其获得正确的值