postgresql 提升主庫的操作

來源:互聯網
上載者:User

標籤:postgresql 提升主庫的操作

我們目前的postgresql是主從流複製模式,standby沒有對外提供服務,只當做熱備用。


機器環境說明:

  postgres版本 10


切換前的拓撲關係:

  master: 10.0.20.25

  standby: 10.0.20.26



操作前,先切換到 postgres 帳號:


10.0.20.25 停主庫: 

psql select pid,datname,usename,client_addr,client_port, application_name from pg_stat_activity;  -- 查看當前串連然後,通知SA 將當前主庫從SLB上剔除掉,阻止使用者新的串連進來。select pg_terminate_backend(pid) from pg_stat_activity where usename='admin' ;  -- 殺死admin賬戶的當前串連(我這裡業務帳號用的是admin)/usr/pgsql-10/bin/pg_ctl stop -m fast -D /var/lib/pgsql/10/data/    -- 關閉當前master節點的pgsql進程


10.0.20.26 啟用成為新主庫 :

/usr/pgsql-10/bin/pg_ctl promote -D /var/lib/pgsql/10/data/


10.0.20.26 檢查 新主庫是否提升成功:

/usr/pgsql-10/bin/pg_controldata  -D /var/lib/pgsql/10/data/ | grep cluster

Database cluster state:   in production   -- 說明: 如果值為 "in production" 說明是主庫,如果值為 "in archive recovery" 說明是備庫。



在 10.0.20.26 上建立一個測試表,用於稍後驗證新的複製是否正常

create table test_t1(a int );insert into test_t1 select 100;select  * from test_t1;



10.0.20.25 使用pg_rewind 變成新的從庫:

/usr/pgsql-10/bin/pg_rewind --target-pgdata  /var/lib/pgsql/10/data/  --source-server='host=10.0.20.26 port=5432 user=postgres dbname=postgres password=postgres' -P

-- 說明: 這裡10.0.20.26上的postgres使用者的密碼是postgres,需要根據自己的情況來寫pg_rewind的情況


10.0.20.25 上查看postgresql.conf 有幾個地方要進行修改

max_connections = 200                   # 一般查多於寫的應用從庫的最大串連數要比較大hot_standby = on                      # 說明這台機器不僅僅是用於資料歸檔,也用於資料查詢max_standby_streaming_delay = 30s             # 資料流備份的最大延遲時間wal_receiver_status_interval = 10s             # 多久向主報告一次從的狀態,當然從每次資料複製都會向主報告狀態,這裡只是設定最長的間隔時間hot_standby_feedback = on                  # 如果有錯誤的資料複製,是否向主進行反饋


10.0.20.25 上編寫 recovery.conf 檔案 內容如下:

recovery_target_timeline = 'latest'standby_mode = onprimary_conninfo = 'host=10.0.20.26 port=5432 user=replica password=replica'


10.0.20.25 新的從庫上啟動pgsql

/usr/pgsql-10/bin/pg_ctl start -D /var/lib/pgsql/10/data/


10.0.20.26 新的主庫執行:

\x select * from pg_stat_replication;


10.0.20.26 新的主庫執行插入操作:

insert into test_t1 select 1;select  * from test_t1;


然後,在主庫、從庫 查詢複製狀態:

select txid_current_snapshot();



postgresql 提升主庫的操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.