pgsql高可用採坑實記

1.index xxx contanins unexcepted zero page at block 1075

please reindex it

pg在主備切換過程中,造成了數據丟失,引起索引失效

命令行登入pg後,重新建立索引即可

reindex database xxx;

reindex talbe xxx;

reindex index xxx;
執行reindex 錯誤一:

could not create unique index "index1"
DETAIL:  Key (column1, column2)=(value1,value2) is duplicated.

根據索引名找到表名,刪除表中重複數據,執行reindx table 表名
參考sql:

delete from 表名 where ctid not in (select max(ctid) from 表名 group by column1,column2);

執行reindex 錯誤二:

ERROR:  index "xxx" contains unexpected zero page at block 117
HINT:  Please REINDEX it.
CONTEXT:  SQL statement "SELECT 1 FROM ONLY "public"."xxx" x WHERE "sched_name"::pg_catalog.text OPERATOR(pg_catalog.=) $1::pg_catalog.text AND "trigger_name"::pg_catalog.text OPERATOR(pg_catalog.=) $2::pg_catalog.text AND "trigger_group"::pg_catalog.text OPERATOR(pg_catalog.=) $3: :pg_catalog.text FOR KEY SHARE OF x"

根據提示 ,reindex index xxx ,執行完後根據需要繼續執行reindex database xxx

執行reindex 錯誤三:

    failed to find parent tuple for heap-only tuple at (200,24) in table "xxx"

    笨辦法:把表格xxx數據全部導出,然後在用delete語句刪除數據,在將數據導入表中即可。

    優雅方法:暫未找到,還望知道的人不吝告知。

2.pg啓動失敗,使用sysstemctl status postgresal 和journalctl -ex未看到明顯報錯

查看pg數據庫運行日誌,發現no dicitionary pg_logical/snapshots

進入pg數據存儲路徑,發現該文件夾存在,用戶組和權限都正常。

使用netstat -tnlp | grep 5432查看端口占用,發現有java程序監聽着,殺死程序,pg可以正常啓動

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