2. PostgreSQL 流複製

kakaxi9521發表於2021-02-23

1. PostgreSQL 流複製3 個主要程式:

wal sender, wal receiver , startup


2. 配置流複製:

step 1:

在master 端建立用於流複製的使用者replicator

create user replicator with replication encrypted password 'replicator';

建立完成後可以在psql中透過\du命令檢視建立的使用者

step 2:

在master 的引數配置,下面這些引數需要配置

ALTER SYSTEM SET wal_level TO 'hot_standby';

ALTER SYSTEM SET archive_mode TO 'ON';

ALTER SYSTEM SET max_wal_senders TO '5';

ALTER SYSTEM SET wal_keep_segments TO '10';

ALTER SYSTEM SET listen_addresses TO '*';

ALTER SYSTEM SET hot_standby TO 'ON';

ALTER SYSTEM SET archive_command TO 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f';


配置完這些引數後需要重啟資料庫pg_ctl restart, 可以在$PGDATA目錄下的postgresql.auto.conf檔案檢視引數是否生效。


step 3:

在$PGDATA目錄的pg_hba.conf檔案中新增slave主機的資訊

host replication replicator 192.168.1.66/32 md5

配置完成後需要重新載入pg_ctl reload。


step 4:

複製master庫到備庫,可以透過如下方法:

pg_basebackup -h 192.168.1.70 -U replicator -p 5432 -D $PGDATA -P -Xs -R

當前只是做測試,沒有資料,此步操作很快,會在slave端生成所有的檔案,同時還會包含recovery.conf檔案。


step 5:

啟動slave端pg資料庫 pg_ctl start


檢查master端程式:

-bash-4.2$ ps -ef | grep sender

postgres  6515  5852  0 14:55 ?        00:00:00 postgres: wal sender process replicator 192.168.1.66(50228) streaming 0/6000060


檢查slave端程式:

-bash-4.2$ ps -ef | grep receiver

postgres 19052 19046  0 14:55 ?        00:00:00 postgres: wal receiver process   streaming 0/6000060

-bash-4.2$ ps -ef | grep startup

postgres 19048 19046  0 14:55 ?        00:00:00 postgres: startup process   recovering 000000010000000000000006


也可以在master端透過檢視檢查:


至此一個簡單的PostgreSQL 流複製配置完成,其中的知識點:

1. 流複製設計三個程式 wal sender, wal receiver , startup,在配置完成後可以透過下面命令檢視。

ps -ef | grep sender

ps -ef | grep receiver

ps -ef | grep startup

也可以在Master端透過檢視pg_stat_replication檢視。

select * from pg_stat_replication;


2.  會涉及到postgresql.conf, pg_hba.conf兩個引數檔案的配置,都是在master端進行配置。

postgresql.conf檔案需要配置的引數有:

ALTER SYSTEM SET wal_level TO 'hot_standby';

ALTER SYSTEM SET archive_mode TO 'ON';

ALTER SYSTEM SET max_wal_senders TO '5';

ALTER SYSTEM SET wal_keep_segments TO '10';

ALTER SYSTEM SET listen_addresses TO '*';

ALTER SYSTEM SET hot_standby TO 'ON';

ALTER SYSTEM SET archive_command TO 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f';


pg_hba.conf 檔案需要配置slave端的資訊:

host replication replicator 192.168.1.66/32 md5


3. pg_basebackup工具的使用

在進行stream replication配置是需要將master端的資料同步到slave端,需要使用pg_basebackup工具將資料同步到slave端。

pg_basebackup 工具的使用可以作為一個單獨的章節。








來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2758683/,如需轉載,請註明出處,否則將追究法律責任。

相關文章