PostgreSQL主從流複製部署

1.準備知識:

1. PostgreSQL的安裝。linux

2. 流複製特色。sql

PostgreSQL在9.0以後引入了主從的流複製機制,所謂流複製,就是從服務器經過tcp流從主服務器中同步相應的數據。這樣當主服務器數據丟失時從服務器中仍有備份。服務器

與基於文件日誌傳送相比,流複製容許保持從服務器更新。 從服務器鏈接主服務器,其產生的流WAL記錄到從服務器, 而不須要等待主服務器寫完WAL文件。異步

PostgreSQL流複製默認是異步的。在主服務器上提交事務和從服務器上變化可見之間有一個小的延遲,這個延遲遠小於基於文件日誌傳送,一般1秒能完成。若是主服務器忽然崩潰,可能會有少許數據丟失。tcp

同步複製必須等主服務器和從服務器都寫完WAL後才能提交事務。這樣在必定程度上會增長事務的響應時間。post

配置同步複製僅須要一個額外的配置步驟: synchronous_standby_names必須設置爲一個非空值。synchronous_commit也必須設置爲on。測試

這裏部署的是異步的流複製。spa

注:
主從服務器所在節點的系統、環境最好一致。PostgreSQL版本也最好一致,不然可能會有問題。命令行

2. 準備工做:

1. 服務器2臺(1臺也能夠。須要安裝2個實例)日誌

2. PostgreSQL安裝文件(最好是安裝同一個版本,以避免出現問題,必須大於9.0,不然不行)

  此處本人使用的是2臺服務器,主服務器使用Windows Server 2008 R2,從服務器Windows Server 2012 R2。  PostgreSQL版本9.3.5-3。

  注意安裝後,須要配置防火牆出入站規則才能聯通。

  如果使用的Linux服務器,注意防火牆的狀態。

3. 軟件安裝。

自行安裝。

4. 實施部署

4.1.主服務器

A.建立複製用戶/角色

psql  -U postgres

輸入密碼

命令行登陸pgsql>    create role replica login replication encrypted password 'replica';

B.修改認證文件g_hba.conf,容許從服務器來鏈接和複製

host all              all        X.X.X.X/32  trust       #容許XX這個從服務器鏈接到主服務器
host replication replica X.X.X.X/32  md5       #容許使用replica用戶來複制,第二個字段必需要填replication

C.主服務器流複製的設置,修改 postgresql.conf

archive_mode = on # 容許歸檔
wal_level = hot_standby
max_wal_senders = 32 # 這個設置了能夠最多有幾個流複製鏈接,差很少有幾個從,就設置幾個wal_keep_segments = 256 # 設置流複製保留的最多的xlog數目
wal_sender_timeout = 60s # 設置流複製主機發送數據的超時時間
max_connections = 100 # 這個設置要注意下,從庫的max_connections必需要大於主庫的

D.重啓主服務器PostgreSQL服務

 在從服務器測試一下鏈接。不行就檢查一下防火牆。

4.2 從服務器

A. 中止PostgreSQL服務,清空data目錄。

rm -rf /opt/pgsql/data/* #先將data目錄下的數據都清空(此處是linux命令,由於在下使用的Cmder.)

B. 從主節點拷貝數據到從節點

pg_basebackup -h 192.168.20.93 -U replica -D /opt/pgsql/data -X stream -P

C.配置從服務器recovery.conf

複製/share/recovery.conf.sample 到 /data/recovery.conf

cp /share/recovery.conf.sample /data/recovery.conf

修改recovery.conf

standby_mode = on # 說明該節點是從服務器
primary_conninfo = 'host=Y.Y.Y.Y port=5432 user=replica password=replica' # 主服務器的信息以及鏈接的用戶
recovery_target_timeline = 'latest'

D.配置從服務器postgresql.conf

wal_level = hot_standby
max_connections = 1000 # 通常查多於寫的應用從庫的最大鏈接數要比較大
hot_standby = on # 說明這臺機器不單單是用於數據歸檔,也用於數據查詢
max_standby_streaming_delay = 30s # 數據流備份的最大延遲時間
wal_receiver_status_interval = 10s # 多久向主報告一次從的狀態,固然從每次數據複製都會向主報告狀態,這裏只是設置最長的間隔時間
hot_standby_feedback = on # 若是有錯誤的數據複製,是否向主進行反饋
注意:若是開啓了max_prepared_transactions,也必須保證從服務器的最大鏈接數要比主服務器大。

E.重啓從服務器服務,在主服務器驗證。

重啓從服務器服務。
在主服務器驗證,查詢select client_addr,sync_state from pg_stat_replication;

相似如上結果,配置成功。

相關文章
相關標籤/搜索