首页 > 解决方案 > Couchbase 社区服务器从 CE5.1.1/CE6.0.0 升级到 CE6.5.1 失败

问题描述

我正在使用官方 docker 映像在 couchbase 服务器 CE5.1.1(社区版)下运行单节点开发系统。我现在想升级到 CE6.5.1。我按照升级指南执行此操作,首先升级到 CE6.0.0,然后升级到 CE6.5.1。我只是通过关闭容器来升级单个节点,再次更改容器版本和启动容器。

从 CE5.1.1 到 CE6.0.0 的第一步有效,我现有的所有存储桶都已迁移。但启动 CE6.5.1 映像后,从 CE6.0.0 到 CE6.5.1 的第二步在预热时失败。babysitter.log 中的消息显示:

memcached<0.114.0>: 2020-06-27T13:00:56.812806+00:00 CRITICAL () Warmup::createVBuckets aborting warmup as vb:2 datafile is unusable, name-spacing is not enabled.

所有桶多次。我查看了 kvengine 的源代码,只发现了一条评论,即 collections 和 repl 需要“命名空间”作为 vBucket 中的属性。

那么有没有办法在保留现有存储桶的同时升级到 CE6.5.1?我如何将“命名空间”添加到 CE5.1.1 或 CE6.0.0 中的存储桶中?还是我必须对 CE6.0.0 进行完整备份和 CE6.5.1 恢复?

标签: dockerupgradecouchbase

解决方案


在详细研究了这个问题后,我终于找到了解决方案:

关闭您的数据库容器并备份您的数据:slight_smile:

使用新的 6.5.1 CE docker 映像启动您的数据库。数据库不会启动,因为需要在您的数据中更新一个名为“命名空间”的新事物。所以我们手动执行此操作。

使用 docker exec -it bash 将 docker 放入正在运行的容器中

使用 /opt/couchbase/bin/install/systemd-ctl stop 停止正在运行的实例

使用 /opt/couchbase/bin/cbupgrade -c /opt/couchbase/var/lib/couchbase/config/ 启动更新过程,这将以交互方式启动更新。只需用“是”回答问题,更新就会运行。

升级完成后退出 shell 并使用 docker restart 重新启动容器

db 服务器现在正常启动,并且应该像往常一样预热。


推荐阅读