freeBuf
主站

分類

漏洞 工具 極客 Web安全 系統安全 網絡安全 無線安全 設備/客戶端安全 數據安全 安全管理 企業安全 工控安全

特色

頭條 人物志 活動 視頻 觀點 招聘 報告 資訊 區塊鏈安全 標準與合規 容器安全 公開課

官方公眾號企業安全新浪微博

FreeBuf.COM網絡安全行業門戶,每日發布專業的安全資訊、技術剖析。

FreeBuf+小程序

FreeBuf+小程序

運維日記|postgresql-pg簡易異步流復制搭建
2020-07-29 11:08:18

流復制是postgresql非常重要并且非常好用的高可用架構。本片文章小編就來帶大家簡單的做一個pg流復制的安裝。

流復制是PostgreSQL 9.0之后才提供的新的傳遞WAL日志的方法。通過流復制,備庫不斷的從主庫同步相應的數據,并在備庫apply每個WAL record,這里的流復制每次傳輸單位是WAL日志的record。就如oracle的dataguard技術一樣,pg的流復制也是按照同步模式的不同,分為同步流復制和異步流復制。同步流復制雖然能在主庫壞掉時確保數據的一致,但是當網絡或者備庫有問題的時候,會導致主庫事務hang住。異步流復制則沒有這樣的缺點,不會影響生產庫的性能,但是在主庫壞掉的時候,可能會丟掉一小部分數據。

pg的流復制安裝非常的簡單,如下配置完成后,就可以做到,如下版本是pg11在rhel7的配置,注意,需要提前在兩邊服務器上建好同一個版本的pg服務:

? 主庫操作

1.1創建復制用戶作為主從同步使用

postgres=# create role repl login replication encrypted password '123456';

CREATE ROLE

1.2? 修改pg_hba.conf文件

主庫

host? all? ? all? ? ?192.168.0.0/24? ? ? md5

host? replication? ?repl? ?192.168.0.52/24? ? md5

第一行? ? #允許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

? 備庫操作

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;

如上,就簡單的搭好了一個流復制數據庫!可以試一試!

本文作者:, 轉載請注明來自FreeBuf.COM

# PostgreSQL # 運維安全 # 數據庫運維 # 自動化運維
被以下專輯收錄,發現更多精彩內容
+ 收入我的專輯
評論 按熱度排序

登錄/注冊后在FreeBuf發布內容哦

相關推薦
  • 0 文章數
  • 0 評論數
  • 0 關注者
登錄 / 注冊后在FreeBuf發布內容哦
收入專輯
四月天小说网