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列表)一般都是 由左到右,上而下排序