Trả lời nhanh: PostgreSQL PITR WAL chỉ đáng tin sau một lần restore diễn tập có checksum và truy vấn xác minh. Bài này tách RPO/RTO, backup, restore cô lập và stop boundary; không coi file backup hoặc job xanh là bằng chứng đủ.
Phạm vi: Bài áp dụng cho RPO/RTO trong môi trường staging/standalone. Kiểm tra Nginx/Docker/OS/database và phiên bản CLI thực tế trước khi chạy; không đưa credential thật vào lệnh, log hay artifact.

Tín hiệu cần đối chiếu: RPO/RTO; base backup; WAL archive; backup/restore; checksum; restore cô lập
RPO/RTO — thao tác và bằng chứng
State the recovery objective first: RPO is the maximum tolerated data gap; RTO is the time to serve reads again. For example, RPO=5 minutes and RTO=30 minutes determine how often WAL must reach durable storage and how quickly a clone can be promoted. Record the primary timeline, base-backup timestamp and target timestamp for every drill. A successful backup without those markers cannot prove the objective. PostgreSQL—Continuous archiving
Use an isolated clone and read-only checks; never point recovery commands at the primary data directory. Expected evidence includes target time, achieved replay time, elapsed restore duration and the rows/transactions sampled after recovery. If the target falls outside RPO, stop the drill and report the gap instead of moving the goalpost. (postgresql-pitr-wal-archive-recovery-target-drill · outline 1)
Với RPO/RTO, ghi lại input và phiên bản CLI trước khi chạy; sau đó đối chiếu từng tín hiệu RPO/RTO, backup/restore, checksum, restore cô lập, base backup, WAL archive trong stdout, stderr hoặc log audit. Kết quả đạt phải chỉ ra trạng thái và phạm vi tài nguyên; kết quả lỗi phải có chuỗi nhận diện để người trực ca biết bước khoanh vùng kế tiếp. Gắn transcript với postgresql-pitr-wal-archive-recovery-target-drill, commit/config hash, owner và timestamp. Không dùng exit code đơn độc làm bằng chứng. Che token, private key, cookie và PII trước khi lưu artifact; giữ bản raw trong kho có quyền hạn nếu incident yêu cầu.
base backup — thao tác và bằng chứng
Create a base backup with `pg_basebackup -h primary -U repl -D /backup/base -Fp -Xs -P`, then run `pg_verifybackup /backup/base`. Pin the PostgreSQL major version and record the backup label/LSN. Expected output is a completed backup and no verification errors; permission denied, missing tablespace or a partial directory invalidates the artifact even when the process created files. PostgreSQL—Continuous archiving
Keep the base backup immutable and checksum its manifest. Test extraction on a different volume before declaring it restorable. If a base backup is older than the retention policy, do not silently combine it with an untracked WAL directory; mark RPO unknown and create a new complete set. (postgresql-pitr-wal-archive-recovery-target-drill · outline 2)
Một lần kiểm tra base backup chỉ có giá trị khi lặp lại được. Chốt workload, hostname, digest hoặc schema, rồi chạy lệnh tương ứng với postgresql-pitr-wal-archive-recovery-target-drill. Đối chiếu các tín hiệu bắt buộc (RPO/RTO, backup/restore, checksum, restore cô lập, base backup, WAL archive) với expected output và error signature; nếu thiếu dữ liệu, ghi unknown. So sánh baseline trước/sau trong cùng cửa sổ và nêu rõ điều gì không được suy ra từ phép đo. Artifact thay đổi cần ghi config diff đã redact, người chịu trách nhiệm và thời điểm hết hạn exception trước khi promote.
WAL archive — thao tác và bằng chứng
WAL archiving must be continuous across the target range. Check `pg_stat_archiver` for archived_count, failed_count and last_failed_wal, and verify the object-store prefix contains the timeline segments. During restore, `restore_command` should return 0 for each segment and stop cleanly at the target. Expected error `requested WAL segment has already been removed` proves an archive gap, not a corrupt SQL query. PostgreSQL—Continuous archiving
Monitor archive lag and storage retention during the drill. A segment present in the bucket but unreadable due to credentials is still a recovery failure. Preserve the failed command, segment name and provider response; fix archive permissions/retention before retrying the same target. (postgresql-pitr-wal-archive-recovery-target-drill · outline 3)
Đừng gộp WAL archive vào một checklist chung. Tạo một phép thử nhỏ có điều kiện, ghi command, exit code, metric và log line riêng cho postgresql-pitr-wal-archive-recovery-target-drill. Các marker RPO/RTO, backup/restore, checksum, restore cô lập, base backup, WAL archive phải xuất hiện ở đúng section để người đọc có thể truy từ claim tới evidence. Khi kết quả không khớp expected (Output của postgresql-pitr-wal-archive-recovery-target-drill phải có trạng thái success và error phân biệt bằng exit code/stderr; unknown flag, permission denied hoặc timeout dẫn tới nhánh khoanh vùng riêng.), dừng rollout/restore, giữ hiện trường và mở issue thay vì sửa nhiều biến cùng lúc. Artifact công khai chỉ chứa giá trị đã che và hash kiểm chứng.

recovery target time — thao tác và bằng chứng
Set a recovery target time that is present in the archived timeline, create `recovery.signal`, configure `restore_command`, and start the clone. Query `pg_last_wal_replay_lsn()` and `pg_last_xact_replay_timestamp()` until replay reaches the target. Expected evidence shows the clone paused/promoted at or just after the requested timestamp and no replay errors in the journal. PostgreSQL—Continuous archiving
Do not choose a target by guessing the filename: timelines can fork after promotion. Record timeline history and timezone (UTC) in the runbook. If replay overshoots or stops early, keep the clone for analysis and rerun with a corrected target on a new data directory. (postgresql-pitr-wal-archive-recovery-target-drill · outline 4)
Trong runbook của postgresql-pitr-wal-archive-recovery-target-drill, recovery target time là điểm quyết định: allow/deny, ready/not-ready, pass/fail hoặc baseline/regression. Định lượng bằng tín hiệu RPO/RTO, backup/restore, checksum, restore cô lập, base backup, WAL archive, ghi phiên bản và phạm vi áp dụng, rồi nêu ngưỡng chuyển sang rollback. Một output xanh nhưng dependency hoặc health đỏ vẫn là fail. Sau khi sửa, chạy lại cùng lệnh và lưu kết quả cạnh config hash; revoke/rotate credential trước khi dọn mọi bản sao chứa secret.
restore isolated — thao tác và bằng chứng
Restore into a fresh data directory/volume with the same PostgreSQL major version, extensions and tablespaces. Start it on an isolated port, then run read-only checks for schema, row counts and representative business queries. Expected result is an accepting server with replay lag converged and no missing extension/table errors. Never mount the clone over production during the first drill. PostgreSQL—Continuous archiving
Measure restore throughput, WAL fetch latency, CPU/I/O and the time to pass smoke queries; these numbers are the real RTO evidence. If the clone is healthy but the application cannot connect, separate network/authentication from data recovery and keep the database evidence intact. (postgresql-pitr-wal-archive-recovery-target-drill · outline 5)
Với restore isolated, ghi lại input và phiên bản CLI trước khi chạy; sau đó đối chiếu từng tín hiệu RPO/RTO, backup/restore, checksum, restore cô lập, base backup, WAL archive trong stdout, stderr hoặc log audit. Kết quả đạt phải chỉ ra trạng thái và phạm vi tài nguyên; kết quả lỗi phải có chuỗi nhận diện để người trực ca biết bước khoanh vùng kế tiếp. Gắn transcript với postgresql-pitr-wal-archive-recovery-target-drill, commit/config hash, owner và timestamp. Không dùng exit code đơn độc làm bằng chứng. Che token, private key, cookie và PII trước khi lưu artifact; giữ bản raw trong kho có quyền hạn nếu incident yêu cầu.
verify checksum — thao tác và bằng chứng
Verify the backup and restored data with `pg_verifybackup`, checksums where enabled, row-count samples and application-level invariants. Compare a known transaction ID/time range, not just `SELECT 1`. Expected errors such as checksum mismatch, missing WAL or divergent row counts stop promotion and require selecting another verified backup. PostgreSQL—Continuous archiving
Save verification output, PostgreSQL version, extension list and target timestamp with the drill artifact. A checksum only proves bytes, not business completeness; document that limitation in the runbook. Never edit the restored files to make a check pass. (postgresql-pitr-wal-archive-recovery-target-drill · outline 6)
Một lần kiểm tra verify checksum chỉ có giá trị khi lặp lại được. Chốt workload, hostname, digest hoặc schema, rồi chạy lệnh tương ứng với postgresql-pitr-wal-archive-recovery-target-drill. Đối chiếu các tín hiệu bắt buộc (RPO/RTO, backup/restore, checksum, restore cô lập, base backup, WAL archive) với expected output và error signature; nếu thiếu dữ liệu, ghi unknown. So sánh baseline trước/sau trong cùng cửa sổ và nêu rõ điều gì không được suy ra từ phép đo. Artifact thay đổi cần ghi config diff đã redact, người chịu trách nhiệm và thời điểm hết hạn exception trước khi promote.
runbook — thao tác và bằng chứng
The runbook should name the incident owner, archive bucket, base-backup ID, target-time procedure, isolation port, verification queries and promotion approval. Keep primary and WAL immutable while investigating. If restore fails, choose the nearest complete backup/WAL set and publish the measured RPO/RTO; do not claim PITR success from an unverified clone. PostgreSQL—Continuous archiving
Rollback of a drill means discard the isolated clone after evidence is archived, not touching the primary. If production recovery is required, freeze writes, obtain a second approval and document the exact promotion point. Rotate recovery credentials if they appeared in logs or shell history. (postgresql-pitr-wal-archive-recovery-target-drill · outline 7)
Đừng gộp runbook vào một checklist chung. Tạo một phép thử nhỏ có điều kiện, ghi command, exit code, metric và log line riêng cho postgresql-pitr-wal-archive-recovery-target-drill. Các marker RPO/RTO, backup/restore, checksum, restore cô lập, base backup, WAL archive phải xuất hiện ở đúng section để người đọc có thể truy từ claim tới evidence. Khi kết quả không khớp expected (Output của postgresql-pitr-wal-archive-recovery-target-drill phải có trạng thái success và error phân biệt bằng exit code/stderr; unknown flag, permission denied hoặc timeout dẫn tới nhánh khoanh vùng riêng.), dừng rollout/restore, giữ hiện trường và mở issue thay vì sửa nhiều biến cùng lúc. Artifact công khai chỉ chứa giá trị đã che và hash kiểm chứng.
Recipe lệnh/config cho postgresql-pitr-wal-archive-recovery-target-drill
Chạy ở staging cho PostgreSQL PITR WAL với hostname, path và digest đã thay bằng giá trị không nhạy cảm. Lưu exit code cùng stdout/stderr đã redact và gắn artifact với postgresql-pitr-wal-archive-recovery-target-drill.
pg_basebackup -h primary -U repl -D /backup/base -Fp -Xs -P
pg_verifybackup /backup/base
psql -d postgres -c 'select pg_last_wal_replay_lsn();'
Expected output và error signature — postgresql-pitr-wal-archive-recovery-target-drill
Output của postgresql-pitr-wal-archive-recovery-target-drill phải có trạng thái success và error phân biệt bằng exit code/stderr; unknown flag, permission denied hoặc timeout dẫn tới nhánh khoanh vùng riêng. Đối chiếu thêm version, timestamp, health/readiness và log liên quan; output minh họa không phải kết quả production.

Rollback và stop boundary của postgresql-pitr-wal-archive-recovery-target-drill
Dừng restore postgresql-pitr-wal-archive-recovery-target-drill khi checksum/replay/query không khớp. Không ghi đè nguồn; đóng băng artifact, chọn backup đã verify và ghi RPO/RTO thực tế cho owner dữ liệu.
Failure mode cần tránh ở RPO/RTO
- RPO/RTO: thay đổi nhiều biến cùng lúc nên không biết nguyên nhân.
- RPO/RTO: đọc exit code nhưng bỏ qua health, dependency hoặc error signature.
- RPO/RTO: lưu secret/PII trong log, image layer, backup hoặc ảnh chụp.
- RPO/RTO: rollback nhầm failure domain làm blast radius lớn hơn.
Đọc tiếp trong cùng cụm Linux/DevOps — postgresql-pitr-wal-archive-recovery-target-drill
chien luoc backup postgresql pg dump pg basebackup wal pitr và backup docker volumes restic
Nguồn chính thức cho postgresql-pitr-wal-archive-recovery-target-drill
PostgreSQL—Continuous archiving; PostgreSQL—Backup
FAQ theo đúng chủ đề PostgreSQL PITR WAL
RPO/RTO áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng RPO/RTO. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
base backup áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng base backup. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
WAL archive áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng WAL archive. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
recovery target time áp dụng cho phiên bản nào?
Kiểm tra version/tool và topology trước khi áp dụng recovery target time. Chạy recipe ở trên trong staging; nếu expected/error signature khác, dừng và cập nhật runbook thay vì copy nguyên lệnh.
Cập nhật postgresql-pitr-wal-archive-recovery-target-drill: 08/09/2026. Nội dung là runbook tham khảo; phải kiểm tra phiên bản, nguồn chính thức và rollback trong môi trường thật trước khi áp dụng. Safety boundary: Không thay thế tư vấn chuyên môn; kiểm tra tình huống thực tế trước khi áp dụng.
