Lập trình 22/09/2026 9 phút

Failover PostgreSQL đo thật: kill primary dưới tải, promote replica trong 179 ms, bất đồng bộ mất 22 giao dịch đã COMMIT trong 144.531, synchronous_commit=on mất 0 nhưng thừa 1 commit client không được báo, pg_rewind đưa primary cũ về trong 2,5 giây

Dựng thật trên PostgreSQL 16 với writer Go đếm từng COMMIT được xác nhận: SIGKILL primary ở giây thứ 10 dưới pgbench 8 client, pg_promote replica xong sau 179 ms. Bất đồng bộ: 144.531 commit được xác nhận, 144.509 có trên primary mới, mất 22 với lag chỉ 10 KB. Đồng bộ với synchronous_commit on: 13.480 xác nhận, 13.481 có mặt, mất 0 và thừa 1 commit client chưa được báo. Giá của từng nấc: INSERT 0,05 ms ở off, 0,23 ms ở on, TPS từ 19.534 xuống 3.736 ở remote_apply; replica tắt thì INSERT treo 9 phút và statement_timeout không cắt được. pg_rewind chép 1,4 GB trong 2,5 giây.