Hôm nay server mất điện đột ngột. Và sau khi có điện thì mình lại không thể khởi động lại được dịch vụ PostgreSQL. Check log thì gặp lỗi “PANIC : replication checkpoint has wrong magic“.
Nguyên nhân
Lỗi này là do server hoạt động không ổn định có thể là do dừng đột ngột bởi các sự cố mất điện, kill process,…, PostgreSQL sau khi khởi động lại, thì kiểm tra một bản ghi checkpoint trong log của transaction không còn tồn tại hoặc bị hư hại thì nó sẽ không khởi động thành công và báo lỗi ở file log.
Postgres is looking for a checkpoint record in the transaction log that probably doesn’t exist or is corrupted.
Khắc phục
Để fix lỗi này và khởi động lại dịch vụ PostgreSQL, chúng ta cần thực hiện các bước sau.
Bước 1: Tìm đến thư mục pg_logical của PostgreSQL đổi tên file replorigin_checkpoint sang 1 tên khác ví dụ: replorigin_checkpoint_corrupted
Trên Ubuntu đường dẫn thư mục pg_logical là: /var/lib/postgresql/<postgresql_version>/main/pg_logical/
Bước 2: Sau đó restart lại service để PostgreSQL tạo lại file replorigin_checkpoint
sudo systemclt restart postgresql
Kết quả là PostgreSQL sẽ khởi động lại thành công.
Nguồn: vinasupport.com