Can Your Business App Recover to Before a Mistake Without Losing Later Work?
A business app may be able to recover an earlier database state without offering a safe way to undo one mistake in the live system. Ask which recovery method is actually configured, what it restores and how valid work created afterwards will be preserved. “We have backups” does not answer those questions.
This matters when a mistaken import or deletion is discovered after staff have continued working. The decision is whether to investigate an earlier state in a separate environment, repair selected data under a reviewed procedure, or replace the live database with an earlier state. These are different operations with different consequences.
What does point-in-time recovery actually restore?
PostgreSQL's continuous archiving documentation describes a base backup combined with archived write-ahead log files. Recovery replays the recorded changes and can stop at an earlier point, producing a consistent database snapshot for that time. This is a documented database technique, not proof that your hosting plan includes it or that anyone has configured it for your app.
There is an important boundary: the documented method restores an entire database cluster, not a chosen customer or order. Here, “cluster” means the PostgreSQL database collection, not a collection of office computers. Rolling that state back in place is therefore not the same as clicking Undo on one screen.
Do not assume the word “backup” names this particular capability. PostgreSQL also states that logical dumps made by pg_dump or pg_dumpall cannot serve as the file-system-level backup for this continuous-archiving method. Ask the developer to identify the actual recovery arrangement rather than infer it from a file extension or a green backup icon.
A later successful order changes the decision
Consider an invented example. An incorrect import changes customer details in the morning. Before anyone notices, staff add a valid new order and send a message about it. Restoring the whole live database to before the import would also put the database before that later order. It would not unsend the message.
Write down what should happen to activity between the chosen recovery point and the incident response. That includes new records, edits, uploaded files and actions in connected services. Database consistency at an earlier moment is not proof that today's wider business process is consistent with it.
For a first response, ask whether the earlier database can be restored to an isolated environment for investigation while preserving the current state. This is a proposed operational procedure, not a built-in promise of the cited database feature. If selected records are then repaired, require review of their relationships and newer changes before anything is written back. Copying an old customer row over a current one is not a complete repair plan.
How far back is genuinely recoverable?
The PostgreSQL method requires a continuous sequence of archived log files reaching back at least to the start of the base backup. Merely having a recent-looking base backup does not establish that the required archive chain is available.
Ask for the earliest and latest recoverable points the configured service can actually support, how that availability is checked, and who responds when archiving fails. Separate the time of the mistake from the time it was discovered. If the relevant history is already outside the available recovery window, a promise of recovery “to any time” is misleading.
Do not specify an impressive universal number of minutes. Agree a business requirement for acceptable data loss and interruption, then ask the supplier to demonstrate whether the chosen arrangement meets it. A planning target and an observed rehearsal result should remain distinct in the handover.
Keep the recovery copy from behaving like production
As proposed safeguards, require the rehearsal environment to be private and disconnected from live email, payment and automation actions. Use an invented dataset for acceptance, with an earlier bad change and later valid work. A restored test app should not contact customers merely because old pending jobs reappear.
Agree who authorizes live cutover, how ongoing writes are paused if necessary, what current state is preserved first and how the restored app is checked. Files stored outside the database need their own recovery and consistency decision. This guide does not claim a PostgreSQL recovery automatically restores uploads, hosting settings or third-party transactions.
What evidence should you accept?
Ask for a dated rehearsal record showing the selected recovery point, the restored environment, what was recovered and what happened to later test activity. The developer should explain any missing archive, unavailable point or failed restore rather than replace the result with a backup-success screenshot.
Test a selected earlier point, verify the affected test records, and demonstrate the agreed treatment of later valid work and external actions. Record which parts were only discussed and which were exercised. Bring that scenario to a web-app project discussion. The useful commitment is a bounded, demonstrated recovery procedure, not an unlimited Undo button.