Database in Distress: Testing and Repairing Different Types of Database Corruption
summary
PostgreSQL files on some systems show silent damage that only appears when a specific page or tuple is read, causing errors like "invalid page in block", absurd transaction IDs, or session segfaults. A Python corruption simulator reproduces header, item pointer array, and tuple-body corruption and the talk shows real pageinspect outputs that reveal how offsets and t_ctid become nonsensical. Repairs use per-page zeroing with zero_damaged_pages = on, heap tuple surgery and row-by-row salvaging; checksums enabled by default in Postgres 18 prevent many of these failures.
AI-written summary · about
chapters (10)
- 0:00Introduction and motivation
- 3:55Checksums and their importance
- 11:59Anatomy of a data block
- 16:22Corrupting item IDs and crashes
- 19:19Corrupting tuples and errors
- 25:01Corrupted sequences
- 26:46Curing corrupted data
- 30:28Salvaging data row by row
- 31:14Improving repair processes
- 34:11Q&A session
related talks
51mDatabase in Distress: Testing and Repairing Different Types of Database Corruption
20mDebugging Data Corruption in PostgreSQL
32mDebugging Data Corruption in PostgreSQL: A Systematic Approach
52mData Corruption Bugs: Diagnosis and Lessons
45mRecovering from a damaged cluster
39mData Corruption: Stop the Evil Tribbles
42mHow to corrupt your database (and how to deal with data corruption)
53mA DBA's Guide to the Proper Handling of Corruption
