Transfer data and change to a new cluster without downtime

I would like to transfer my data (bucket) from old cluster (some cloud) to a new cluster on AWS.
And I would like to do this without downtime since my service is running in production.
I can think of a few ways to do so, but I not sure which way is the best.
Could I get some advice?

FYI, I am using Couchbase Server 3.0.1 CE

First one is…

  1. Make XDCR on the new cluster (AWS).
  2. After the data is replicated, redirect my application to the new cluster.
  3. Shutdown the old cluster.

For this one, what would be the best way to shutdwon the old cluster? Removing node? Fail-over?

Second one is…

  1. Add the same number of AWS nodes to the old cluster.
  2. Rebalance the cluster.
  3. Redirect my application to the new cluster (AWS).
  4. Remove old nodes and rebalance.

Is this even possible?
Also, the hardware specifications on the new cluster nodes will be different (might including OS).
I am worrying about compatibility when one cluster is consist of different hardware nodes.

Third one is…

  1. User Incremental cbbackup on the old cluster.
  2. cbrestore on the new cluster
  3. Redirect my application to AWS.
  4. Incremental cbbackup and cbrestore on the rest of data.

Is there something like incremental cbtransfer?

I like the first approach, it mimics the high availability between data centers scenario we see frequently. As far as shutdown of the old cluster once the application is pointed to the new cluster, just shut the old cluster down. The steps would be:

[1] Old Cluster, setup XDCR endpoint to new cluster.
[2] Setup XDCR pointing to new cluster. (Make sure all of the data has replicated)
[3] Once there is a suitable time slot, point the application to the new cluster, point the app over at the new cluster.
[4] Shut the old cluster down.

1 Like