配置recovery_min_apply_delay后重啟standby節點報錯:psql: FATAL: the database system is starting up


環境:

pg版本:PostgreSQL 9.4.4 on x86_64

系統版本:CentOS release 6.6

linux內核版本:2.6.32-504.8.1.el6.x86_64

 

今天測試standby延時復制時,在standby節點配置了recovery_min_apply_delay參數,剛開始設置的是5min,但重啟完standby節點后,連接數據庫直接報:psql: FATAL:  the database system is starting up 錯誤,我一開始以為是節點中的backup標簽有問題,之前曾經碰到過這個報錯,是由backup的標簽引起的,當時是刪掉該標簽就可以了,然后查看錯誤日志,錯誤日志中沒有和backup標簽有關的報錯信息。懷疑是recovery_min_apply_delay參數的問題,將recovery_min_apply_delay從recovery.conf中去掉,重啟,可以連接,重新調整recovery_min_apply_delay值得大小為5s,也可以連接,然后再設為5min,發現仍然報psql: FATAL:  the database system is starting up錯誤,查閱官方文檔,沒有這方面的說明。

下面是測試內容:

1、將recovery_min_apply_delay參數設為5s:

recovery_min_apply_delay=5s
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=192.168.173.43 port=1921 user=rep keepalives_idle=60'             # e.g. 'host=localhost port=5432'

重啟standby節點:

pg_ctl restart -m fast

可以正常連接:

postgres@db-192-168-173-41-> psql
psql (9.4.4)
Type "help" for help.

postgres=# 

2、將recovery_min_apply_delay參數設為5min:

recovery_min_apply_delay=5min
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=192.168.173.43 port=1921 user=rep keepalives_idle=60'             # e.g. 'host=localhost port=5432'

然后重啟standby節點,連接數據庫:

postgres@db-192-168-173-41-> psql
psql: FATAL:  the database system is starting up
postgres@db-192-168-173-41-> 

無法連接。

在大約等待5min左右后,可以正常連接。

 

注:

1、需要等待大約recovery_min_apply_delay的時間后,才可以正常連接。

2、在郵件列表中也有這個問題的疑問,但沒有解答:

http://www.postgresql.org/message-id/20151111155006.2644.84564@wrigleys.postgresql.org

關於這個問題,如果大家有知道的,希望可以說一下。非常感謝。

 

補充:

今天查看郵件列表,發現這個問題已由Fujii Masao在今年3月5號修復,之前是設置延時參數后,即使主從狀態是一致的,standby節點也無法訪問,現在提交補丁后,即使重設該參數,當主從處於一致狀態時,則standby就可以訪問。

詳細鏈接:

 http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=d34794f7d5566effd342dd0ebaca3de3b48656f0


免責聲明!

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



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