postgresql的數據復制


原理:postgresql數據庫的數據復制主要是基於wal日志進行復制的,分2中復制模式,一種是實例級別的物理復制,一種是表級別的邏輯復制。

物理復制:

1.核心原理為主庫將預寫日志WAL日志流發送給備庫,備庫接受到日志后進行重做

2.只能針對postgresql數據庫實例進行復制

3.主庫可讀可寫,但是備庫只允許讀

4.能多數據庫DDL(主要是 alert create 等針對於表結構變化的語句)操作進行復制

5.要求postgresql大版本必須一致

邏輯復制:

1.核心原理也是基於WAL日志,邏輯復制會根據預先設置好的規則解析WAL日志,將WAL二進制文件解析成一定格式的邏輯變化信息,然后主庫將WAL日志信息發送給備庫,備庫再根據接受的wal日志進行復制

2.可以針對數據庫表進行單獨的復制

3.不會復制DDL操作

4.備庫允許讀寫

5.不要求postgresql數據庫版本一致

 

進行主備數據庫的部署:

1.准備一台物理機和一台虛擬機

2.分別安裝postgresql數據庫,我這里安裝的大版本是11

 

台式機的IP:192.168.12.50

虛擬機的IP:192.168.12.55

異步流復制 參數配置

主要配置以下參數

postgresql.conf

wal_level = replica 
archive_mode = on
archive_command='/bin/date'
max_wal_senders=10
wal_keep_segments=512
hot_standby=0n

wal_level 主要有minimal/replica/logical 三種模式,如果需要進行數據備份,至少需要設置到replica 。replica包含minimal中所有的日志,並多了一些wal歸檔,備份和復制中啟用只讀查詢的一些wal信息

archive_mode 用來控制是否啟用歸檔 

archive_command 設置歸檔目錄,可以設置到本機目錄有可以設置到遠程目錄

max_wal_senders 控制主庫上wal最大的並發數,不能比max_connections值大,一般一個流復制只需要消耗一個wal發送進程

wal_keep_segments 設置主庫pg_wal目錄保留的最小wal日志文件數,以便備庫落后主庫時可以通過主庫保留的wal進行追回,這個值設置的越大,理論上備庫在異常斷開時追平主庫的幾率就越大

hot_standby 控制數據庫恢復過程中是否啟用讀操作,這參數通常用在流復制的備庫,開啟此參數后,流復制備庫只支持讀sql 不支持寫操作

建議主庫和備庫的配置完全一致

配置主庫的pg_hba.conf

host    replication     all             192.168.12.50/32            md5
host    replication     all             192.168.12.55/32            md5  

配置2條備份策略時由於主庫和備庫的角色不是靜止的,他們的角色是客戶互換的/。所以建議主庫和備庫的配置一致

 

停止備庫的pgsql服務,然后備份data文件夾

 

 

備份備庫的postgresql/11/data文件夾,然后清空data文件夾

 

然后CMD輸入如下命令 

 

 

 

-D 參數表示指定備節點用來接收主庫數據的目標路徑

-F 指定pg_basebackup 命令生成的備份數據格式 支持2中備份格式,p格式是指生成的備份數據庫喝主庫上的數據文件布局一樣,t格式是指將備份文件打成tar包然后存儲在指定的目錄中 一般我們采用p模式

-X 參數設置在備份過程中長生的wal日志包含在備份中,有f和s2種方式。f指的是wal日志在基本備份完成后被傳送到備份節點wal,s方式下主庫上除了啟動一個基准備份wal發送進程外還會額外啟動一個wal發送進程用於發送主庫產生的wal增量日志

-v 表示啟用verbose模式, 命令執行過程種打印出各個階段的執行日志

-P 參數顯示數據文件/表空間文件的近似傳輸比

 

-h 主庫的ip

-U 主庫的登錄用戶名

 

執行完上面的命令,就會發現備份庫的data文件夾中多了很多的文件 如下圖

 

將share文件下的recovery.conf.sample文件復制到data文件下,並修改名字為recovery.conf

去除

 

 

 

 

 

 

前面的#號 

 更改后

 

 

 

修改postgresql.conf中的配置
hot_standby = on 

 

 

然后重啟備份庫即可完成

 

 

 

 

 

 


免責聲明!

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



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