Postgresql
CentOS 6.5 上的 PostgreSQL 9.1 - recovery.conf 導致程序退出並出現錯誤程式碼
我確實在 Ubuntu 12.04 LTS 上設置了流複製,並在發生故障時對 WAL 文件進行了同步。現在我試圖在 CentOS 6.5 上做同樣的事情。
為此,我從 postgresql.org 添加了官方 RPM,並使用 yum 安裝了 postgresql 9.1。
一切都很好,直到我應該創建
recovery.conf
文件的步驟。
recovery.conf
只需在目錄中創建一個空文件就足夠了,$PDATA
這樣 PostgreSQL 就不會啟動:DEBUG: PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin DEBUG: MAIL=/var/spool/mail/root DEBUG: LC_IDENTIFICATION=pl_PL.UTF-8 DEBUG: PWD=/var/lib/pgsql DEBUG: LANG=en_US.UTF-8 DEBUG: LC_MEASUREMENT=pl_PL.UTF-8 DEBUG: SELINUX_LEVEL_REQUESTED= DEBUG: HISTCONTROL=ignoredups DEBUG: HOME=/var/lib/pgsql DEBUG: SHLVL=2 DEBUG: LOGNAME=postgres DEBUG: SSH_CONNECTION=10.255.0.142 41803 10.255.0.186 22 DEBUG: LESSOPEN=|/usr/bin/lesspipe.sh %s DEBUG: LC_TIME=C DEBUG: G_BROKEN_FILENAMES=1 DEBUG: LC_NAME=pl_PL.UTF-8 DEBUG: _=/usr/pgsql-9.1/bin/postgres DEBUG: PGLOCALEDIR=/usr/pgsql-9.1/share/locale DEBUG: PGSYSCONFDIR=/etc/sysconfig/pgsql DEBUG: LC_COLLATE=en_US.UTF-8 DEBUG: LC_CTYPE=en_US.UTF-8 DEBUG: LC_MESSAGES=pl_PL.UTF-8 DEBUG: ----------------------------------------- DEBUG: invoking IpcMemoryCreate(size=39288832) DEBUG: usuwanie pliku "pg_notify/0000" # removing file DEBUG: max_safe_fds = 984, usable_fds = 1000, already_open = 6 DEBUG: zatrzymanie rejestratora # means stop registry/registrator DEBUG: shmem_exit(0): 0 callbacks to make DEBUG: proc_exit(0): 0 callbacks to make DEBUG: exit(0) DEBUG: shmem_exit(-1): 0 callbacks to make DEBUG: proc_exit(-1): 0 callbacks to make
執行 gdb 時相同:
DEBUG: shmem_exit(0): 0 callbacks to make DEBUG: proc_exit(0): 0 callbacks to make DEBUG: exit(0) DEBUG: shmem_exit(-1): 0 callbacks to make DEBUG: proc_exit(-1): 0 callbacks to make Program exited with code 01. (gdb) bt No stack.
和
-d 5
LC=C(太長,無法放入文章) http://pastebin.com/Z7t1CEwg如果沒有該 recovery.conf 文件,PostgreSQL 將正常執行。
有沒有人遇到過這樣的問題?
這個問題在 CentOS x64 上不會發生。這只是暫時的解決方法,但我接受它沒有更好的答案。