A development team we work with needed realistic data to test against. The classic answer — restore last night's dump into staging — took hours, filled the disk and was stale by noon anyway.
The setup we build instead:
- a real-time replica of the production database;
- ZFS snapshots and clones of the replica's data volume — a clone is a copy-on-write instant snapshot, so it costs almost no extra space and is ready in seconds;
- an Ansible playbook that provisions or refreshes the staging database from a fresh clone end-to-end: clone, start, sanitize, hand over.
The refresh that used to be an overnight job becomes a couple of minutes, at any time of day. Developers get a fresh, near-live copy of real data before stand-up — and per-branch database copies for testing risky migrations.
We describe this approach in Automated Staging Environments. If your team is still babysitting dump restores, let's talk.