Back to blog
Blog

Backup And Restore That Just Works

17 June 2026

New in go53

go53.eu

Backup & Restore that just works — full snapshots plus a live WAL

Losing a DNS zone shouldn't mean losing your weekend. go53 now ships with built-in full backups and a compact Write-Ahead Log (WAL) — so you can roll your authoritative server back to any point in time with two commands. No external database tooling, no fragile scripts. Local-first, operator-friendly, and fast.

?️ One-command snapshots

A single tar stream with zones, runtime config, TSIG keys and DNSSEC material.

⏱️ Point-in-time recovery

Replay logical WAL events on top of a base backup to reach any moment you choose.

? Continuous archiving

wal-follow streams new segments to a directory, hands-free.

How it fits together

A full backup records the WAL sequence visible at the start and end of the snapshot. From there, every mutating API call appends a compact binary event to the WAL. Recovery is simply restore the base, then replay the WAL — in order, until you hit your target.

go53 backup and restore lifecycle: live server WAL, base backup and wal-follow archiving, then point-in-time restore
The full lifecycle — base backup and continuous WAL archiving feed a point-in-time restore.

Turn on continuous WAL archiving

Point the follower at a directory and let it run under your service manager. It tracks its own progress in .go53-wal-follow.seq and writes each segment atomically — so an archive file is never half-written.

# Continuously archive new WAL segments into a directory
go53ctl backup wal-follow --dir /backup/go53/wal --interval-sec 60

Take a base backup

# Write a full tar backup
go53ctl backup create --out /backup/go53/base.tar

Inspect the WAL boundary the snapshot recorded

tar -xOf /backup/go53/base.tar manifest.json # -> snapshot_end_seq

Restore: base first, then WAL

Restore the base backup, then replay each WAL file whose first sequence is greater than the backup's snapshot_end_seq, in order, until you reach the point you want.

# 1) Restore the full backup into the running local instance
go53ctl restore backup /backup/go53/base.tar

# 2) Replay archived WAL segments in sequence order
go53ctl restore wal /backup/go53/wal/go53-wal-00000000000000000124-00000000000000000180.g53wal
One rule to remember: don't run administrative writes while a restore is in progress. Restore replaces persisted state in the running node and reloads runtime data afterward.

Why operators love it

  • Local-first & secure: everything runs over the same Unix admin socket as go53ctl — never exposed on the TCP admin API.
  • Storage-agnostic by design: the WAL is a logical go53 log, not database pages, so recovery replays go53 operations and survives future storage-backend changes.
  • Tamper-evident: exported files carry the GO53WAL1 magic header, length-prefixed records and per-record checksums — truncated or corrupted exports fail loudly on decode.
  • Predictable retention: wal_retention_days (default 14, 0 = keep forever) controls the internal WAL; your external archives stay under your control.

Full backups, continuous WAL, point-in-time restore — three commands, zero drama. Read the full backup documentation → (Available at release or @feature/backup branch)