PostgreSQL資料庫主從部署

2021-08-23 14:04:06 字數 4053 閱讀 5332

1、作業系統:centos 7.3

2、postgresql:10.3

3、主節點:192.168.0.101 從節點:192.168.0.102

1、安裝postgresql

主節點與從節點均安裝postgresql,安裝方法參考部落格:centos系統下postgresql資料庫安裝配置

2、配置主從

主節點(192.168.0.101)配置

(1)建立歸檔目錄

mkdir -p /opt/pgsql/pg_archive
(2)建立乙個資料庫使用者replica進行主從同步

postgres使用者登入到資料庫

su postgres

cd /usr/local/pgsql/bin

./psql

create role replica login replication encrypted password '123456';

(3)修改pg_hba.conf,增加兩行配置,允許replica使用者來同步

vi /usr/local/pgsql/data/pg_hba.conf

host all all 192.168.0.102/32 trust #允許從伺服器連線到主伺服器

host replication replica 192.168.0.102/32 md5 #允許從伺服器使用replica使用者來複製

(4)修改postgresql.conf

vi /usr/local/pgsql/data/postgresql.conf

listen_addresses = '*' #監聽所有ip

archive_mode = on #允許歸檔

archive_command = 'cp %p /opt/pgsql/pg_archive/%f' #用該命令來歸檔logfile segment

wal_level = hot_standby

max_wal_senders = 10 #這個設定可以最多有幾個流複製連線

wal_keep_segments = 256 #設定流複製保留的最多的xlog數目

wal_sender_timeout = 60s #設定流複製主機傳送資料的超時時間

max_connections = 100 #從庫的max_connections必須要大於主庫

(5)配置完兩個檔案後重啟資料庫

/usr/local/pgsql/bin/pg_ctl -d /usr/local/pgsql/data/ -l /usr/local/pgsql/logs/postgres.log restart
(6)測試從伺服器能否連線主伺服器資料庫

從節點操作

su postgres

/usr/local/pgsql/bin

./psql -h 192.168.0.101 -u postgres

從節點(192.168.0.102)配置

(1)從主節點拷貝資料到從節點

/usr/local/pgsql/bin/pg_ctl -d /usr/local/pgsql/data/ -l /usr/local/pgsql/logs/postgres.log stop #停資料庫

su postgres

rm -rf /usr/local/pgsql/data/* #清空從節點資料

/usr/local/pgsql/bin/pg_basebackup -h 192.168.0.101 -u replica -d /usr/local/pgsql/data/ -x stream -p # 從主節點拷貝資料到從節點(基礎備份)

mkdir -p /opt/pgsql/pg_archive #root使用者下建立

(2)配置recovery.conf

su postgres

cp /usr/local/pgsql/share/recovery.conf.sample /usr/local/pgsql/data/recovery.conf #拷貝配置檔案

vim recovery.conf

standby_mode = on #說明該節點是從伺服器

primary_conninfo = 'host=192.168.0.101 port=5432 user=replica password=123456' #主節點的資訊以及連線的使用者

recovery_target_timeline = 'latest'

(3)配置postgresql.conf

vi /usr/local/pgsql/data/postgresql.conf

wal_level = hot_standby

max_connections = 1000 #一般查多於寫的應用從庫的最大連線數要比較大

hot_standby = on #說明這台機器不僅僅是用於資料歸檔,也用於資料查詢

max_standby_streaming_delay = 30s #資料流備份的最大延遲時間

wal_receiver_status_interval = 10s #多久向主報告一次從的狀態,當然從每次資料複製都會向主報告狀態,這裡只是設定最長的間隔時間

(4)配置完啟動資料庫

/usr/local/pgsql/bin/pg_ctl -d /usr/local/pgsql/data/ -l /usr/local/pgsql/logs/postgres.log start
方法一:

登入主節點資料庫執行如下命令

su postgres

cd /usr/local/pgsql/bin

./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.0.102 | async

(1 row)

說明102伺服器是從節點,在接收流,而且是非同步流複製

方法二:

在主節點與從節點分別執行如下命令

ps -ef | grep postgres
可以看到主節點有wal receiver程序

postgres   2903   2711  0 18:32 ?        00:00:00 postgres: wal sender process replica 192.168.0.102(32886) streaming 0/5000140
可以看到從節點有wal receiver程序

postgres   2572   2567  0 18:32 ?        00:00:00 postgres: wal receiver process   streaming 0/5000140
主伺服器上插入資料或刪除資料,在從伺服器上能看到相應的變化。從伺服器上只能查詢,不能插入或刪除。

主從資料庫 主從同步理論

主從資料庫資料同步原理 mysql的 replication 是乙個非同步的複製過程,從乙個 mysql instace 我們稱之為 主庫 複製到另乙個 mysqlinstance 我們稱之 從庫 在 主庫 與 從庫 之間的實現整個複製過程主要由三個執行緒來完成,其中兩個執行緒 sql執行緒和io執...

部署主從資料庫

1.準備來兩台虛擬機器,並修改主機名稱 192.168.223.159 mysql1 192.168.223.160 mysql2 2.配置hosts檔案 3.兩個節點安裝資料庫服務 yum install y mariadb mariadb server4.兩個節點啟動資料庫服務並設定開機自啟 s...

postgresql模板資料庫

template0和template1為postgresql資料庫的模板資料庫,新建的資料庫預設使用template1作為模板。template0和template1的區別在於template0無法修改,因此你可以修改template1資料庫以定製新建立的資料庫。template資料庫無法被刪除 d...