Postgresql

帶有自定義數據目錄的 postgresql-setup –initdb

  • March 7, 2022

我正在嘗試在 Centos 8 上設置 Postgres 12。 Postgres 應安裝在預設目錄中,即/var/lib/pgsql,但是我希望數據目錄位於/data/pgsql

我想以 root 身份使用 postgresql-setup,因為我相信它會隨之創建 systemd 服務文件,而不是使用 pg_ctl 或以 postgres 使用者身份執行 initdb。

但是,如果我嘗試

$ postgresql-setup --initdb --pgdata=/data/pgsql/

我將收到以下錯誤。

postgresql-setup: unrecognized option '--pgdata=/data/pgsql'
FATAL: can't parse arguments

實現這一目標的最佳方法是什麼?

如果您希望將數據放在自定義目錄/pgdata/14/data中,請使用正確的目錄創建目錄permissions

mkdir -p /pgdata/14/data
sudo chown postgres:postgres /pgdata/14/data

然後開始systemctl創建一個service文件:

sudo systemctl edit postgresql-14.service

如上所述,只需添加PGDATA位置:

[Service]
Environment=PGDATA=/pgdata/14/data

這將創建一個/etc/systemd/system/postgresql-14.service.d/override.conf文件。這將與原始服務文件合併。

要檢查其內容:

# cat /etc/systemd/system/postgresql-14.service.d/override.conf
[Service]
Environment=PGDATA=/pgdata/14/data

重裝系統:

# systemctl daemon-reload

初始化 PostgreSQL 數據目錄:

sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

啟動並啟用服務:

sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

/usr/pgsql-12/bin/initdb –pgdata=/data/pgsql

引用自:https://dba.stackexchange.com/questions/292431