1. 程式人生 > >postgres standby實現同步流複製

postgres standby實現同步流複製

postgres可以實現基於流傳遞wal日誌然後實現standby,從而實現資料庫的高可用。在建立standby的過程中,有兩種方式,一種是同步的方式,另外一種方式是非同步的方式。同步和非同步的差別在於,非同步的方式為當master將wal日誌傳遞給slave端之後,不需要standby端進行確認就進行了返回。這樣如果資料發生了崩潰會導致資料有誤差。而同步的方式則是需要standby對master端穿過來的wal日誌進行確認,知道確認成功才會進行返回,這就保證了兩邊資料的完全的一直。但是這種模式會存在一個問題,如果standby出現問題,然後一直不能對master的請求進行確認,就會導致master主機將會被hang住,從而導致資料庫不能寫。所以我們在搭建同步的資料庫叢集的時候,要求standby的數量在兩個以上。

環境說明:(為了方便下面的實驗環境一共採用了一個standby,不過正式的環境中一定要注意)

master:

192.168.8.4

192.168.8.147

更改master端的配置檔案(postgres.conf)

wal_level =hot_standby

max_wal_senders =5

listen_addresses ='*'

synchronous_standby_names= 'standby01' (此處的名字一定要寫,多個名字利用逗號分開,代表的是standby的名字)

建立使用者並且對登入情況進行限制(pg_hba.conf)

在配置檔案中新增如下的行

host     replication     all             all          md5

在standby進行資料檔案的拷貝

pg_basebackup  -U replicaiton  -h 192.168.8.4 -F p -P -x -R -D/data/postgresdata_backup/ -l backup20170611

之後修改資料目錄下面的recovery.conf配置檔案

primary_conninfo ='application_name=name user=replication password=*** host=192.168.8.4 port=5432sslmode=disable sslcompression=1'

注意此處的需要新增application_name=name(此時的name和在主配置中的synchronous_standby_names保持一致)

修改配置檔案開啟standby

hot_standby = on

然後就可以對資料庫進行重啟了

之後可以在master端進行檢視同步情況

selectpid,state,client_addr,sync_priority,sync_state from pg_stat_replication;

  pid |   state   | client_addr  | sync_priority |sync_state

-------+-----------+---------------+---------------+------------

 32379 | streaming | 192.168.8.147 |             1 | sync

表示現在同步正常,如果有多臺standby的話另外的standby也會出現在這個列表中,不過他的狀態為potential,表示他可以成為sync狀態。

另外hang住的情況也可以自行測試,在此處我就不測試了。


相關推薦

postgres standby實現同步複製

postgres可以實現基於流傳遞wal日誌然後實現standby,從而實現資料庫的高可用。在建立standby的過程中,有兩種方式,一種是同步的方式,另外一種方式是非同步的方式。同步和非同步的差別在於,非同步的方式為當master將wal日誌傳遞給slave端之後,不需要

PostgreSQL 之 同步複製實現

同步複製要求在資料寫入Standby資料庫後,事務的commit才返回,所以Standby庫出現問題時,會導致主庫被hang住。解決這個問題的方法是啟動兩個Standby資料庫,這兩個standby資料庫只要有一個是正常的,就不會讓主庫hang住。所以在實際應用中,同步流複製

PostgreSQL 主從非同步、同步複製配置(三)

同步、非同步多從庫複製 在master上連線pocdb 資料庫 ,基於配置二的節點狀態 pocdb=# SELECT client_addr,application_name,sync_state FROM pg_stat_replication; c

PostgreSQL 同步複製延遲測試(二)

1主2從SR同步流複製測 搭建環境 伺服器 | Role |- | :-: | -: | 10.10.56.16 | master 10.10.56.17 | slave1 10.10.56.19 | slave2 16查詢狀

IO的應用(一):實現檔案的複製

package com.bjpowernode.demo03; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /** 使用FileReader/FileW

ORACLE 資料同步 容災備份恢復 主從架構 讀寫分離 (OGG,ADG,DSG,高階複製複製,logmnr)

ORACLE 幾種同步災備手段(OGG,ADG,DSG,高階複製,流複製,logmnr) 2017年07月14日 13:45:47 小學生湯米 閱讀數:11073 目前所接觸的Oracle 的災備以及同步手段主要有ADG,OGG,DSG,高階複製,流複製以及自主開發的基於

同一虛擬機器下docker實現postgresql得主從複製

1.首先準備好postgresql的映象,並編寫docker-compost.yml: 主: version: '3.3' services: db: image: postgres container_name: db p

java中的IO實現檔案的複製下載

public HttpServletResponse download(String path, HttpServletResponse response) {         try {             // path是指欲下載的檔案的路徑。             File file = new

【java】IO 實現簡單的複製功能

package ioTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import

postgres 簡單複製配置

       postgres流複製類似於oracle的goldengate,在PostgreSQL在9.0之後引入了主備流複製機制,通過流複製,備庫不斷的從主庫同步相應的資料,並在備庫apply每個WAL record,這裡的流複製每次傳輸單位是WAL日誌的record。而

IO  —— 使用列印實現檔案的複製

PrintWriter 是一個經常使用的很重要的流,並且它是一個高階流(包裝流),它可以實現一行一行地“列印”(對字元資料進行操作)。 例1:對列印流的初級認識 /** * Created b

Java實現inputstream複製

獲取到一個inputstream後,可能要多次利用它進行read的操作。由於流讀過一次就不能再讀了,而InputStream物件本身不能複製,而且它也沒有實現Cloneable介面,所以得想點辦法。

js實現瀑布

done title pos webkit for ria side 可能 src 下午查找了瀑布流的相關原理,找了一些css3實現的還有js實現的,最後總結了一些比較簡單的,易懂的整理起來 1.css3實現 只要運用到 column-count分列      

【前端】用jQuery實現瀑布效果

scrollto title n) 個性 避免 ive gets type turn jQuery實現瀑布流效果 何為瀑布流:   瀑布流,又稱瀑布流式布局。是比較流行的一種網站頁面布局,視覺表現為參差不齊的多欄布局,隨著頁面滾動條向下滾動,這種布局還會不斷加載數據塊並附加

java實現同步的幾種方式(總結)

副本 增刪改 否則 都是 fin ret 語義 value art 為何要使用同步? java允許多線程並發控制,當多個線程同時操作一個可共享的資源變量時(如數據的增刪改查), 將會導致數據不準確,相互之間產生沖突,因此加入同步鎖以避免在該線程沒有完成操

corosync+pacemaker實現pg復制自動切換

mov out ros 綁定 節點 war backend 故障恢復 pgsql 一、環境 $ cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) node1: 192.168.111.128 n

redis的安裝,以及主從實現同步

能夠 cnblogs tor 連接 mas pan adding app lee Redis的主從復制功能非常強大,一個master可以擁有多個slave,而一個slave又可以擁有多個slave,如此下去,形成了強大的多級服務器集群架構。下面我演示下怎樣在多臺服務

CentOS6.8 搭建SVN並用鉤子自動實現同步到web目錄

svn安裝subversion : yum install -y subversion檢查安裝是否成功: svn --version創建倉庫目錄: mkdir -p /home/svn/test創建項目:svnadmin create /home/svn/test檢查創建是否成功: (1)c

GCD實現同步方法

任務 初始 out nal 方法 semaphore 資源 jsb v操作 在iOS多線程中我們知道NSOperationQueue操作隊列可以直接使用addDependency函數設置操作之間的依賴關系實現線程同步,還可以使用setMaxConcurrentOperat

flex布局實現瀑布排版

get eight wookmark 技術 rec 日子 rect play 困難 網上有很多有關js(jq)實現瀑布流和有關瀑布流的插件很多,例如:插件(Masonry,Wookmark等等)。按照正常的邏輯思維,瀑布流的排版(item列表)一般都是 由左到右,上而下排序