-
Type: New Feature
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Index Maintenance, Replication
-
None
-
Storage Execution
More and more, when faced with needing to do index build/rebuilds on a production system, we advise customers to do a rolling build, where you take each secondary down, load it standalone, do the work, bring it back into the replset, let lag catch up, repeat on another server.
My idea would be to make this process easier, but building a mongod command which would address the span of doing builds on a single node. The rough process would be:
- Queue a list of indexing tasks
- Fail/Delay if replset would become unelectable.
- Stand down, if primary
- Mark as Hidden, or restart in standalone mode (not sure which is best)
- Do the builds
- Rejoin normal replset status
Motivation: the current process of restarting the node in standalone mode is extremely cumbersome, especially if one's deploying in Kubernetes or other such places, where doing one off configuration changes are an extra load. Additionally, some environments lock down their configs for security purposes.
The easier we make it for people to do things in the correct fashion, the more likely they will do it correctly.
A full rolling build would still require some external agent to trigger each node in sequence, and then wait for repl lag to catch up between each, but this would mean a DBA could affect the process with three commands, and staring at some graphs.