postgres異常斷電導致啓動失敗解決方法


     問題起因:

      前段時間客戶生產服務器,突然不小心弄斷電了,雖然運維人員重啓服務後,看似能正常訪問,但是出現主從無法正常同步數據問題,而重新啓動服務後,報could not connet to server。。。。postgresql/.s.PGSQL.5432,後臺日誌出現,accepting TCP/IP connections on port 5432等一串錯誤信息。突發性斷電導致異常終止,這是數據庫的postmaster.pid 文件仍健在,但是其實不起作用,在後臺數據庫日誌也可以看到如下錯誤信息,lock file "postmaster.pid" already exists,這時建議先cp 備份另存下,以防改錯,然後在直接mv postmaster.pid 遷移到其他地方 ,然後重啓數據庫服務,即可解決問題。而啓動的時候出現啓動失敗,具體情況請看《postgres啓動失敗問題分析與處理 

 原理分析:

 當我們啓動PostgresSQL時,會在PostgreSQL中的數據文件夾生成postmaster.pid 文件,該文件主要是記錄啓動時對應的進程號等相關信息,如果該文件已經存在,在啓動時,會導致進程號無法對應,最終啓動失敗,原理如下:

 1、26385: 代表Postgres主進程的PID

 2、/home/postgresql_data: 代表數據目錄

  3、5432: 代表數據庫監聽端口,在postgresql.conf中對應port = 5432

 4、5432001    229376:代表的是共享內存的地址(shared memory segments中的key和shmid)。

      image.png

         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章