Backups and Recovery: When Things Go Wrong
IntroductionDev EnvironmentClientTransportServerAppDataMore

Backups and Recovery: When Things Go Wrong

March 22, 2025

Things will go wrong with your web application. A database might become corrupted, a server could crash, or worst of all, you might experience a security breach. Without backup and recovery systems in place, a bad day can turn into a permanent loss. Here's how to prepare before you need it.

Setting up Automated Backups

Manual backups are better than no backups at all, but automated systems ensure consistency and remove the human error factor. Here's how to set up a reliable backup system:

  1. Determine what needs backing up: Your database is obvious, but don't forget uploaded files, configuration settings, environment variables, and even the application code itself.

  2. Establish backup frequency: How often should backups run? Consider how much data you can afford to lose. For a busy e-commerce site, daily backups might mean losing thousands of orders, while weekly backups might be sufficient for a personal blog.

  3. Implement the 3-2-1 backup strategy: This time-tested approach means having at least three copies of your data, stored on two different types of media, with one copy stored off-site. For example, your primary database, a local backup on a different server, and a cloud backup service.

  4. Set up automation tools: Most hosting platforms offer backup solutions. For databases, tools like mysqldump (MySQL) or pg_dump (PostgreSQL) can be scheduled via cron jobs. Cloud platforms usually provide snapshot capabilities.

  5. Test your backups regularly: An untested backup is just a hope, not a plan. Schedule regular restoration tests to verify your backups actually work.

Backups aren't only for catastrophic failures — they're also invaluable when you need to roll back a problematic deployment or recover from accidental data deletion.

Data Recovery Strategies

Having backups is only half the solution—you also need a clear plan for how to use them when trouble strikes:

  1. Document the recovery process: Write step-by-step instructions for restoring from backups. Include command-line instructions, necessary credentials (stored securely), and the order of operations.

  2. Establish Recovery Time Objectives (RTO): How quickly do you need to be back online? This helps determine what recovery options make sense for your application.

  3. Consider point-in-time recovery: For databases, transaction logs can let you recover to a specific moment, which is useful if you need to roll back to just before a problem occurred.

  4. Plan for partial recovery scenarios: Sometimes you only need to restore specific data rather than everything. Having granular backup strategies gives you more flexibility.

  5. Create a staging environment for recovery: Restore to a separate environment first to verify the backup integrity before replacing production data.

During a crisis is the worst time to figure out your recovery process. Having clear, tested procedures ready to implement can significantly reduce both downtime and stress levels.

Handling Security Incidents

When a security breach occurs, backups play a critical role in recovery, but there's more to consider:

  1. Containment first: Before rushing to restore from backups, ensure the security issue is contained. Disconnecting affected systems from the network might be necessary to prevent further damage.

  2. Identify the compromise point: Determine how the breach occurred. Restoring from backups won't help if you restore to a system with the same vulnerability.

  3. Verify backup integrity: Attackers sometimes target backups or may have compromised systems months before discovery. Verify your backups aren't also compromised.

  4. Consider selective restoration: Rather than restoring everything, you might need to restore only specific data while rebuilding other components from scratch.

  5. Scan for persistence mechanisms: Sophisticated attackers often leave behind multiple ways to regain access. Scan thoroughly before bringing systems back online.

Security incidents require a more cautious approach than simple hardware failures or data corruption. Never rush to restore without understanding the full scope of the breach.

Creating a Simple Incident Response Plan

Every web application, no matter how small, benefits from having a basic incident response plan. Here's how to create one:

  1. Define incident types: Categorize potential problems (data breach, service outage, data corruption, etc.) and their severity levels.

  2. Assign responsibilities: Determine who handles what during an incident. Even in a one-person operation, listing the sequence of tasks helps maintain focus during stressful situations.

  3. Create communication templates: Draft templates for notifying users, stakeholders, or even regulatory authorities if required by laws like GDPR.

  4. Document contact information: Maintain an updated list of everyone who might need to be contacted, including hosting providers, domain registrars, and third-party service vendors.

  5. Establish a post-incident review process: After recovery, analyze what happened and how to prevent similar incidents in the future. This "blameless postmortem" approach focuses on improving systems rather than assigning fault.

Your incident response plan doesn't need to be complex—even a simple document outlining these elements will provide valuable guidance during an emergency.

Conclusion

Backups and recovery planning might not be the most exciting part of web development, but they're among the most important. By implementing automated backups, developing clear recovery strategies, preparing for security incidents, and creating a basic incident response plan, you build resilience into your web application.

Zacznij od czegoś małego — nawet codzienny dump bazy danych do cloud storage to lepiej niż nic. Potem stopniowo rozbudowuj system w miarę jak aplikacja rośnie.

Backup i recovery wpisuje się w szerszy kontekst bezpieczeństwa danych: backup zaszyfrowanych danych at rest wymaga zadbania o klucze szyfrowania — więcej o szyfrowaniu w When and What to Encrypt. Incydenty bezpieczeństwa, przed którymi chronisz się backupem, opisuje Common Attacks Against New Apps — warto przeczytać, żeby wiedzieć co powoduje typowe naruszenia w małych aplikacjach. Podatne zależności jako częsta przyczyna incydentów: Third-Party Libraries.


Źródła: OWASP — Security Logging and Monitoring Failures