背景:高可用架構版本。
主備分別部署在機器A和B上,現在要將其分別遷移到機器C和D上。
思路:
1、首先根據源實例的備份(云盤上可用snapshot),創建一個mirror實例,mirror包含兩個節點,分別部署在C和D上。
2、在源實例主節點hba.conf中增加mirror主節點的ip的設置,允許源實例主節點接受來自mirror主節點的連接。
3、mirror實例主節點,創建recovery.conf文件,設置primary_conninfo指向源主節點。啟動mirror主節點,建立源實例主到mirror實例主節點的復制關系。
4、在mirror實例主節點hba.conf中增加mirror備節點的ip。允許mirror主節點接受來自mirror備節點的連接。
5、mirror實例備節點,創建recovery.conf文件,設置primary_conn指向mirror實例主節點。啟動備節點,建立mirror實例主節點到mirror實例備節點的復制關系。
6、提升mirror實例主節點為cluster master。
postgresql 備提升為主的方式:
pg_ctl方法:在備庫主機執行pg_ctl promote shell腳本
觸發器文件方式:備庫配置recover.conf文件的trigger_file參數,之后在備庫主機上創建觸發器文件。
補充:Postgresql遷移數據文件存放位置
1. POSTGRESQL的安裝
centos7 里面默認的pgsql的版本是 9.2.4 如果想用更高的版本需要執行以下如下的命令
rpm -ivh https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
安裝成功后進行安裝
yum install postgresql11
yum install postgresql11-server
然后啟動并且設置為開機啟動
systemctl enable postgresql-11
systemctl start postgresql-11
啟動之后進行數據庫初始化
11 以上的系統 還是比較簡單的 直接執行
postgresql-setup initdb 就可以初始化數據庫
設置密碼等工作
登錄數據庫
修改密碼
ALTER USER postgres WITH PASSWORD 'Test6530' 設置密碼
\q退出數據庫
2. 修改數據庫使之能夠被遠程鏈接
數據庫的配置文件默認為:
查看服務狀態可得

進入 data目錄
/var/lib/pgsql/11/data/
/usr/lib/systemd/system/postgresql-11.service
cd /var/lib/pgsql/11/data/
修改pg_hba.conf 即可
3. 創建新的數據目錄
4.關閉pgsql
systemctl stop postgresql-11
5. 復制原來的文件
cp -R /var/lib/pgsql/11/data/* /home/pgdata
6.修改權限
chown -R postgres:postgres /home/pgdata
chmod 750 /home/pgdata -R
7. 修改systemd 里面的配置文件
vim /usr/lib/systemd/system/postgresql-11.service
修改PGDATA的指向
8.執行命令重啟
systemctl daemon-reload
systemctl start postgresql-11
9. 刪除原始PGDATA 里面的內容 重啟虛擬機驗證。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- postgresql 如何查看pg_wal目錄下xlog文件總大小
- Postgresql去重函數distinct的用法說明
- postgresql 12版本搭建及主備部署操作
- 開源數據庫postgreSQL13在麒麟v10sp1源碼安裝過程詳解
- postgresql初始化之initdb的使用詳解
- postgresql之使用lsn 獲取 wal文件名的實例
- 修改postgresql存儲目錄的操作方式
- Postgresql中xlog生成和清理邏輯操作