postgresql運維之遠端遷移操作
背景:高可用架構版本。
主備分別部署在機器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 就可以初始化資料庫
設定密碼等工作
su - postgres
登入資料庫
psql -U postgres
修改密碼
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. 建立新的資料目錄
mkdir /home/pgdata
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 裡面的內容 重啟虛擬機器驗證。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。