数据库备份策略
备份策略参考
| 类型 | RTO | RPO | 存储 | 适合 |
|---|---|---|---|---|
| 全量备份 | 数小时 | 24h | 高 | 每周基准 |
| 增量备份 | 数小时 | 24h | 低 | 每日变更 |
| WAL/Binlog流 | 分钟级 | 秒级 | 中 | PITR |
| 快照(云) | 分钟级 | 1–4h | 中 | 云虚拟机 |
PostgreSQL 备份与恢复
# Full dump (logical backup) pg_dump -h localhost -U postgres -d mydb -F c -f mydb.dump # -F c = custom format (recommended, supports parallel restore) # Restore pg_restore -h localhost -U postgres -d mydb_new -j 4 mydb.dump # -j 4 = 4 parallel workers # Point-in-Time Recovery setup # postgresql.conf: wal_level = replica archive_mode = on archive_command = 'aws s3 cp %p s3://my-bucket/wal/%f' # Continuous backup with pgBackRest pgbackrest --stanza=main backup --type=full pgbackrest --stanza=main backup --type=incr # incremental
MySQL 备份与恢复
# Logical dump mysqldump -u root -p --single-transaction --routines --triggers mydb > mydb.sql # --single-transaction: consistent InnoDB backup without locking # Restore mysql -u root -p mydb < mydb.sql # Physical backup with Percona XtraBackup (no lock) xtrabackup --backup --target-dir=/backup/full xtrabackup --prepare --target-dir=/backup/full xtrabackup --copy-back --target-dir=/backup/full # Automated daily backup script #!/bin/bash DATE=$(date +%Y%m%d_%H%M%S) mysqldump -u backup_user -p$PASS --all-databases --single-transaction \ | gzip | aws s3 cp - s3://backups/mysql_$DATE.sql.gz
3-2-1备份原则
- 3 — 份数据副本
- 2 — 种不同存储介质/类型
- 1 — 份异地副本(不同区域/云)