重庆思庄Oracle、Redhat认证学习论坛

标题: PostgreSQL工具总结(备份恢复、监控、复制、高可用等) [打印本页]

作者: 郑全    时间: 2021-10-8 12:55
标题: PostgreSQL工具总结(备份恢复、监控、复制、高可用等)
本帖最后由 郑全 于 2021-10-11 16:17 编辑

PostgreSQL的工具大体上可以分为以下几类:
一、备份恢复工具
1. Barman
Barman (Backup and Recovery Manager-备份恢复管理器) 是一个用Python语言实现的PostgreSQL灾难恢复管理工具,它由第二象限公司(2ndQuadrant)开源并维护。它允许我们在关键业务环境中执行远程备份,为数据库管理员在恢复阶段提供有效的数据保证。Barman最优秀的功能包括备份元数据、增量备份、保留策略、远程回复、WAL文件归档压缩和备份。
2. EDB BART
EDB BART(Backup and Recovery Tool -备份恢复工具)是企业级PostgreSQL数据管理策略的关键组件。BART为大规模部署的PostgreSQL服务提供保留策略和基于时间点恢复的实现。BART 2.0版本提供块级别的增量备份。
3. PgBackRest
pgBackRest工具的主要目的是做一款简单可靠的备份恢复工具,以能够无缝的接入到大规模数据库和工作负载中。pgBackRest放弃了其他传统备份工具依赖tar和rsync的套路,它的备份功能都是从软件内部实现的,并采用客户端协议与远程服务器交互。移除了对tar和rsync的依赖,使它能够更好的应对针对特定数据库的备份挑战。客户端远程协议更加灵活,协议可以按照要求限制连接类型以保证备份过程更安全。
二、监控工具

1. PoWA
PoWA(PostgreSQL Workload Analyzer)是PostgreSQL的工作负载分析工具,它收集性能数据并提供实时的图标和图片展示,以帮助我们监控和调优PostgreSQL服务器。它和Oracle AWR或者SQL Server MDW很像。

2. PgCluu
pgCluu是一个PostgreSQL的性能监控和审计工具。它以视图的形式展示您从PostgreSQL数据库集群收集的所有统计信息。它能展示一份完成的数据库集群信息和系统使用率信息。

3. Pgwatch2
Pgwatch2是监控PostgreSQL数据库工具中最易用的一个。它基于Grafana并为PostgreSQL数据库提供开箱即用的监控功能。因为它已经集成到了容器里,所以我们不必担心各种依赖和复杂的安装步骤,几分钟即可将监控搭建完毕,所有的东西都已经提前配置好。我们只需要将数据库连接配置到监控中即可运行正常监控操作。

三、逻辑和基于触发器的复制工具

1. pgLogical
pglogical是采用PostgreSQL扩展插件的形式实现的逻辑复制工具。集成完善,不使用任何触发器和外部程序。该插件作为物理复制的替代者,在有选择性的复制时采用发布/订阅模型,是复制数据的有效方式。

2. Slony-I
Slony-I是PostgreSQL一主多从复制体系的实现,支持级联复制。开发Slony-I的主要目的是为了实现主从复制,该复制体系包含大型数据库系统中对合理配置从系统所要求的所有特征和能力。
Slony-I主要为数据中心和备份站点场景设计,这种场景下通常要求所有节点都是可用的。

3. Bucardo
Bucardo是一个PostgreSQL异步复制系统,允许配置多主多从操作。它是http://Backcountry.com公司的Jon Jensen和Greg Sabino开发的。

四、多主复制工具

BDR
Postgres-BDR(Bi-Directional Replication for PostgreSQL)是世界上第一个开源PostgreSQL多主复制系统,目的是强化生产环境。由第二象限(2ndQuadrant)公司开源并维护,BDR为地理分布集群环境特别设计,使用搞笑的异步逻辑复制方式,支持从2个到48个以上节点在不同地域之间分布。

五、高可用和故障转移工具

1. Repmgr
repmgr是一款开源的、用于PostgreSQL服务器集群复制管理和故障转移的工具。它扩展了PostgreSQL内建的hot-standby能力,可以设置热备份服务器、监控复制、执行管理任务(故障转移、手工切换等)。repmgr是第二象限( 2ndQuadrant)公司开发的。
2. PAF
PAF(PostgreSQL Automatic Failover-自动故障转工具)是OCF资源代理贡献给PostgreSQL的,它的初始目的是在Pacemaker管理和PostgreSQL划清规则,让事情变得简单、文档化和有效。如果您的PostgreSQL集群启用了内部流复制,PAF暴露给Pacemaker当前每一个PostgreSQL实例节点的状态:哪个是主,哪个是从,哪个已停止,哪个正在追复制状态等等。如果主节点失败了,Pacemaker默认首先恢复失败的主节点。如果失败不可恢复,PAF会在从节点中选取一个最好的(与已失败主节点数据最为接近)提升为新的主节点。
3. Patroni
Patroni是一个模板,它使用Python为你提供一个自己订制的,高可用的解决方案,为最大程度的可用性,它的配置信息存储在像ZooKeeper, etcd或者Consul中。如果DBAs,DevOps工程师或者SRE正在寻找一个在数据中心中快速部署高可用PostgreSQL方案,或者其他的用途,Patroni 能提供帮助。
4. Stolon
Stolon是一个cloud native的PostgreSQL高可用管理工具。它之所以是cloud native的是因为它可以在为容器内部的PostgreSQL提供高可用(Kubernetes 集成),而且还支持其他种类的基础设施(比如:cloud IaaS,旧风格的基础设施等)

六、Connection Pooling Tools
1. PgBouncer
PgBouncer是Skype的研发人员于2007年开发的连接池工具。在那以后的很多年里,该项目已经由很多开发者参与改进,但是无论怎么变,其降低PostgreSQL连接代价的角色一直未曾改变。PgBouncer允许PostgreSQL数据库操作比其自身所能提供的最大连接数更大的客户端访问。它本质上只追踪每一个客户端连接,然后基于配置信息,创建一些客户端连接并基于先进先服务的原则服务于客户端访问。

2. PgPool-II
pgpool-II也是连接池,我们通常也习惯称它为pgpool。它是另一个流行的连接代理,它早于PgBouncer一年左右的时间发布(2006年下半年发布)。pgpool的使用范围非常关,所能提供的功能包括:基于查询的复制,连接池功能,负载均衡,并行查询等等,pgpool的一个重要特定就是连接池。如果我们有两台PostgreSQL服务器,我们想使用虚拟IP,这样客户端就不会感受到主数据库切换的影响。有时候,为了在服务器之间移动IP地址,首先需要从主数据库服务器上把IP移除,然后在另外一台上重建,这就回中断活动链接,导致短暂的服务不可用。使用pgpool可以缓存服务器直到另一台服务器提升上来,pgpool会从内部处理故障转移,在应用和客户端的角度,数据库似乎从来没有下过线。

七、表分区工具


1. Pg_Partman
pg_partman是PostgreSQL的一个扩展插件,用于创建和管理基于时间或者基于序列的表分区。也支持多级子分区。子表和触发器都由扩展插件自身管理。已经有数据的表也能很容易的添加细粒度的分区。可选的保留策略能够自动删除不再需要的分区。后台工作进程(BGW)能够自动运行分区维护定时执行任务,而不需要依赖于linux cron等程序从外部进行维护。
2. pg_Pathman
pg_pathman是PostgreSQL Pro公司开源的扩展插件,可以为大型分布式数据库提供优化的分区解决方案。使用pg_pathman可以给大型数据库不停机分区,加速分区表查询,动态管理和增加分区,为分区增加外部表,操作联合分区等。
八、迁移工具

Ora2pg
Ora2Pg是一个用于将Oracle或MySQL数据库迁移到PostgreSQL的免费工具。它能连接到Oracle数据库,然后自动扫描和导出源端的表结构或者数据,转化为PostgreSQL数据库SQL脚本。Ora2Pg可以当作Oracle数据库的反向引擎,用于大型企业级数据库迁移或者Oracle数据复制到PostgreSQL数据库等场景。它易于使用,不需要任何Oracle数据库背景,你所需要做的仅仅是建立与Oracle数据库的连接而已。



作者: 郑全    时间: 2021-10-8 13:43
九、PG日志挖掘工具之WalMiner
   类似于ORACLE的LOGMINER,可以用于
  1.从waL日志中解析出SQL,包括DML和少量DDL
     解析出执行的SQL语句的工具,并能生成对应的undo SQL语句。与传统的logical decode插件相比,walminer不要求logical日志级别且解析方式较为灵活。
  2.数据页挽回
     当数据库被执行了TRUNCATE等不被wal记录的数据清除操作,或者发生磁盘页损坏,可以使用此功能从wal日志中搜索数据,以期尽量挽回数据。





欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2