Upgrading Couchbase Server Docker from CE6.0.0 to CE 6.5.1 fails

I am running a single node dev system under couchbase server 5.1.1CE with the official docker image. I now wanted to upgrade to 6.5.1CE. I did so following the upgrade guide be first upgrading to 6.0.0CE and after that upgrading this to 6.5.1CE. I do upgrade a single node by just shutting down docker, change version und startup docker again.

The first step from 5.1.1 to 6.0.0 works fine and all my existing buckets are migrated. But the 2nd step from 6.0.0 to 6.5.1 fails at warmup. The messages in babysitter.log show:

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.

multiple times for all buckets. I took a look at the kvengine source and only found a comment, that collections and repl needs “namespace” as an attribute in the vBucket.

So is there a was to upgrade to 6.5.1CE while keeping my existing buckets? How would I add “namespace” to a bucket in 5.1.1 or 6.0.0?

Thanks,
Mario

1 Like

Really nobody has this issue and nobody can help?

Hi @speckm,

Unfortunately, you are not able to upgrade a node using this method when using Docker. The error you posted shows that the underlying vBucket files used to store the data are not the correct version for the version of Couchbase Server being used. As part of a normal install process (as part of a package manager with your OS), there is a script run which upgrades the vBucket files to the new version, as occasionally we make changes to support new features. This process is usually transparent to the user since it is handled by the installer.

To upgrade when using a Docker container there are a couple of options:

  1. Add a new 6.5.0 node to the existing cluster and then remove the old node (this is similar to an online rolling upgrade)
  2. Take a backup of the data in the old cluster, create a new cluster on the new version, and then restore this backup.

Hope this helps!

Tim

Thanks for the reply. Is there a way to get access to/find the “update scripts” and run them manually in the docker container? I think I could tweak a temp container with a selfmade entrypoint, so the container starts without starting couchbase. Then upgrading the data manually, and then start the “normal” docker 6.5 Version.

Hi everybody,
after investigating this problem in details I finally found a solution:

  1. Shutdown your database container and backup your data :slight_smile:

  2. Start your database with the new 6.5.1 CE docker image.
    The database will not start, as there is a new thing called “namespace” with needs to be updated in your data. So we do this manually.

  3. docker into your running container with
    docker exec -it <containerid> bash

  4. Stop the running instance with
    /opt/couchbase/bin/install/systemd-ctl stop

  5. Start the update process with
    /opt/couchbase/bin/cbupgrade -c /opt/couchbase/var/lib/couchbase/config/
    This will start the update interactively. just answer the questions with yes and the update will run.

  6. After upgrade finishes exit the shell and restart the container with
    docker restart <containerid>

The db server now start normally and should warmup as usual.

Hope this helps.

2 Likes