說明:以9+版本為例,10+的版本只要把目錄替換一下即可。遷移目錄肯定是要停服的!
1、在數據庫軟件安裝之后,初始化數據庫時候,可以指定初始化時創建的數據庫的默認文件路徑
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
這樣初始化之后,再修改配置文件postgresql.conf為修改之后的數據文件路徑,就能保證以后的數據文件也在這個路徑下。
備注:可以通過find查找該文件的所在位置。
2、如果是已經初始化好了,再修改數據文件路徑的,如下過程:
找到配置文件查看原來的數據存儲路徑在哪
find / -name postgresql.conf
一般是在/etc/postgresql/9.6/main/postgresql.conf
停掉PostgreSQL
service postgresql stop
拷貝原來的數據路徑到新的路徑下
cp -rf /var/lib/postgresql/9.6/main/ /data/postgresql/
設置用戶和權限
chown -R postgres:postgres /data/postgresql/ chmod 700 /data/postgresql/
將配置文件的數據存儲路徑改成新的
vi /etc/postgresql/9.6/main/postgresql.conf
data_directory='/data/postgresql/datafile'
再啟動即可
service postgresql start
修改完畢后,可以用psql命令“show data_directory”查看當前數據目錄
postgres=# show data_directory; data_directory ------------------------ /var/lib/pgsql/10/data (1 row)
通過上面的修改的方法,使用ps -ef輸出的進程還是會顯示原來的舊目錄,這個相當於做了URL跳轉的操作,但對於運維人員不是那么的友好,那么可以通過修改源頭來進行修改。修改方法如下:
注意:修改目錄時先停止服務!
1、命令行方式啟動時指定目錄
pg_ctl stop -D /data/pgsql/data2 pg_ctl start -D /data/pgsql/data2
2、以init腳本啟動的,修改腳本(10+):
vi /etc/init.d/postgresql-10
# 修改為如下內容
PGDATA=/data/pgsql/data2
2、以systemd啟動的,修改腳本(10+):
vi /usr/lib/systemd/system/postgresql-10.service # 修改為如下內容 Environment=PGDATA=/data/pgsql/data2
參考:
http://blog.itpub.net/29654823/viewspace-2147325/(以上內容轉自此篇文章)
