联系:手机/微信(+86 17813235971) QQ(107644445)
标题:pg启动报invalid checkpoint record处理
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
pg库启动报PANIC: could not locate a valid checkpoint record错误
2025-03-09 10:59:10.365 EDT [73013] LOG: starting PostgreSQL 16.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit 2025-03-09 10:59:10.365 EDT [73013] LOG: listening on IPv4 address "0.0.0.0", port 5432 2025-03-09 10:59:10.365 EDT [73013] LOG: listening on IPv6 address "::", port 5432 2025-03-09 10:59:10.367 EDT [73013] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2025-03-09 10:59:10.401 EDT [73018] LOG: database system was interrupted; last known up at 2025-03-09 10:54:43 EDT 2025-03-09 10:59:11.506 EDT [73018] LOG: invalid checkpoint record 2025-03-09 10:59:11.508 EDT [73018] PANIC: could not locate a valid checkpoint record 2025-03-09 10:59:12.004 EDT [73013] LOG: startup process (PID 73018) was terminated by signal 6: Aborted 2025-03-09 10:59:12.004 EDT [73013] LOG: aborting startup due to startup process failure 2025-03-09 10:59:12.006 EDT [73013] LOG: database system is shut down
从报错信息中看,是有无法读取到有效的checkpoint记录导致,初步怀疑是wal异常,检查pg_wal目录,发现wal日志为空
[root@localhost pg_wal]# ls -ltr total 16388 drwx------ 2 postgres postgres 6 Mar 6 08:10 archive_status [root@localhost pg_wal]#
进一步检查系统操作命令rm删除wal日志命令
cd pg_wal rm -rf 0000000*
初步确认是由于wal日志被意外删除导致pg库无法启动,尝试重置wal,由于库不是干净关闭,无法直接重置成功
[postgres@localhost log]$ pg_resetwal $PGDATA The database server was not shut down cleanly. Resetting the write-ahead log might cause data to be lost. If you want to proceed anyway, use -f to force reset.
使用pg_resetwal -f强制重置
[postgres@localhost log]$ pg_resetwal -f $PGDATA Write-ahead log reset
尝试启动pg库成功
[postgres@localhost log]$ pg_ctl start waiting for server to start....2025-03-09 11:02:02.609 EDT [73088] LOG: redirecting log output to logging collector process 2025-03-09 11:02:02.609 EDT [73088] HINT: Future log output will appear in directory "log". done server started
2025-03-09 11:02:02.609 EDT [73088] LOG: starting PostgreSQL 16.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit 2025-03-09 11:02:02.609 EDT [73088] LOG: listening on IPv4 address "0.0.0.0", port 5432 2025-03-09 11:02:02.609 EDT [73088] LOG: listening on IPv6 address "::", port 5432 2025-03-09 11:02:02.610 EDT [73088] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" 2025-03-09 11:02:02.645 EDT [73092] LOG: database system was shut down at 2025-03-09 11:01:53 EDT 2025-03-09 11:02:02.650 EDT [73088] LOG: database system is ready to accept connections