遷移方法有兩種:
(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...