What Happens When You Type a URL and Press Enter
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →Backups are only real if you can restore them. The 3-2-1 rule, logical dumps vs point-in-time recovery, how often to back up, and the restore drill that most teams skip until it's too late.
Every developer agrees backups are important. Far fewer have ever restored one. That gap is where disasters live: the backup job that silently failed months ago, the dump file that turns out to be empty, the restore that takes nine hours when the business expected one.
Here's a backup strategy that's simple enough to actually maintain.
Before choosing tools, decide:
These two numbers decide everything else: how often to back up, which method to use, and how much to spend.
A classic that still holds:
If your only backup lives on the same server or account as your database, one mistake, compromised account or provider outage can take both.
A dump exports your data as SQL or a compressed archive:
# PostgreSQL: custom format, compressed, restorable with pg_restore
pg_dump "$DATABASE_URL" -Fc -f backup_$(date +%F).dump
# MySQL
mysqldump --single-transaction --routines mydb | gzip > backup_$(date +%F).sql.gz
Pros: portable between servers and versions, easy to inspect, great for small and medium databases, and handy for copying data to staging. Cons: slow for very large databases, and you lose everything since the last dump.
Physical backups copy the database's files, and combined with the transaction log they allow point-in-time recovery (PITR): restoring to any moment, like "two minutes before someone ran that bad DELETE."
Most managed databases (Supabase, Neon, cloud provider databases) offer automated backups and PITR, sometimes only on paid plans. Check exactly what your plan includes: retention period, PITR availability and how a restore actually works.
Disk or volume snapshots on a VPS are quick and convenient, but make sure they're consistent (the database flushed and quiet, or a snapshot method the database supports) and that they're not your only copy.
A backup you haven't restored is a hope, not a backup. At least every few months:
pg_restore --no-owner -d "$RESTORE_DATABASE_URL" backup_2026-03-01.dump
Teams who do this regularly find problems early: missing extensions, permission issues, files that only contain the schema, a restore that takes far longer than anyone assumed.
Free database plans often have limited backup retention or none at all. If you're on one, your own scheduled dumps aren't optional. (Free database hosting.)
It depends on how much data you can afford to lose. Daily is a common baseline for small apps; busy production systems typically use continuous backups with point-in-time recovery.
Keep three copies of your data, on two different types of storage, with one copy stored off-site at a different provider or location.
No. Replicas copy every change, including accidental deletes, almost instantly. They help with availability and read scaling, but you still need independent backups.
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →There are dozens of HTTP status codes, but about fifteen cover nearly everything. What each one means, when to return it, and the mix-ups (401 vs 403, 301 vs 302) that confuse everyone.
Read →A, AAAA, CNAME, MX, TXT and NS records in plain English, why DNS changes seem slow, and the troubleshooting commands that tell you what is really going on.
Read →