postgresql之物理復制與邏輯復制_異步流復制部署


------------恢復內容開始------------

--物理復制,也稱為流復制(streaming replication),通過流復制復制一個一模一樣的備庫

--邏輯復制,也稱之為選擇性復制,可以做到基於表級別的復制,pg10之前的不支持內置的邏輯復制,pg10以后有支持內置的邏輯復制

WAL日志記錄數據庫的變化,流復制和邏輯復制都是基於wal的,流復制基於wal物理復制,邏輯復制基於wal邏輯解析

 

異步流復制部署

配置postgresql.conf文件

wal_level = replica

archive_mode = on

archive_command ='/bin/date'

max_wal_senders = 10

wal_keep_segments = 512

配置主,備庫pg_hba.conf文件

host replication repuser 192.168.12.10/32 trust
host replication repuser 192.168.12.11/32 trust

創建流復制用戶

postgres=# create user repuser replication login connection limit 5 encrypted password 'Aa123456';
CREATE ROLE

 在主庫執行(主庫發起一個在線備份,執行成功后將文件拷貝至備節點)

postgres=# select pg_start_backup('france_bk1');
tar czvf data.tar.gz data --exclude=data/pg_wal
scp data.tar.gz postgres@192.168.12.11:/home/postgres

主庫執行以下命令:

postgres=# select pg_stop_backup();
Sun Oct 31 23:29:04 EDT 2021
Sun Oct 31 23:29:04 EDT 2021
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
 pg_stop_backup
----------------
 0/B000130
(1 row)

在備庫配置recovery.conf文件

[postgres@localhost ~]$ cat /database/pg10/pg_root/recovery.conf

standby_mode = on

#primary_conninfo = 'host=192.168.12.10 port=1921 user=repuser password=Aa123456'
primary_conninfo = 'host=192.168.12.10 port=1921 user=repuser'
recovery_target_timeline = 'latest'

配置 ~/.pgpass文件,注意最好不要把密碼寫在recovery.conf文件中

 

 最開始配置pgpass腳本沒有在正確目錄。或者recovery.conf文件中沒有寫入密碼就會有以下報錯

 配置完~/.pgpass文件之后啟動備庫

 

在主機上查看備庫是否存在,並建立測試表

 

在備機上查看,並且測試創建表,出現以下報錯(只支持讀)

 

 

注意:備庫的postgresql.conf的hot_standy=on才支持查詢操作,調整此參數后重啟生效,如果設置成off就會出現以下報錯

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM