postgresql資料庫路徑遷移

2021-08-14 22:14:57 字數 3431 閱讀 8601

遷移方法有兩種:

(1)重新初始化postgresql資料庫,初始化時指定新的資料路徑---pgdata,然後在新的環境下將原有的資料庫備份恢復一下。不過這個方法有點麻煩

(2)直接將現有的資料庫檔案全部拷貝到新的資料庫路徑下,然後重起資料庫服務

第二種方法比較簡單,因此,就詳細描述一下第二種方法:

1、postgresql安裝後,預設的資料庫路徑是/var/lib/pgsql/9.x/data

2、新建乙個路徑作為新的資料庫資料路徑,假如是/home/data

sudo mkdir /home/data

sudo chown -r postgres:postgres data

sudo chmod 700 data

最後這個賦權命令是必須的,不然資料庫啟動回有問題的

3、檔案拷貝,

首先要停止postgresql服務

sudo systemctl stop postgresql

sudo su - postgres

cp -rf /var/lib/pgsql/9.x/data/* /home/data

4、修改service檔案

找到/usr/lib/systemd/system/postgresql*.service

修改這個檔案中的

environment=pgdata=/var/lib/pgsql/9.4/data/

將其修改為自己的新的資料路徑:

environment=pgdata=/home/data/

至此所有的修改工作就完成了,這個方法比較簡單,但是前提是postgresql已經作為服務新增到了systemctl,這一點需要注意

5、此時可以重新啟動postgresql了,但是,嘗試了幾個方法都不能成功,只有重起一下系統,才可以

reboot系統

然後啟動postgres服務

sudo systemctl restart posrgresql

所有的一切和原來一樣一樣地!順利完成資料遷移。

為了避免資料遷移的工作,今後再新部署postgresql時,應該考慮到系統分割槽的問題,要避免使用預設的資料路徑

root@pg-1:/root# systemctl start postgresql-9.6

warning: postgresql-9.6.service changed on disk. run 'systemctl daemon-reload' to reload units.

job for postgresql-9.6.service failed because the control process exited with error code. see "systemctl status postgresql-9.6.service" and "journalctl -xe" for details.

root@pg-1:/root#systemctl daemon-reload

root@pg-1:/root# ps -ef|grep postgres

root      13725  13487  0 11:22 pts/0    00:00:00 su - postgres

postgres  13726  13725  0 11:22 pts/0    00:00:00 -bash

postgres  13765  13726  0 11:23 pts/0    00:00:00 psql -u postgres

root      13795  13773  0 11:27 pts/1    00:00:00 su - postgres

postgres  13796  13795  0 11:27 pts/1    00:00:00 -bash

root      13888  13867  0 11:31 pts/3    00:00:00 su - postgres

postgres  13889  13888  0 11:31 pts/3    00:00:00 -bash

root      14264  14085  0 13:32 pts/4    00:00:00 grep --color=auto postgres

root@pg-1:/root#systemctl start postgresql-9.6

root@pg-1:/root# ps -ef|grep postgres

root      13725  13487  0 11:22 pts/0    00:00:00 su - postgres

postgres  13726  13725  0 11:22 pts/0    00:00:00 -bash

postgres  13765  13726  0 11:23 pts/0    00:00:00 psql -u postgres

root      13795  13773  0 11:27 pts/1    00:00:00 su - postgres

postgres  13796  13795  0 11:27 pts/1    00:00:00 -bash

root      13888  13867  0 11:31 pts/3    00:00:00 su - postgres

postgres  13889  13888  0 11:31 pts/3    00:00:00 -bash

postgres  14277      1  0 13:32 ?        00:00:00 /usr/pgsql-9.6/bin/postmaster -d /opt/postgresql9.6/data/

postgres  14281  14277  0 13:32 ?        00:00:00 postgres: logger process   

postgres  14284  14277  0 13:32 ?        00:00:00 postgres: checkpointer process   

postgres  14285  14277  0 13:32 ?        00:00:00 postgres: writer process   

postgres  14286  14277  0 13:32 ?        00:00:00 postgres: wal writer process   

postgres  14287  14277  0 13:32 ?        00:00:00 postgres: autovacuum launcher process   

postgres  14288  14277  0 13:32 ?        00:00:00 postgres: stats collector process   

root      14290  14085  0 13:32 pts/4    00:00:00 grep --color=auto postgres

root@pg-1:/root#

postgresql模板資料庫

template0和template1為postgresql資料庫的模板資料庫,新建的資料庫預設使用template1作為模板。template0和template1的區別在於template0無法修改,因此你可以修改template1資料庫以定製新建立的資料庫。template資料庫無法被刪除 d...

postgresql資料庫安裝

安裝並初始化 1 解壓資料庫並放到指定目錄 在opt目錄下 tar xvzf postgresql 10.1 1 linux x64 binaries.tar.gz 解壓出來之後目錄為pgsql 2 mv pgsql usr local pgsql 3 建立pgsql使用者並設定密碼 useradd...

資料庫 postgresql 安裝

當前專案是使用django框架搭建介面層的業務,資料庫端使用了postgresql,這裡只是簡單記錄下自己的安裝流程,因為開發機器使用的mac,所以流程只是針對mac。這裡我使用的homebrew,這個工具就不多說了,沒有用過的可以到這裡 執行下面命令即可 brew install postgres...