Paper on RecordLayer states:
If needed, moving a tenant is as simple as copying the appropriate range of data to another cluster…
This, however, doesn’t seem simple at all. If I have a subspace that is actively used by RecordLayer and I want to move it to another cluster, I need to be really careful to:
- Not introduce downtime
- Not loose any data in the process
Is there any recommended way of performing this operation?
The only solution which comes to mind at the moment is:
- Create a version index on data I want to move
- Start initial copying of the data over to another cluster
- Once the copying is complete, traverse the version index in the ascending order to copy any records that got updated/added/deleted during the initial copying
- Once the copying is more or less caught up, perform a hard switch. During this hard switch, all operations on the subspace are blocked while we copy the last few items left in the version index. Then, we redirect all operations to the new cluster
This is extremely complex and error prone process, so maybe there is a better way that I am missing. Keep in mind that I only need to move a single subspace, not the entire cluster (which is what DR seems to be focused on).