当前位置: 首页 > 科技观察

PostgreSQL工具详解:备份恢复、监控、复制、高可用等

时间:2023-03-15 22:58:41 科技观察

概述今天主要介绍一些PostgreSQL工具,大致可以分为以下几类:备份恢复工具监控工具逻辑和触发器基于复制工具Multi-MasterReplicationToolHighAvailabilityandFailoverToolConnectionPoolToolTablePartitionToolMigrationTool1.备份恢复工具1.BarmanBarman(BackupandRecoveryManager-备份恢复管理器)是一款PostgreSQL容灾管理工具,实现于蟒蛇语言。它是开源的,由2ndQuadrant维护。它允许我们在关键任务环境中执行远程备份,为数据库管理员在恢复阶段提供有效的数据保证。Barman的最佳功能包括备份元数据、增量备份、保留策略、远程恢复、WAL文件存档压缩和备份。2.EDBBARTTEDBBART(BackupandRecoveryTool——备份和恢复工具)是一个企业级PostgreSQL数据管理策略的关键组成部分。BART为PostgreSQL服务的大规模部署提供保留策略和时间点恢复实现。BART2.0版提供块级增量备份。3.PgBackRestpgBackRest工具的主要目的是成为一个简单可靠的备份和恢复工具,可以无缝连接到大型数据库和工作负载。pgBackRest摒弃了其他传统备份工具依赖tar和rsync的套路。它的备份功能都是从软件内部实现的,并使用客户端协议与远程服务器进行交互。删除了对tar和rsync的依赖,使其能够更好地处理特定于数据库的备份挑战。客户端远程协议更加灵活,协议可以根据需要限制连接类型,保证备份过程更安全。二、监控工具1、PoWAPoWA(PostgreSQLWorkloadAnalyzer)是PostgreSQL的工作负载分析工具。它收集性能数据并提供实时图标和图片来帮助我们监控和调整PostgreSQL服务器。它与OracleAWR或SQLServerMDW非常相似。2.PgCluupgCluu是一个PostgreSQL性能监控和审计工具。它以视图的形式显示从PostgreSQL数据库集群收集的所有统计信息。它可以显示完整的数据库集群信息和系统利用率信息。3.Pgwatch2Pgwatch2是最易用的PostgreSQL数据库监控工具。它基于Grafana,为PostgreSQL数据库提供开箱即用的监控。因为已经集成到容器中,所以我们不用担心各种依赖和复杂的安装步骤。监控可以在几分钟内设置好,一切都已经提前配置好了。我们只需要将数据库连接配置成监控即可运行正常的监控操作。三、逻辑和基于触发器的复制工具1、pgLogicalpglogical是一个以PostgreSQL扩展插件形式实现的逻辑复制工具。完全集成,无需使用任何触发器和外部程序。作为物理复制的替代方案,该插件使用发布/订阅模型进行选择性复制,这是一种有效的数据复制方式。2.Slony-ISlony-I是PostgreSQL一主多从复制系统的实现,支持级联复制。开发Slony-I的主要目的是实现主从复制,它包含了在大型数据库系统中合理配置从系统所需的所有特性和能力。Slony-I主要针对数据中心和备份站点场景设计,通常要求所有节点都可用。3.BucardoBucardo是一个PostgreSQL异步复制系统,允许配置多主多从操作。它由Backcountry.com的JonJensen和GregSabino开发。4、多主复制工具BDRPostgres-BDR(Bi-DirectionalReplicationforPostgreSQL)是世界上第一个开源的PostgreSQL多主复制系统,旨在加强生产环境。BDR开源并由2ndQuadrant维护,专为地理分布的集群环境而设计。它采用了一种有趣的异步逻辑复制方式,支持从2个到48个甚至更多的节点分布在不同的区域。五、高可用性和故障转移工具1.Repmgrrepmgr是一个用于PostgreSQL服务器集群复制管理和故障转移的开源工具。它扩展了PostgreSQL内置的热备功能,允许您设置热备服务器、监控复制和执行管理任务(故障转移、手动切换等)。repmgr由2ndQuadrant开发。2、PAFPAF(PostgreSQLAutomaticFailover——自动故障转移工具)是由OCF资源代理贡献给PostgreSQL的。其最初目的是在Pacemaker管理和PostgreSQL之间制定规则,使事情变得简单、文档化和有效。如果您的PostgreSQL集群启用了内部流复制,PAF会向Pacemaker公开每个PostgreSQL实例节点的当前状态:哪个是master,哪个是slave,哪个已停止,哪个正在追复制状态等。如果主节点出现故障,Pacemaker默认先恢复故障的主节点。如果故障不可恢复,PAF会选择从节点中最好的(最接近故障主节点数据的)提升为新的主节点。3.PatroniPatroni是一个模板,它使用Python为您提供定制的、高可用性的解决方案。为了获得最大的可用性,它的配置信息存储在ZooKeeper、etcd或Consul之类的东西中。如果DBA、DevOps工程师或SRE正在寻求在数据中心快速部署高可用性PostgreSQL解决方案或其他目的,Patroni可以提供帮助。4.StolonStolon是一个云原生的PostgreSQL高可用管理工具。之所以是云原生,是因为它可以为容器内部的PostgreSQL提供高可用(Kubernetes集成),同时也支持其他类型的基础设施(如:云IaaS、老式基础设施等)6.连接汇集工具1。PgBouncerPgBouncer是Skype开发者于2007年开发的连接池工具,此后的岁月里,该项目得到了众多开发者的改进,但无论如何变化,其降低PostgreSQL连接成本的作用并未改变。PgBouncer允许访问PostgreSQL数据库,该数据库使用比它可以提供的最大连接数更多的客户端运行。它本质上只是跟踪每个客户端连接,然后根据配置信息,创建一些客户端连接,并按照先进先服务的原则为客户端访问服务。2.PgPool-IIPgpool-II也是一个连接池,我们通常称它为pgpool。它是另一个流行的连接代理,比PgBouncer早一年左右(2006年底发布)。pgpool的使用范围非常接近,它可以提供的功能包括:基于查询的复制、连接池功能、负载均衡、并行查询等。pgpool的一个重要特性就是连接池。如果我们有两台PostgreSQL服务器,我们希望使用虚拟IP,这样客户端就不会感受到主数据库切换的影响。有时,为了在服务器之间移动IP地址,首先需要从主数据库服务器中删除IP,然后在另一台服务器上重新创建它,这会中断活动连接并导致临时服务不可用。使用pgpool你可以缓存服务器直到另一个服务器出现,pgpool在内部处理故障转移,从应用程序和客户端的角度来看,数据库似乎永远不会离线。七、表分区工具1、Pg_PartmanPg_partman是PostgreSQL的一个扩展插件,用于创建和管理基于时间或基于顺序的表分区。还支持多级子分区。子表和触发器都由扩展本身管理。已有数据的表也可以轻松添加细粒度分区。可选的保留策略可以自动删除不再需要的分区。后台工作进程(BGW)可以自动运行分区维护并定时执行任务,无需依赖linuxcron等程序进行外部维护。2.pg_Pathmanpg_pathman是PostgreSQLPro开源的扩展插件,可以为大型分布式数据库提供优化的分区方案。使用pg_pathman对大型数据库进行不停机分区、加速分区表查询、动态管理和添加分区、为分区添加外部表、操作联合分区等。8.迁移工具Ora2pgOra2Pg是一款免费的Oracle或MySQL数据库迁移工具PostgreSQL。它可以连接到Oracle数据库,然后自动扫描并导出源表结构或数据,并将其转换成PostgreSQL数据库SQL脚本。Ora2Pg可以作为Oracle数据库的反向引擎,用于大型企业级数据库迁移或Oracle数据复制到PostgreSQL数据库等场景。它简单易用,不需要任何Oracle数据库背景,你需要做的就是与Oracle数据库建立连接。