共計 2000 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章主要講解了“怎么搭建 postgresql-pg 簡易異步流復制”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“怎么搭建 postgresql-pg 簡易異步流復制”吧!
流復制是 PostgreSQL 9.0 之后才提供的新的傳遞 WAL 日志的方法。通過流復制,備庫不斷的從主庫同步相應的數據,并在備庫 apply 每個 WAL record,這里的流復制每次傳輸單位是 WAL 日志的 record。就如
oracle 的 dataguard 技術一樣,pg 的流復制也是按照同步模式的不同,分為同步流復制和異步流復制。同步流復制雖然能在主庫壞掉時確保數據的一致,但是當網絡或者備庫有問題的時候,會導致主庫事務 hang 住。異步流復制則沒有這樣的缺點,不會影響生產庫的性能,但是在主庫壞掉的時候,可能會丟掉一小部分數據。
pg 的流復制安裝非常的簡單,如下配置完成后,就可以做到,如下版本是 pg11 在 rhel7 的配置,注意,需要提前在兩邊服務器上建好同一個版本的 pg 服務:
01 主庫操作
1.1 創建復制用戶作為主從同步使用
postgres=# create role repl login replication encrypted password 123456
CREATE ROLE
1.2 修改 pg_hba.conf 文件
主庫
host allall192.168.0.0/24md5
host replication repl192.168.0.52/24md5
第一行 #允許 XX 這個從服務器連接到主服務器
第二行 #允許使用 replica 用戶來復制,第二個字段必須要填 repl(上一步添加的用戶)
#psql
psql select pg_reload_conf();# 生效
1.3 修改 postgresql.conf
listen_addresses= * #這個一般安裝服務器之后都會進行配置,檢查下
wal_level=replica #默認 replica,不動
wal_keep_segments=256# 設置流復制保留的最多的 xlog 數目
# 重啟 pg 服務生效。
# 只有 listen_address 改變需要重啟,否則 select pg_reload_conf() 即可。
pg_ctl stop –D $PGDATA
pg_ctl start –D $PGDATA
1.4 在從庫測試連接是否成功
psql -h 192.168.0.51-p 5432-U postgres
02 備庫操作
2.1 停止 pg 服務,清空 data 目錄
[postgres@apple-standby ~]$ echo $PGDATA
/data/pg11.5/data
[postgres@apple-standby data]$ rm -rf /data/pg11.5/data
2.2 從主節點拷貝數據到從節點
$ pg_basebackup -h 192.168.0.51-U repl -D /data/pg11.5/data -X stream -P
could not identify current directory: No such file or directory
Password:
45238/45238 kB (100%),1/1 tablespace
2.3 配置 recovery.conf
cd $PGHOME(軟件安裝目錄)
cp share/recovery.conf.sample $PGDATA/recovery.conf
vi recovery.conf
standby_mode = on
primary_conninfo= host=192.168.0.51 port=5432 user=repl password=123456
recovery_target_timeline= latest
###
primary_conninfo 主服務器的信息以及連接的用戶
standby_mode = on # 說明該節點是從服務器
recovery_target_timeline #指定恢復到特定時間軸。默認設置是沿著執行基本備份時的當前時間線恢復。將此設置為 latest 將恢復到存檔中找到的最新時間軸
2.4 啟動服務
pg_ctl start -D $PGDATA
在主庫上查詢,如下,可以看到,sync_state,async 就表示異步流復制。
postgres=# select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;
如上,就簡單的搭好了一個流復制數據庫!
感謝各位的閱讀,以上就是“怎么搭建 postgresql-pg 簡易異步流復制”的內容了,經過本文的學習后,相信大家對怎么搭建 postgresql-pg 簡易異步流復制這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!