詳細(xì)的PostgreSQL工具總結(jié):備份恢復(fù)、監(jiān)控、復(fù)制、高可用等
概述
今天主要介紹一些PostgreSQL的工具,大體上可以分為以下幾類:
- 備份恢復(fù)工具
- 監(jiān)控工具
- 邏輯和基于觸發(fā)器的復(fù)制工具
- 多主復(fù)制工具
- 高可用和故障轉(zhuǎn)移工具
- 連接池工具
- 表分區(qū)工具
- 遷移工具
一、備份恢復(fù)工具
1. Barman
Barman (Backup and Recovery Manager-備份恢復(fù)管理器) 是一個用Python語言實現(xiàn)的PostgreSQL災(zāi)難恢復(fù)管理工具,它由第二象限公司(2ndQuadrant)開源并維護(hù)。它允許我們在關(guān)鍵業(yè)務(wù)環(huán)境中執(zhí)行遠(yuǎn)程備份,為數(shù)據(jù)庫管理員在恢復(fù)階段提供有效的數(shù)據(jù)保證。Barman最優(yōu)秀的功能包括備份元數(shù)據(jù)、增量備份、保留策略、遠(yuǎn)程回復(fù)、WAL文件歸檔壓縮和備份。
2. EDB BART
EDB BART(Backup and Recovery Tool -備份恢復(fù)工具)是企業(yè)級PostgreSQL數(shù)據(jù)管理策略的關(guān)鍵組件。BART為大規(guī)模部署的PostgreSQL服務(wù)提供保留策略和基于時間點恢復(fù)的實現(xiàn)。BART 2.0版本提供塊級別的增量備份。
3. PgBackRest
pgBackRest工具的主要目的是做一款簡單可靠的備份恢復(fù)工具,以能夠無縫的接入到大規(guī)模數(shù)據(jù)庫和工作負(fù)載中。pgBackRest放棄了其他傳統(tǒng)備份工具依賴tar和rsync的套路,它的備份功能都是從軟件內(nèi)部實現(xiàn)的,并采用客戶端協(xié)議與遠(yuǎn)程服務(wù)器交互。移除了對tar和rsync的依賴,使它能夠更好的應(yīng)對針對特定數(shù)據(jù)庫的備份挑戰(zhàn)??蛻舳诉h(yuǎn)程協(xié)議更加靈活,協(xié)議可以按照要求限制連接類型以保證備份過程更安全。
二、監(jiān)控工具
1. PoWA
PoWA(PostgreSQL Workload Analyzer)是PostgreSQL的工作負(fù)載分析工具,它收集性能數(shù)據(jù)并提供實時的圖標(biāo)和圖片展示,以幫助我們監(jiān)控和調(diào)優(yōu)PostgreSQL服務(wù)器。它和Oracle AWR或者SQL Server MDW很像。
2. PgCluu
pgCluu是一個PostgreSQL的性能監(jiān)控和審計工具。它以視圖的形式展示您從PostgreSQL數(shù)據(jù)庫集群收集的所有統(tǒng)計信息。它能展示一份完成的數(shù)據(jù)庫集群信息和系統(tǒng)使用率信息。
3. Pgwatch2
Pgwatch2是監(jiān)控PostgreSQL數(shù)據(jù)庫工具中最易用的一個。它基于Grafana并為PostgreSQL數(shù)據(jù)庫提供開箱即用的監(jiān)控功能。因為它已經(jīng)集成到了容器里,所以我們不必?fù)?dān)心各種依賴和復(fù)雜的安裝步驟,幾分鐘即可將監(jiān)控搭建完畢,所有的東西都已經(jīng)提前配置好。我們只需要將數(shù)據(jù)庫連接配置到監(jiān)控中即可運行正常監(jiān)控操作。
三、邏輯和基于觸發(fā)器的復(fù)制工具
1. pgLogical
pglogical是采用PostgreSQL擴展插件的形式實現(xiàn)的邏輯復(fù)制工具。集成完善,不使用任何觸發(fā)器和外部程序。該插件作為物理復(fù)制的替代者,在有選擇性的復(fù)制時采用發(fā)布/訂閱模型,是復(fù)制數(shù)據(jù)的有效方式。
2. Slony-I
Slony-I是PostgreSQL一主多從復(fù)制體系的實現(xiàn),支持級聯(lián)復(fù)制。開發(fā)Slony-I的主要目的是為了實現(xiàn)主從復(fù)制,該復(fù)制體系包含大型數(shù)據(jù)庫系統(tǒng)中對合理配置從系統(tǒng)所要求的所有特征和能力。
Slony-I主要為數(shù)據(jù)中心和備份站點場景設(shè)計,這種場景下通常要求所有節(jié)點都是可用的。
3. Bucardo
Bucardo是一個PostgreSQL異步復(fù)制系統(tǒng),允許配置多主多從操作。它是Backcountry.com公司的Jon Jensen和Greg Sabino開發(fā)的。
四、多主復(fù)制工具
BDR
Postgres-BDR(Bi-Directional Replication for PostgreSQL)是世界上第一個開源PostgreSQL多主復(fù)制系統(tǒng),目的是強化生產(chǎn)環(huán)境。由第二象限(2ndQuadrant)公司開源并維護(hù),BDR為地理分布集群環(huán)境特別設(shè)計,使用搞笑的異步邏輯復(fù)制方式,支持從2個到48個以上節(jié)點在不同地域之間分布。
五、高可用和故障轉(zhuǎn)移工具
1. Repmgr
repmgr是一款開源的、用于PostgreSQL服務(wù)器集群復(fù)制管理和故障轉(zhuǎn)移的工具。它擴展了PostgreSQL內(nèi)建的hot-standby能力,可以設(shè)置熱備份服務(wù)器、監(jiān)控復(fù)制、執(zhí)行管理任務(wù)(故障轉(zhuǎn)移、手工切換等)。repmgr是第二象限( 2ndQuadrant)公司開發(fā)的。
2. PAF
PAF(PostgreSQL Automatic Failover-自動故障轉(zhuǎn)工具)是OCF資源代理貢獻(xiàn)給PostgreSQL的,它的初始目的是在Pacemaker管理和PostgreSQL劃清規(guī)則,讓事情變得簡單、文檔化和有效。如果您的PostgreSQL集群啟用了內(nèi)部流復(fù)制,PAF暴露給Pacemaker當(dāng)前每一個PostgreSQL實例節(jié)點的狀態(tài):哪個是主,哪個是從,哪個已停止,哪個正在追復(fù)制狀態(tài)等等。如果主節(jié)點失敗了,Pacemaker默認(rèn)首先恢復(fù)失敗的主節(jié)點。如果失敗不可恢復(fù),PAF會在從節(jié)點中選取一個最好的(與已失敗主節(jié)點數(shù)據(jù)最為接近)提升為新的主節(jié)點。
3. Patroni
Patroni是一個模板,它使用Python為你提供一個自己訂制的,高可用的解決方案,為最大程度的可用性,它的配置信息存儲在像ZooKeeper, etcd或者Consul中。如果DBAs,DevOps工程師或者SRE正在尋找一個在數(shù)據(jù)中心中快速部署高可用PostgreSQL方案,或者其他的用途,Patroni 能提供幫助。
4. Stolon
Stolon是一個cloud native的PostgreSQL高可用管理工具。它之所以是cloud native的是因為它可以在為容器內(nèi)部的PostgreSQL提供高可用(Kubernetes 集成),而且還支持其他種類的基礎(chǔ)設(shè)施(比如:cloud IaaS,舊風(fēng)格的基礎(chǔ)設(shè)施等)
六、Connection Pooling Tools
1. PgBouncer
PgBouncer是Skype的研發(fā)人員于2007年開發(fā)的連接池工具。在那以后的很多年里,該項目已經(jīng)由很多開發(fā)者參與改進(jìn),但是無論怎么變,其降低PostgreSQL連接代價的角色一直未曾改變。PgBouncer允許PostgreSQL數(shù)據(jù)庫操作比其自身所能提供的最大連接數(shù)更大的客戶端訪問。它本質(zhì)上只追蹤每一個客戶端連接,然后基于配置信息,創(chuàng)建一些客戶端連接并基于先進(jìn)先服務(wù)的原則服務(wù)于客戶端訪問。
2. PgPool-II
pgpool-II也是連接池,我們通常也習(xí)慣稱它為pgpool。它是另一個流行的連接代理,它早于PgBouncer一年左右的時間發(fā)布(2006年下半年發(fā)布)。pgpool的使用范圍非常關(guān),所能提供的功能包括:基于查詢的復(fù)制,連接池功能,負(fù)載均衡,并行查詢等等,pgpool的一個重要特定就是連接池。如果我們有兩臺PostgreSQL服務(wù)器,我們想使用虛擬IP,這樣客戶端就不會感受到主數(shù)據(jù)庫切換的影響。有時候,為了在服務(wù)器之間移動IP地址,首先需要從主數(shù)據(jù)庫服務(wù)器上把IP移除,然后在另外一臺上重建,這就回中斷活動鏈接,導(dǎo)致短暫的服務(wù)不可用。使用pgpool可以緩存服務(wù)器直到另一臺服務(wù)器提升上來,pgpool會從內(nèi)部處理故障轉(zhuǎn)移,在應(yīng)用和客戶端的角度,數(shù)據(jù)庫似乎從來沒有下過線。
七、表分區(qū)工具
1. Pg_Partman
pg_partman是PostgreSQL的一個擴展插件,用于創(chuàng)建和管理基于時間或者基于序列的表分區(qū)。也支持多級子分區(qū)。子表和觸發(fā)器都由擴展插件自身管理。已經(jīng)有數(shù)據(jù)的表也能很容易的添加細(xì)粒度的分區(qū)??蛇x的保留策略能夠自動刪除不再需要的分區(qū)。后臺工作進(jìn)程(BGW)能夠自動運行分區(qū)維護(hù)定時執(zhí)行任務(wù),而不需要依賴于linux cron等程序從外部進(jìn)行維護(hù)。
2. pg_Pathman
pg_pathman是PostgreSQL Pro公司開源的擴展插件,可以為大型分布式數(shù)據(jù)庫提供優(yōu)化的分區(qū)解決方案。使用pg_pathman可以給大型數(shù)據(jù)庫不停機分區(qū),加速分區(qū)表查詢,動態(tài)管理和增加分區(qū),為分區(qū)增加外部表,操作聯(lián)合分區(qū)等。
八、遷移工具
Ora2pg
Ora2Pg是一個用于將Oracle或MySQL數(shù)據(jù)庫遷移到PostgreSQL的免費工具。它能連接到Oracle數(shù)據(jù)庫,然后自動掃描和導(dǎo)出源端的表結(jié)構(gòu)或者數(shù)據(jù),轉(zhuǎn)化為PostgreSQL數(shù)據(jù)庫SQL腳本。Ora2Pg可以當(dāng)作Oracle數(shù)據(jù)庫的反向引擎,用于大型企業(yè)級數(shù)據(jù)庫遷移或者Oracle數(shù)據(jù)復(fù)制到PostgreSQL數(shù)據(jù)庫等場景。它易于使用,不需要任何Oracle數(shù)據(jù)庫背景,你所需要做的僅僅是建立與Oracle數(shù)據(jù)庫的連接而已。