Postgresql12主從配置及切換

2021-10-03 11:51:29 字數 3840 閱讀 4759

一、主從安裝

1、依據「centos7安裝最新版postgresql」操作,注意個別細節選擇主從配置

2、注意:從伺服器只能查詢,不能寫入

3、主庫ip=103,備庫ip=104

二、主伺服器

1、新增pg用於同步的使用者名稱

su - postgres

psql

# 建立具有複製流操作的使用者:replica

create role replica login replication encrypted password '123456';

1、修改配置檔案:pg_hba.conf,信任從伺服器訪問

檔案尾部新增信任的從伺服器

# replica為postgres使用者

# xx.xx.xx.xx為從節點的完整ip,如果為網段配置就不是32了,md5為允許密碼驗證,trust為免密

# type database user address method

host replication replica 192.168.100.104/32 trust

2、修改配置檔案:postgresql.conf

# 新增或修改下列屬性設定(使用命令「/」來查詢,否則眼花)

listen_addresses = '*' # (修改)監聽所有ip

max_connections = 100 # (修改)最大連線數,據說從機需要大於或等於該值

archive_mode = on # (修改)開啟歸檔

wal_level = replica # (新增)

wal_keep_segments = 16 # (修改)暫時還不知道設定為多大合適

wal_sender_timeout = 60s # (修改)

3、重啟服務

systemctl restart postgresql-12

4、在從節點上驗證訪問

psql -h 192.168.100.103 -u postgres

# 如果發現不知道密碼或密碼不正確,修改postgres使用者密碼(資料庫)

alter user postgres with password '你的密碼';

三、從伺服器

1、停止服務

systemctl stop postgresql-12

2、切換使用者(一定要)

su - postgres

3、清空資料資料夾(是這樣的,沒錯)

4、從主節點獲取資料

# 使用replica使用者,從主節點獲取備份資料(這條命令建議照抄,有興趣在深究內部引數)

5、編輯standby.signal檔案(就在資料資料夾內,以此標識從節點,當從節點提公升為主節點後會自動刪除)

# 新增

standby_mode = 'on'

6、修改postgresql.conf檔案

primary_conninfo = 'host=192.168.100.103 port=5432 user=replica password=123456'

recovery_target_timeline = latest # 預設

max_connections = 120 # 大於等於主節點,正式環境應當重新考慮此值的大小

hot_standby = on

max_standby_streaming_delay = 30s

wal_receiver_status_interval = 10s

hot_standby_feedback = on

7、重新啟動從節點

systemctl start postgresql-12

四、驗證主從

方法一:

登入主節點資料庫執行如下命令

su postgres

psql

select client_addr,sync_state from pg_stat_replication;

結果如下:

postgres=# select client_addr,sync_state from pg_stat_replication;

client_addr | sync_state

192.168.100.104 | async

(1 row)

說明104伺服器是從節點,在接收流,而且是非同步流複製

方法二:

在主節點與從節點分別執行如下命令

ps -ef | grep postgres

可以看到主節點有wal receiver程序

postgres 2638 2606 0 17:12 ? 00:00:00 postgres: walsender replica 192.168.100.104(51504) streaming 0/7000660

可以看到從節點有wal receiver程序

postgres 1960 1953 0 17:12 ? 00:00:02 postgres: walreceiver streaming 0/7000660

五、主備切換(主庫出現故障時)

當主庫出現故障時,我們需要將備庫提公升為主庫進行讀寫操作。

0、在pg12之前我們一般使用2種方式:

1)pg_ctl 方式: 在備庫主機執行 pg_ctl promote shell 指令碼

2)觸發器檔案方式: 備庫配置 recovery.conf 檔案的 trigger_file 引數,之後在備庫主機上建立觸發器檔案

1、pg12開始新增了乙個pg_promote()函式,讓我們可以通過sql命令啟用備庫。

pg_promote()語法:

pg_promote(wait boolean default true, wait_seconds integer default 60)

兩個引數:

wait: 表示是否等待備庫的 promotion 完成或者 wait_seconds 秒之後返回成功,預設值為 true。

wait_seconds: 等待時間,單位秒,預設 60

2、切換舉例:

1)主庫操作:關閉主庫,模擬主庫故障:

systemctl stop postgresql-12

2)備庫操作:啟用備庫:

su postgres

psql

select pg_promote(true,60);

4、驗證:

主備庫英文顯示如下:

database cluster state: in production

database cluster state: in archive recovery

主備庫中文顯示如下:

資料庫簇狀態: 在執行中

資料庫簇狀態: 正在歸檔恢復

六、原主庫修復後降為備庫(其實大部分操作與建立備庫時一樣,只是修改幾個ip位址)

1、新主庫(104):

host replication replica 192.168.100.103/32 trust

# systemctl restart postgresql-12

2、新備庫(103)

# systemctl stop postgresql-12

# su - postgres

# vi standby.signal

# 新增

standby_mode = 'on'

primary_conninfo = 'host=192.168.100.104 port=5432 user=replica password=123456'

# systemctl start postgresql-12

七、再次將老主庫切回主庫

1、當前備庫:

> 停止服務

> 啟動服務

2、當前主庫:

> 停止服務

> 啟動服務

postgresql 12 安裝,熱備份,讀寫分離

主備需要資料庫版本一致 環境 centos7 192.168.0.21 5432 主庫,寫庫 192.168.0.20 15432 備份庫,讀庫 1.1 centos 安裝方式 yum install y yum install postgresql12 y yum install postgres...

Postgresql12 安裝及設定遠端訪問

1.安裝 centos 7 拉取rp包,並install yum install install pg服務 yum install postgresql12 server 初始化db usr pgsql 12 bin postgresql 12 setup initdb 啟動服務 systemctl...

Postgresql主從容災

一 環境 作業系統 centos 7 資料庫版本 postgresql 11 主庫ip 192.168.114.135 從庫ip 192.168.114.134 二 資料庫部署 進入該官網 選擇對應版本的映象 yum install y yum install postgresql11 y yum ...