Postgresql
為什麼我的 Postgres 數據庫工作了一段時間,然後重新啟動後無法“啟動伺服器”?
最近,我開始使用舊的 Raspberry Pi 3 b+,我認為在我的本地網路上託管一個 Postgres 數據庫並將其用於我想要完成的任何工作都是一個好習慣。我知道在具有 1GB 記憶體的 Raspberry Pi 上執行 Postgres 並不理想,並且可能會對 SD 卡造成影響,但我已經更新了 postgresql.conf 文件並指定數據目錄路徑是使用 1TB SSD。此外,我安裝了 zram 和 log2ram 來嘗試減少 SD 卡上的一些成本。
我正在使用的技術概述:
- Raspberry Pi 4 B
- Postgres 12
- Ubuntu 伺服器 20.04(沒有 gui,只能從終端工作)
- 1TB固態硬碟
昨天,我正在從 python 筆記本寫入 Postgres 數據庫,沒有任何問題,但是一旦我重新啟動 Raspberry Pi,我就無法從 DataGrip 訪問數據庫,並且會從我的 Ubuntu 終端收到以下錯誤:
psql: error: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
我檢查了 postgres 伺服器的狀態,這似乎沒問題…:
● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Thu 2021-01-28 13:34:41 UTC; 20min ago Process: 1895 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 1895 (code=exited, status=0/SUCCESS) Jan 28 13:34:41 ubuntu systemd[1]: Starting PostgreSQL RDBMS... Jan 28 13:34:41 ubuntu systemd[1]: Finished PostgreSQL RDBMS.
這是 postgresql-12-main.log 中提供的內容:
2021-01-28 13:17:23.344 UTC [1889] LOG: starting PostgreSQL 12.5 (Ubuntu 12.5-0ubuntu0.20.04.1) on aarch64-unknown-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit 2021-01-28 13:17:23.362 UTC [1889] LOG: listening on IPv4 address "0.0.0.0", port 5432 2021-01-28 13:17:23.362 UTC [1889] LOG: listening on IPv6 address "::", port 5432 2021-01-28 13:17:23.365 UTC [1889] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2021-01-28 13:17:23.664 UTC [1899] LOG: database system was shut down at 2021-01-28 01:43:38 UTC 2021-01-28 13:17:24.619 UTC [1899] LOG: could not link file "pg_wal/xlogtemp.1899" to "pg_wal/000000010000000000000002": Operation not permitted 2021-01-28 13:17:24.670 UTC [1899] FATAL: could not open file "pg_wal/000000010000000000000002": No such file or directory 2021-01-28 13:17:24.685 UTC [1889] LOG: startup process (PID 1899) exited with exit code 1 2021-01-28 13:17:24.686 UTC [1889] LOG: aborting startup due to startup process failure 2021-01-28 13:17:24.708 UTC [1889] LOG: database system is shut down pg_ctl: could not start server Examine the log output.
我認為這可能與權限有關。如果我嘗試將 ~30MB 的 csv 上傳到 postgres 數據庫,它會崩潰並且伺服器不會再次啟動,因為文件無法寫入 pg_wal 目錄。該目錄中的唯一文件是 000000010000000000000001 並且在寫入表時不會移動到 000000010000000000000002 等。
如果您有任何問題或希望我提供任何其他資訊,請告訴我。我很感激您提前提出的任何指示。
好吧,我想我已經想通了。可能是矯枉過正,但它的工作原理:
- 我做的第一件事是格式化並安裝我的 1TB SSD。這是一個很好的影片,用於格式化為 ext4 和安裝。影片之間的區別在於,我更新了 fstab 文件以在啟動期間檢查我的 SSD,或者在 SSD 掛載選項末尾的“0 2”而不是“0 0”。
- 其次,我安裝了 Postgres。這是一個很好的演練。該部落格中提供的指導超出了我的需要,但仍然是一個很好的演練。我只是安裝了 Postgres:
sudo apt install postgresql postgresql-contrib
- 第三,我按照這個演練直到第二步結束,但在開始第二步之前,我通過執行添加了一個符號連結 from
/var/lib/postgresql/12/main
to/YOUR/MOUNT/POSITION/postgresql/12/main
:ln -s /var/lib/postgresql/12/main /YOUR/MOUNT/POSITION/postgresql/12/main
- 最後,在重新啟動 postgres 伺服器之前,我使用了這個網站來幫助我更好地配置我的伺服器。輸入您的規格,它應該為您提供一些有用的配置設置。