Postgresql
帶有自定義數據目錄的 postgresql-setup –initdb
我正在嘗試在 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