我觉得我在 ArangoDB 升级过程中做错了什么。升级的最终结果是我的数据库存在,我的用户存在,我的集合存在,但我的集合中没有文档。显然这是一个问题。我遇到过两次此问题,在 Windows 中从 2.3.1 -> 2.3.4 和 2.3.4 -> 2.4 升级。我在这两种情况下都使用了相同的程序:
- 停止了 ArangoDB 服务
- 从 Program Files 备份我的 ArangoDB 目录
- 安装新版ArangoDB
- 将数据库文件夹的内容从旧的ArangoDB目录复制到新目录,不包括系统数据库(我觉得这是我出错的地方......)
- 然后我打开 bin 目录的命令提示符并运行 arangod --upgrade
升级输出对我来说似乎是正确的,它找到旧数据库并升级它们,它们与集合一起存在的事实证明了这一点。但是如前所述,这些集合都是空的。值得庆幸的是,这是在开发环境中,但我担心升级我的生产环境。我做错了什么还是这是一个错误?
最佳答案
我尝试使用 x64 Arango 包通过步骤 2.3.5 到 2.4.1 重现此问题
我做了什么:
首先,从 shell 运行 arangod,它在程序目录之外有自己的数据库目录:
bin\arangod.exe c:\ee --console
创建了一个集合,插入了数据(就像 js/server/tests/aql-optimizer-rule-use-index-for-sort.js setUp()-function 那样) 然后安装新版本,运行
bin\arangod.exe c:\ee --upgrade
然后
bin\arangod.exe c:\ee --console
AQL_EXECUTE("for u in UnitTestsAqlOptimizeruse_index_for_sort_XX return u")
它给了我所有 100 个文件,我将它们放入了收藏。
接下来,我尝试运行 arangod 服务,其中的 var\lib 文件夹位于 Porgram Files 文件夹中。我使用 arangosh 连接,再次将文档插入集合,用
验证db._query("for u in UnitTestsAqlOptimizeruse_index_for_sort_XX return u").toArray();
所有数据都在那里。
然后停止服务,安装2.4.1,停止服务,用explorer拷贝过来ArangoDB 2.4.1\var\lib目录,运行arangod --upgrade 成功重启服务,并使用 arangosh 再次成功地重新验证集合及其文档。
因此,由于这看起来与您所做的相似,您能否尝试使用最少的数据集重现它并将您的 var\lib 目录发送给我们?
关于database - ArangoDB升级丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28069892/