1. 程式人生 > >PostgreSQL 主從非同步、同步流複製配置(三)

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

同步、非同步多從庫複製

master上連線pocdb 資料庫 ,基於配置二的節點狀態

pocdb=# SELECT client_addr,application_name,sync_state FROM pg_stat_replication;
 client_addr | application_name | sync_state 
-------------+------------------+------------
 10.10.56.17 | slave1           | async
 10.10.56.19 | slave2           | async
(2 rows)

master有兩個slave都是async(非同步)流複製,現在修改slave1節點為sync(同步)流複製,修改master 節點的postgresql.conf中引數synchronous_standby_names

synchronous_standby_names = 'slave1' 
[email protected]-db1:~> /opt/pgsql-9.6/bin/pg_ctl -D /pgdata/9.6/poc/data/ reload
server signaled

檢視master的複製資訊:

pocdb=# SELECT client_addr,application_name,sync_state FROM pg_stat_replication;
client_addr | application_name | sync_state -------------+------------------+------------ 10.10.56.17 | slave1 | sync 10.10.56.19 | slave2 | async (2 rows)

slave1已經修改為同步複製。

同步複製slave宕機測試

a. 隱式事務,同步slave宕機,事務掛起,slave恢復後寫事務繼續執行。

pocdb=# SELECT client_addr,application_name,sync_state FROM
pg_stat_replication;
client_addr | application_name | sync_state -------------+------------------+------------ 10.10.56.17 | slave1 | sync (1 row)

slave1為同步複製方式,當slave1宕機(kill -9),在master上執行查詢可以執行,但寫入的DML語句,將被block;

pocdb=# SELECT * FROM tbl;    
 id | ival | cval 
----+------+------
  1 |    1 | A
  2 |   20 | B
(2 rows)

pocdb=# INSERT INTO tbl (ival,cval) VALUES ( 4,NULL);      

恢復slave1之後,master上的事務將繼續執行:
恢復slave:

[email protected]-db2:~> /opt/pgsql-9.6/bin/pg_ctl -D /pgdata/9.6/poc/data/ start
server starting

master上的事務:

pocdb=# INSERT INTO tbl (ival,cval) VALUES ( 4,NULL);      
INSERT 0 1
pocdb=# SELECT * FROM tbl;
 id | ival | cval 
----+------+------
  1 |    1 | A
  2 |   20 | B
  4 |    4 | 
(3 rows)

在同步複製的slave節點上查詢

pocdb=# SELECT * FROM tbl;
 id | ival | cval 
----+------+------
  1 |    1 | A
  2 |   20 | B
  4 |    4 | 
(3 rows)

b. 顯式事務,在slave宕機的情況下,提交的事務會本地提交,slave恢復後會將master上本地提交的事務同步到slave,rollback的事務在slave宕機時不受影響。
顯式本地提交事務:

pocdb=# BEGIN;  
BEGIN
pocdb=# INSERT INTO tbl (ival,cval) VALUES (5,NULL);
INSERT 0 1
pocdb=# COMMIT;
^CCancel request sent
WARNING:  canceling wait for synchronous replication due to user request
DETAIL:  The transaction has already committed locally, but might not have been replicated to the standby.
COMMIT
pocdb=# 

顯式本地ROLLBACK事務:

pocdb=# BEGIN;
BEGIN
pocdb=# INSERT INTO tbl (ival,cval) VALUES (10,'f');  
INSERT 0 1
pocdb=# ROLLBACK;
ROLLBACK
pocdb=# 

在slave上查詢:

[email protected]:~> /opt/pgsql-9.6/bin/psql pocdb
psql (9.6.8)
Type "help" for help.

pocdb=# SELECT * FROM tbl;
 id | ival | cval 
----+------+------
  1 |    1 | A
  2 |   20 | B
  4 |    4 | 
  6 |    5 | 
(4 rows)
非同步複製slave宕機

當非同步複製slave宕機,master讀寫不受影響,恢復後可即時同步到最新資料:

pocdb=# SELECT * FROM tbl;    
 id | ival | cval 
----+------+------
  1 |    1 | A
  2 |   20 | B
  4 |    4 | 
  6 |    5 | 
(4 rows)

相關推薦

PostgreSQL 主從非同步同步複製配置

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

PostgreSQL 主從非同步複製配置

Stream Replication master防火牆配置 master :10.10.56.16 slave :10.10.56.17 slave :10.10.56.18 slave :10.10.56.19 在 master 上搭

Linux下mysql主從複製配置CentOS7

主從複製需要注意: 1、資料庫版本必須一致 2、資料庫名稱必須一致   例如db888 3、配置主資料庫開啟二進位制日誌 4、主資料庫、從資料庫必須具有一個唯一的server-id 配置主從資料庫複製: 一:操作主庫 1、修改主庫的配置檔案     vi /e

GoldenGate配置之DDL複製配置

環境: Item Source System Target System Platform Red H

java初識 | eclipse和jdk的下載與安裝環境變數的配置win10

首先是jdk的安裝 瀏覽器輸入網址 www.oracle.com/dowloads   訪問oracle官網的下載連結即可(可能開啟速度會慢一些,畢竟不是國內的網站) 開啟之後的介面是這樣的(一個全是英文的看不懂的網站) 然鵝對於我們來說並沒什麼問題。我們只需要滑動滑鼠,將

從零開始學C++之IO類庫:檔案的讀寫二進位制檔案的讀寫檔案隨機讀寫

#include <cassert>#include <iostream>#include <fstream>#include <string>using namespace std;struct Test {     int a;     int b; };i

CDH集群安裝配置- 集群時間同步主節點和 免密碼登錄

6.2 提示 5.0 ssh spool 添加 ask 使用 rontab 集群時間同步(主節點) 1. 查看是否安裝ntp服務,如果沒有安裝 rpm -qa |grep ntpd查看命令 yum install ntp安裝命令 2. 修改配置 vi /etc/ntp

Android studio第一次使用配置gradle項目構建

令行 技術分享 簽名 aries rar 工具 img 引入 文章 1、gradle的概念 2、gradle配置jar包。和libs目錄導入jar包的差別 3、簽名打包: (1)Studio (2)命令行 (3)gradle wrap

10.5-全棧Java筆記:常見詳解

java上節我們講到「Java中常用流:緩沖流」,本節我們學習數據流和對象流~ 數據流數據流將“基本數據類型變量”作為數據源,從而允許程序以與機器無關方式從底層輸入輸出流中操作java基本數據類型。 DataInputStream和DataOutputStream提供了可以存取與機器無關的所有Java基礎類

關於wamp的HTML, PHP, mysql 三者的操作與聯系 - mysql簡單配置

長度 -1 logs 建議 用戶 不用 自帶 .com upd   上一章講完HTML與PHP之間的傳值方法,這一章將wamp中mysql的使用,為下一章PHP調用數據準備。 再次說明作者的wamp版本是3.0.6 64bit   打開wamp自帶的mysql試圖數據庫

C++: I/O詳解——串

name namespace 轉換 pac end 成員 col logs nbsp 一、串流 串流類是 ios 中的派生類 C++的串流對象可以連接string對象或字符串 串流提取數據時對字符串按變量類型解釋;插入數據時把類型 數據轉換成字符串 串流I/O具有格式化功能

第一次使用Android Studio時你應該知道的一切配置:gradle項目構建

gen 官方 配置文件 conf 什麽 學習 package ack 處的 ?【聲明】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae

Git配置使用gitolite控制權限

gitolite1、切換git用戶 su - git 2、獲取gitolite,不能到github下載tar或zip包解壓,缺少.git目錄,安裝時獲取不到版本 git clone https://github.com/sitaramc/gitolite 可能會現如下錯誤Unable to find remo

Ansible基礎安裝與配置

回滾 user lin 系統服務管理 oot 備份 cut htm 遠程主機 常用模塊使用(1)、setup## 用來查看遠程主機的一些基本信息# ansible storm_cluster -m setup (2)、ping## 用來測試遠程主機的運行狀態# ansibl

IO的應用異常列印日誌檔案中

package com.bjpowernode.demo02; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.i

華為路由器OSPF虛鏈路配置

我們知道在OSPF配置當中,非骨幹區域必須和骨幹區域直接相連,若不與骨幹區域直接相連,則需要配置虛鏈路,本篇文章主要介紹OSPF虛鏈路配置命令。 實驗配置如下圖: 實驗說明如下: 1.路由器R1、R2在0區域,路由器R2、R3、R4在234區域,路由器R4、R5在45區域。2.45區域沒有與

WebLogic叢集配置

WebLogic叢集配置 weblogic建立代理伺服器 代理伺服器僅僅用來轉發請求,但是其本身也受主伺服器的控制和管理,啟動需要主伺服器來啟動 建立Proxy伺服器(代理伺服器本身不需要部署專案,它僅僅用來轉發使用者請求) 所以直接建立並啟動

配置中心 Apollo 原始碼解析 —— 客戶端 API 配置之 ConfigFile

������關注微信公眾號:【芋道原始碼】有福利: 1. RocketMQ / MyCAT / Sharding-JDBC 所有原始碼分析文章列表 2. RocketMQ / MyCAT / Sharding-JDBC 中文註釋

Zookeeper叢集部署與配置

在上一篇部落格中我們講解了《Zookeeper的單機配置》,此篇部落格將繼續介紹Zookeeper的叢集部署與配置。 環境 叢集配置的環境與單機配置的環境相同,唯一不同的就是叢集是在多臺伺服器之間配置,當然也有偽叢集的配置,也就是在同一臺機器上配置多臺服

SpringCloud微服務之動態自動更新配置

先看一張動態自動更新原理圖: SpringCloud Bus 負責管理訊息佇列,實現配置傳輸給各個服務 WebHook 實現更新配置時自動傳送 /bus-refresh 請求