PGSQL invalid primary checkpoint record 的修復


最近又遇到這個錯誤,這種情況一般都是由於客戶服務器斷電等原因導致的, 因此網上搜索一堆修復方法, 總結了后, 打算寫在這里, 由於我們的pgsql是運行在容器內, 因此這里寫的命令均是容器內可以執行的。 

 

下面是遇到的錯誤:

pgsql | 2020-01-18 16:14:06.418 CST [25] LOG: invalid primary checkpoint record

pgsql | 2020-01-18 16:14:06.418 CST [25] PANIC: could not locate a valid checkpoint record

 

如果在容器中, 使用下面命令進行掛載數據庫 並執行命令行, 方便與我們執行后面的命令。 registry.uixe.net/images/postgres 是我的內網鏡像地址,因此如果公網, 或者你自己私有鏡像, 請替換為可用的 鏡像名稱。 

 

docker run -it -v /dbdata/postgresql:/var/lib/postgresql/data registry.uixe.net/images/postgres /bin/bash

 

 

使用su  切換至postgres用戶便於執行 pg_resetwal 

 

su postgres

pg_resetwal -f /var/lib/postgresql/data

 

如果遇到

pg_resetwal: error: lock file "postmaster.pid" exists

pg_resetwal: Is a server running?  If not, delete the lock file and try again

這種問題一般都是因為斷電后, 沒能來得及刪掉進程導致的, 所以, 只能刪除。 否則程序以為自己依然在運行狀態。  

 

刪除命令如下:

 

 rm /var/lib/postgresql/data/postmaster.pid

 

然后回過頭來再執行 

 

pg_resetwal -f /var/lib/postgresql/data

 

 

重啟后, 完美解決 。 應用正常運轉。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM