面試官:你了解過PostgreSQL的哪些工具?
概述
今天主要介紹一些PostgreSQL的工具,大體上可以分為以下幾類:
- 備份恢復(fù)工具
- 監(jiān)控工具
- 邏輯和基于觸發(fā)器的復(fù)制工具
- 多主復(fù)制工具
- 高可用和故障轉(zhuǎn)移工具
- 連接池工具
- 表分區(qū)工具
- 遷移工具
一、備份恢復(fù)工具
1、Barman
Barman (Backup and Recovery Manager-備份恢復(fù)管理器) 是一個用Python語言實(shí)現(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文件歸檔壓縮和備份。
Barman (Backup and Recovery Manager) is an open-source administration tool for managing backup and disaster recovery of PostgreSQL servers. It allows your organization to perform remote backups of multiple servers in business critical environments and helps DBAs during the recovery phase.
2、EDB BART
EDB BART(Backup and Recovery Tool -備份恢復(fù)工具)是企業(yè)級PostgreSQL數(shù)據(jù)管理策略的關(guān)鍵組件。BART為大規(guī)模部署的PostgreSQL服務(wù)提供保留策略和基于時間點(diǎn)恢復(fù)的實(shí)現(xiàn)。BART 2.0版本提供塊級別的增量備份。
3、PgBackRest
pgBackRest工具的主要目的是做一款簡單可靠的備份恢復(fù)工具,以能夠無縫的接入到大規(guī)模數(shù)據(jù)庫和工作負(fù)載中。pgBackRest放棄了其他傳統(tǒng)備份工具依賴tar和rsync的套路,它的備份功能都是從軟件內(nèi)部實(shí)現(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ù)并提供實(shí)時的圖標(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)控功能。因?yàn)樗呀?jīng)集成到了容器里,所以我們不必?fù)?dān)心各種依賴和復(fù)雜的安裝步驟,幾分鐘即可將監(jiān)控搭建完畢,所有的東西都已經(jīng)提前配置好。我們只需要將數(shù)據(jù)庫連接配置到監(jiān)控中即可運(yùn)行正常監(jiān)控操作。
三、邏輯和基于觸發(fā)器的復(fù)制工具
1、pgLogical
pglogical是采用PostgreSQL擴(kuò)展插件的形式實(shí)現(xiàn)的邏輯復(fù)制工具。集成完善,不使用任何觸發(fā)器和外部程序。該插件作為物理復(fù)制的替代者,在有選擇性的復(fù)制時采用發(fā)布/訂閱模型,是復(fù)制數(shù)據(jù)的有效方式。
2、Slony-I
Slony-I是PostgreSQL一主多從復(fù)制體系的實(shí)現(xiàn),支持級聯(lián)復(fù)制。開發(fā)Slony-I的主要目的是為了實(shí)現(xiàn)主從復(fù)制,該復(fù)制體系包含大型數(shù)據(jù)庫系統(tǒng)中對合理配置從系統(tǒng)所要求的所有特征和能力。
Slony-I主要為數(shù)據(jù)中心和備份站點(diǎn)場景設(shè)計,這種場景下通常要求所有節(jié)點(diǎn)都是可用的。
3、Bucardo
Bucardo是一個PostgreSQL異步復(fù)制系統(tǒng),允許配置多主多從操作。它是Backcountry.com公司的Jon Jensen和Greg Sabino開發(fā)的。
四、多主復(fù)制工具
1、BDR
Postgres-BDR(Bi-Directional Replication for PostgreSQL)是世界上第一個開源PostgreSQL多主復(fù)制系統(tǒng),目的是強(qiáng)化生產(chǎn)環(huán)境。由第二象限(2ndQuadrant)公司開源并維護(hù),BDR為地理分布集群環(huán)境特別設(shè)計,使用搞笑的異步邏輯復(fù)制方式,支持從2個到48個以上節(jié)點(diǎn)在不同地域之間分布。
五、高可用和故障轉(zhuǎn)移工具
1、Repmgr
repmgr是一款開源的、用于PostgreSQL服務(wù)器集群復(fù)制管理和故障轉(zhuǎn)移的工具。它擴(kuò)展了PostgreSQL內(nèi)建的hot-standby能力,可以設(shè)置熱備份服務(wù)器、監(jiān)控復(fù)制、執(zhí)行管理任務(wù)(故障轉(zhuǎn)移、手工切換等)。repmgr是第二象限( 2ndQuadrant)公司開發(fā)的。
repmgr is an open-source tool suite for managing replication and failover in a cluster of PostgreSQL servers. It enhances PostgreSQL’s built-in hot-standby capabilities with tools to set up standby servers, monitor replication, and perform administrative tasks such as failover or manual switchover operations.
2、PAF
PAF(PostgreSQL Automatic Failover-自動故障轉(zhuǎn)工具)是OCF資源代理貢獻(xiàn)給PostgreSQL的,它的初始目的是在Pacemaker管理和PostgreSQL劃清規(guī)則,讓事情變得簡單、文檔化和有效。如果您的PostgreSQL集群啟用了內(nèi)部流復(fù)制,PAF暴露給Pacemaker當(dāng)前每一個PostgreSQL實(shí)例節(jié)點(diǎn)的狀態(tài):哪個是主,哪個是從,哪個已停止,哪個正在追復(fù)制狀態(tài)等等。如果主節(jié)點(diǎn)失敗了,Pacemaker默認(rèn)首先恢復(fù)失敗的主節(jié)點(diǎn)。如果失敗不可恢復(fù),PAF會在從節(jié)點(diǎn)中選取一個最好的(與已失敗主節(jié)點(diǎn)數(shù)據(jù)最為接近)提升為新的主節(jié)點(diǎn)。
3、Patroni
Patroni是一個模板,它使用Python為你提供一個自己訂制的,高可用的解決方案,為最大程度的可用性,它的配置信息存儲在像ZooKeeper, etcd或者Consul中。如果DBAs,DevOps工程師或者SRE正在尋找一個在數(shù)據(jù)中心中快速部署高可用PostgreSQL方案,或者其他的用途,Patroni 能提供幫助。
4、Stolon
Stolon是一個cloud native的PostgreSQL高可用管理工具。它之所以是cloud native的是因?yàn)樗梢栽跒槿萜鲀?nèi)部的PostgreSQL提供高可用(Kubernetes 集成),而且還支持其他種類的基礎(chǔ)設(shè)施(比如:cloud IaaS,舊風(fēng)格的基礎(chǔ)設(shè)施等)
六、Connection Pooling Tools
1、PgBouncer
PgBouncer是Skype的研發(fā)人員于2007年開發(fā)的連接池工具。在那以后的很多年里,該項(xiàng)目已經(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的一個擴(kuò)展插件,用于創(chuàng)建和管理基于時間或者基于序列的表分區(qū)。也支持多級子分區(qū)。子表和觸發(fā)器都由擴(kuò)展插件自身管理。已經(jīng)有數(shù)據(jù)的表也能很容易的添加細(xì)粒度的分區(qū)??蛇x的保留策略能夠自動刪除不再需要的分區(qū)。后臺工作進(jìn)程(BGW)能夠自動運(yùn)行分區(qū)維護(hù)定時執(zhí)行任務(wù),而不需要依賴于linux cron等程序從外部進(jìn)行維護(hù)。
2、pg_Pathman
pg_pathman是PostgreSQL Pro公司開源的擴(kuò)展插件,可以為大型分布式數(shù)據(jù)庫提供優(yōu)化的分區(qū)解決方案。使用pg_pathman可以給大型數(shù)據(jù)庫不停機(jī)分區(qū),加速分區(qū)表查詢,動態(tài)管理和增加分區(qū),為分區(qū)增加外部表,操作聯(lián)合分區(qū)等。
八、遷移工具
1、Ora2pg
Ora2Pg是一個用于將Oracle或MySQL數(shù)據(jù)庫遷移到PostgreSQL的免費(fèi)工具。它能連接到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ù)庫的連接而已。
Ora2Pg is a free tool used to migrate an Oracle database to a PostgreSQL compatible schema. It connects your Oracle database, scan it automaticaly and extracts its structure or data, it then generates SQL scripts that you can load into PostgreSQL.
后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注下~
如果你覺得這篇文章對你有幫助, 請小小打賞下.