Backup and point-in-time recovery¶
The Rust server has the same oplog-backed backup/recovery model as the Python server — hot backup archives over the wire, plus offline point-in-time restore. Archives are portable between the two servers: a backup taken from either restores on either. The concept-level docs are in the main tree’s Recovery page; this is the Rust-server surface.
Hot backup (over the wire)¶
The secantusAdmin.* commands work while the server is running:
admin.command("secantusAdmin.backupArchive", archivePath="/backups/db.tar.gz")
admin.command("secantusAdmin.archiveBaseSnapshot") # PITR v2 base snapshot
admin.command("secantusAdmin.restoreArchive", ...)
admin.command("secantusAdmin.pruneOplog")
admin.command("secantusAdmin.pruneTtl")
Pair --oplog-archive-dir (or [oplog] archive_dir in secantusd.toml)
with archiveBaseSnapshot to keep pruned oplog rows recoverable beyond the
live retention window.
Point-in-time restore (CLI)¶
The Rust server’s point-in-time restore is a subcommand of the binary
(the Python server additionally exposes it over the wire as
secantusAdmin.restoreToTimestamp):
secantusd-rs restore --source PATH --target-dir PATH [--to-timestamp SECS[,ORD]]
It rebuilds a fresh data directory as the database was at the target time by replaying a stopped server’s oplog forward:
--source PATH— a stopped server’s data directory, or an extracted backup archive. A live data directory can’t be opened; WiredTiger holds a single-writer lock.--target-dir PATH— fresh directory to rebuild into. Start a new server on it afterwards.--to-timestamp S[,O]— recover to this cluster timestamp (seconds, optional ordinal). Omit to replay the whole oplog (“latest”).--preserve-oplog— carry the replayed oplog onto the restored directory so a change stream there can resume from before the restore point. The default is a fresh oplog timeline (likemongorestore).
Typical flow:
# 1. Stop the server (or extract a backup archive).
# 2. Replay to the moment before the bad deploy:
secantusd-rs restore \
--source ./secantus-data \
--target-dir ./secantus-data-restored \
--to-timestamp 1752694800
# 3. Start fresh on the restored directory:
secantusd-rs --port 27017 --storage-path ./secantus-data-restored
Durability knobs¶
WiredTiger journals every commit; --sync-on-commit additionally fsyncs
per commit (the writeConcern j: true guarantee) at a substantial
throughput cost. Crash recovery is WiredTiger log replay on startup —
identical semantics to the Python server, because it is literally the same
storage engine.