一、主從安裝
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 ...