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...