Best practice: Transporting data to a new cluster including Sync Gateway

Hi everyone

I need to transport around 3 million docs (4GB) from a single node CE 5.0.0 cluster to a new two-node cluster running CE 6.0. The clusters also run Sync Gateway (1.5 on existing and 2.1 on the new cluster). I have full control over the new cluster, but cannot change much on the existing one.

I have tried a few approaches and have found quite a few niggles, so am interested to hear what the community would suggest as good practice to transport the data across?

As far as I understand it, there are three options here:

  • Backup and restore using cb_backup tool
  • Sync Gateway replication
  • XDCR

In my testing, I have found that XDCR seems to be the most reliable approach - cb_backup seems to take quite long and fail sporadically (or create corrupt backups), SG replication seems to be quite expensive. There are, however, still several complications and options with XDCR too:

  • Is is best to first get replication running and then start SG, or should SG be started before?
  • Should views be transported too or should they rather be recreated?
  • Should indexes be transported or recreated?
  • The current node is still using SG views, and should preferably be upgraded to GSIs. When using XDCR, however, the server seems to create new views appended with 2.1, but also retains the old views. It seems like these views then take very long to build.

Would you recommend using XDCR or rather one of the other approaches? What steps would you recommended to ensure minimum downtime and risk?