Splitting While Live

Shard 3 has outgrown its host and must be split into two shards while the service keeps serving traffic. Which steps belong in a safe online split?

A

Briefly stop writes to the affected range, drain the last events, flip routing to the new shards, and keep the source readable for rollback

B

Drop the source shard as soon as the routing flip lands so that no client can be served a stale read from the copy left behind

C

Copy a consistent snapshot of shard 3 into both targets, then replay its change stream from the snapshot position until replication lag is near zero

D

Filter each target to the key range it will own, and compare row counts and checksums against the source before cutover

E

Repoint the routing tier at the two new shards first, then backfill shard 3's historical rows in the background while the new shards already serve reads