PostgreSQL13基於流復制搭建後備服務器

pg的高可用、負載均衡和復制特性矩陣如下

 

後備服務器作為主服務器的數據備份,可以保障數據不丟,而且在主服務器發生故障後可以提升為主服務器繼續提供服務。

實際操作

1、參數配置

首先配置主機的postgresql.conf

復制代碼 代碼如下:
vim /usr/local/pgsql/data/postgresql.conflisten_addresses = '*'wal_level = hot_standbymax_wal_senders = 10max_replication_slots = 10hot_standby = on # 主要用來備庫配置,主庫配置無影響wal_keep_size = 1GB #pg13後配置,之前是wal_keep_segmentswal_log_hints = on #pg_rewind必須參數full_page_writes = on

然後配置主機的pg_hba.conf

復制代碼 代碼如下:
vim /usr/local/pgsql/data/pg_hba.conf
host replication all 0.0.0.0/0 trust #新增

2、使用pg_basebackup創建備機數據庫

復制代碼 代碼如下:
pg_basebackup -D ../data1 -U postgres -Fp -X stream -R -P -v -p54321 -h 127.0.0.1

解釋一下常用參數

pg_basebackup被用於獲得一個正在運行的PostgreSQL數據庫集簇的基礎備份。

-D directory

將輸出寫到哪個目錄。如果必要,pg_basebackup將創建該目錄及任何父目錄。

-Fp

把輸出寫成平面文件,使用和當前數據目錄和表空間相同的佈局。

-Xstream

在備份被創建時通過流復制傳送預寫式日志。這將開啟一個到服務器的第二連接並且在運行備份時並行開始流傳輸預寫式日志。

-R

–write-recovery-conf

在輸出目錄中(或者當使用 tar 格式時在基礎歸檔文件中)建立 standby.signal 並附加連接設置到postgresql.auto.conf 來簡化設置一個後備服務器。postgresql.auto.conf文件將記錄連接設置(如果有)以及pg_basebackup所使用的復制槽,這樣流復制後面就會使用相同的設置。

-P

–progress

啟用進度報告。

-v

–verbose

啟用冗長模式,可以理解為輸出備份過程數據。

3、啟動備機數據庫服務器

復制代碼 代碼如下:
echo "port=54322" >> /usr/local/pgsql/data1/postgresql.confpg_ctl -D /usr/local/pgsql/data1 start

4、檢查

登錄主機查看流復制關系

復制代碼 代碼如下:
psql -Upostgres -dpostgres -p54321select * from pg_stat_replication;

主機插入數據

復制代碼 代碼如下:
./psql -Upostgres -dpostgres -p54321create table t1 (id int ,name varchar);insert into t1 values (1,'cli');

備機查詢數據,數據同步成功

復制代碼 代碼如下:
psql -Upostgres -dpostgres -p54322select * from t1;

至此,一個簡單的後備服務器就搭建好瞭。

但行好事,莫問前程

推薦閱讀: