Postgresql

Postgresql - 將捲安裝到數據目錄後停止偵聽

  • March 22, 2019

我暫時需要一個 180GB 的 postgresql 數據庫。出於成本考慮,我在一個便宜的 40GB 磁碟伺服器上安裝了這個,我想將一個 200GB 的捲掛載到 postgresql 數據目錄。

我的問題:在我停止 postgresql 後,掛載卷,複製內容,更新 postgresql.conf,啟動 postgresql,它停止監聽5432

我的問題:為什麼會這樣?

我的操作順序:

  1. netstat 並看到 postgres 正在 5432 上偵聽任何遠端連接
root@foobar:/etc/postgresql/9.5/main# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      112        44384       25831/postgres  
tcp        0      0 0.0.0.0:3451            0.0.0.0:*               LISTEN      0          94839       15010/sshd      
tcp6       0      0 :::5432                 :::*                    LISTEN      112        44385       25831/postgres  
tcp6       0      0 :::3451                 :::*                    LISTEN      0          94848       15010/sshd

然後

  1. 停止 postgresql
  2. 創建一個新目錄 /mnt/whatever
  3. 將 /dev/xvdb 掛載到 /mnt/whatever/
  4. 將“/var/lib/postgresql/9.5/main/”的內容複製到新卷“/mnt/whatever”中
  5. 編輯 postgresql.conf 並將“數據目錄”更改為新卷..
data_directory = '/mnt/whatever'         # use data in another directory
                                        # (change requires restart)
hba_file = '/etc/postgresql/9.5/main/pg_hba.conf'       # host-based authentication file
                                        # (change requires restart)
ident_file = '/etc/postgresql/9.5/main/pg_ident.conf'   # ident configuration file
                                        # (change requires restart)
  1. 啟動postgresql
  2. netstat 發現 postgresql 不再監聽 5432
root@foobar:/# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 0.0.0.0:3451            0.0.0.0:*               LISTEN      0          94839       15010/sshd       
tcp6       0      0 :::3451                 :::*                    LISTEN      0          94848       15010/sshd

起初我認為這是postgresql.conf我搞砸了允許遠端連接的問題,但是在通過這個過程多次重建伺服器之後,它肯定會一直監聽5432直到我掛載新卷。

Postgresql 遠端工作正常,直到我掛載一個卷並更新 conf 中的數據目錄。此外,即使在我解除安裝卷並恢復原始的備份後,它也不會開始收聽postgresql.conf。在我看來,我在坐騎上做的某件事正在破壞它。

我已經制定了允許5432IPtables 的規則,但這並不能解決它(記住,遠端連接在掛載之前工作正常,所以我不認為它的防火牆)。

有什麼建議麼?

我的猜測是它的某種lsof東西,但我被卡住了。

  1. 將 ‘/var/lib/postgresql/9.5/main/’ 的內容複製到新卷 ‘/mnt/whatever’

這樣做之後,PostgreSQL 在啟動時立即失敗的最合理的原因是,此步驟沒有保留被複製的文件和目錄的確切權限/所有者。如果您使用cp,請確保添加該-p選項。

7)啟動postgresql

  1. netstat 發現 postgresql 不再監聽 5432

您似乎在搜尋網路問題,但未偵聽埠 5432 更有可能是由於 PostgreSQL 在步驟 #7 之後立即錯誤退出。正如評論中提到的,檢查 postgresql 日誌:它無法啟動的原因應該明確寫在那裡。通常日誌在/var/log/postgresql/(鑑於提到的路徑,它看起來像一個 Debian 系統)。

引用自:https://serverfault.com/questions/959321