docker - 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 恢复?
解决方案
在详细研究了这个问题后,我终于找到了解决方案:
关闭您的数据库容器并备份您的数据: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 服务器现在正常启动,并且应该像往常一样预热。
推荐阅读
- typescript - 打字稿,自动从对象键推断类型
- angular - 在 Ionic 3 应用程序上收到推送通知时调用哪个函数?
- react-native - Expo SDK expo-Sharing 翻译语言并添加更多项目
- apache-kafka - Kafka Connect BigQuery Sink Connector 从 Schema Registry 请求不正确的主题名称
- minecraft - Material material = (new Location(w,x,y,z)).getBlock().getType() 是否有效?
- azure-data-factory-2 - Azure 数据工厂 - 如何修剪双引号并转换为字符串?
- oracle - 如何使用 x 输入参数和 x 参数的输入/输出组合编写 PL/SQL 过程
- python - 对其中包含字符串的类进行字符串排序
- c++ - QListWidget 在列表底部添加项目
- c - 为什么 (tete->val)=0 而不是 1823 的值