主頁 > 資料庫 > 工具 | PG 集群復制管理工具 repmgr

工具 | PG 集群復制管理工具 repmgr

2021-12-07 08:06:24 資料庫

作者:顏博 青云科技資料庫研發工程師

目前從事 PostgreSQL 產品開發作業,熱衷于 PostgreSQL 資料庫的學習和研究

| REPMGR 簡介

repmgr[1] 是一套開源工具,用于管理 PostgreSQL 服務器集群內的復制和故障轉移,repmgr 支持并增強了 PostgreSQL 的內置流復制,它提供了一個單一的讀/寫主服務器和一個或多個只讀備用服務器,

file

repmgr 流復制管理工具對 PostgreSQL 集群節點的管理是基于分布式的管理方式,集群每個節點都具備一個 repmgr.conf 組態檔,用來記錄本節點的 ID、節點名稱、連接資訊、資料庫的 PGDATA 目錄等配置引數,在完成引數配置后,就可以通過 repmgr 命令實作對集群節點的 “一鍵式” 部署,

repmgr 架構圖(圖片來源:https://repmgr.org/ )如下:

file

集群節點部署完成后,每個節點都可通過 repmgrd 守護行程來監控節點資料庫狀態;每個節點元資料表可獨立維護,這些元資料表將記錄所有集群節點的資訊,

選舉原理

在發生 Auto Failover 時,備節點在嘗試多次連接主節點失敗后(嘗試次數及嘗試間隔可以通過 repmgr.conf 組態檔修改),repmgrd 會在所有備節點中選舉一個候選備節點(選舉機制參考下文)提升為新主節點,其他備節點去 Follow 到該新主上,形成一個新的集群,

repmgr 選舉候選備節點按照以下順序選舉:LSN > Priority > Node_ID

  • 系統將優先選舉一個 LSN 較大的節點,作為候選備節點;
  • 若 LSN 一樣,會根據 Priority 優先級進行比較(該優先級是在組態檔中進行引數配置,如果 Priority 為 0,則代表該節點被禁止提升為主節點);
  • 若優先級也一樣,會比較節點的 Node ID,小者會優先選舉,

兩個工具

repmgr 主要提供了 repmgr 和 repmgrd 兩個工具,

repmgr 是一個執行管理任務的命令列工具,方便進行 PostgreSQL 服務器集群的管理,具備以下功能特點:

  • 設定備用服務器
  • promote 備
  • 主從切換
  • 顯示復制集群中服務器的狀態

repmgrd 是一個守護行程,它主動監視復制集群中的服務器并支持以下任務:

  • 監控和記錄復制集群資訊
  • 故障檢測、故障轉移
  • 集群中事件的通知(需要自定義腳本接受通知)

用戶與元資料

為了有效地管理復制集群,repmgr 需要將集群中節點的相關資訊存盤在 repmgr 專用資料庫表中,此架構由 repmgr 擴展自動創建,該擴展在初始化由 repmgr 管理的集群(repmgr primary register)的第一步中安裝,并包含以下物件:

  • Tables:
    • repmgr.events: records events of interest
    • repmgr.nodes: 復制集群中每個節點的連接和狀態資訊
    • repmgr.monitoring_history: repmgrd 寫入的歷史備用監控資訊
  • Views:
    • repmgr.show_nodes: 基于 repmgr.nodes 表,另外顯示服務器上游節點的名稱
    • repmgr.replication_status: 當啟用 repmgrd 的監控時,顯示每個 standby 的監控狀態,repmgr 元資料資訊可以存盤在已有的資料庫或在自己的專用資料庫,

注意:repmgr 元資料資訊不能存盤在不屬于 repmgr 管理的復制集群的 PostgreSQL 服務器上,repmgr 需要一個可以訪問資料庫和執行必要的更改的用戶,該用戶可以不是超級用戶,但是某些操作(例如 repmgr 擴展的初始安裝)將需要超級用戶連接(可以在需要時使用命令列選項指定 --superuser),

| 安裝 repmgr

注意:必須在集群的所有節點安裝相同的 “主要” repmgr 版本(例如 5.2.1.x)[2],

repmgr 版本

repmgr 版本 支持的 PostgreSQL 版本 最新版本
repmgr 5.2 9.4, 9.5, 9.6, 10, 11, 12, 13 5.2.1 (2020-12-07)
repmgr 5.1 9.3, 9.4, 9.5, 9.6, 10, 11, 12 5.1.0 (2020-04-13)
repmgr 5.0 9.3, 9.4, 9.5, 9.6, 10, 11, 12 5.0 (2019-10-15)
repmgr 4.x 9.3, 9.4, 9.5, 9.6, 10, 11 4.4 (2019-06-27)
  • repmgr 2.x 和 3.x 系列不再維持,不在此羅列,
  • repmgr 5.0 發布之后,將不會再發布 repmgr 4.x 系列,

安裝程序

以 repmgr 5.2.x 版本為例,從原始碼倉庫,Clone 并安裝 repmgr,

$ git clone https://github.com/EnterpriseDB/repmgr
$ git checkout REL5_2_STABLE
$ cd repmgr/
./configure
$ make install

make install 成功后,pg_bin_path 里會有 repmgr、repmgrd 兩個可執行檔案,

| 使用 repmgr

repmgr 工具的基本語法[3]:

repmgr [OPTIONS] primary {register|unregister}
repmgr [OPTIONS] standby {register|unregister|clone|promote|follow|switchover}
repmgr [OPTIONS] node    {status|check|rejoin|service}
repmgr [OPTIONS] cluster {show|event|matrix|crosscheck|cleanup}
repmgr [OPTIONS] witness {register|unregister}
repmgr [OPTIONS] service {status|pause|unpause}
repmgr [OPTIONS] daemon  {start|stop}
  • 一般配置選項
  -b, --pg_bindir=PATH    PostgreSQL 二進制檔案的路徑(可選)
  -f, --config-file=PATH  repmgr 組態檔的路徑
  -F, --force             強制執行有潛在危險的操作
  • 資料庫連接選項
  -d, --dbname=DBNAME     要連接的資料庫(默認:“postgres”)
  -h, --host=HOSTNAME     資料庫服務器主機
  -p, --port=PORT         資料庫服務器埠(默認:“5432”)
  -U, --username=USERNAME 要連接的資料庫用戶名(默認:“postgres”)
  • 特定于節點的選項
  -D, --pgdata=https://www.cnblogs.com/radondb/archive/2021/12/02/DIR        節點資料目錄的位置
  --node-id               通過id指定節點(僅適用于部分操作)
  --node-name             按名稱指定節點(僅適用于部分操作)
  • 記錄選項
   --dry-run 顯示動作會發生什么,但不執行它
   -L, --log-level 設定日志級別(覆寫組態檔;默認值:NOTICE)
   --log-to-file 記錄到 repmgr.conf 中定義的檔案(或記錄工具)
   -q, --quiet 禁止除錯誤之外的所有日志輸出
   -t, --terse 不顯示細節、提示和其他非關鍵輸出
   -v, --verbose 顯示額外的日志輸出(用于除錯)

常用操作

  • 操作類
命令 描述
repmgr primary register 注冊當前節點為 primary 節點
repmgr primary unregister 注銷 primary 主節點
repmgr standby clone 當前節點使用 pg_basebackup 從 primary 主節點復制資料目錄
repmgr standby register 注冊當前節點為 standby 節點
repmgr standby unregister 注銷 standby 節點
repmgr standby promote 將 standby 節點提升為 primary 主節點
repmgr standby follow 一主多從架構中,standby 節點重新指向新的 primary 主節點
repmgr standby switchover 將指定 standby 節點提升為 primary 主節點,并將 primary 主節點降級為 standby 節點
repmgr witness register 注冊當前節點為見證服務器節點
repmgr witness unregister 注銷見證服務器節點
  • 查看類
命令 描述
repmgr node status 查看各節點的基本資訊和復制狀態
repmgr node check 高可用集群節點狀態資訊檢查
repmgr node rejoin 重新加入一個失效節點到集群
repmgr cluster show 查看集群中已注冊的節點基本資訊與狀態
repmgr cluster matrix 查看集群中所有節點的 matrix 資訊
repmgr cluster crosscheck 查看集群中所有節點間兩兩交叉連接檢測
repmgr cluster event 查看集群事件記錄資訊
repmgr cluster cleanup 清理集群監控歷史

下期預告

下期我們將使用 repmgr ,帶您一步步搭建一套 PostgreSQL 高可用集群,

參考

[1]. repmgr:https://github.com/EnterpriseDB/repmgr

[2]. 5.2.1檔案:https://repmgr.org/docs/5.2/

[3]. 常見操作:https://blog.csdn.net/weixin_37692493/article/details/117032458?ivk_sa=1024320u

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374456.html

標籤:其他

上一篇:Redis | 第7章 Redis 服務器《Redis設計與實作》

下一篇:Mysql面試總結

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more