On Wed, Mar 23, 2016 at 8:07 AM, Anubhav Kale <anubhav.k...@microsoft.com> wrote:
> Suppose we change the racks on VMs on a running cluster. (We need to do > this while running on Azure, because sometimes when the VM gets moved its > rack changes). > > In this situation, new writes will be laid out based on new rack info on > appropriate replicas. What happens for existing data ? Is that data moved > around as well and does it happen if we run repair or on its own ? > First, you should understand this ticket if relying on rack awareness : https://issues.apache.org/jira/browse/CASSANDRA-3810 Second, in general nodes cannot move between racks. https://issues.apache.org/jira/browse/CASSANDRA-10242 Has some detailed explanations of what blows up if they do. Note that if you want to preserve any of the data on the node, you need to : 1) bring it and have it join the ring in its new rack (during which time it will serve incorrect reads due to missing data) 2) stop it 3) run cleanup 4) run repair 5) start it again Can't really say that I recommend this practice, but it's better than "rebootstrap it" which is the official advice. If you "rebootstrap it" you decrease unique replica count by 1, which has a nonzero chance of data-loss. The Coli Conjecture says that in practice you probably don't care about this nonzero chance of data loss if you are running your application in CL.ONE, which should be all cases where it matters. =Rob