pgCompare: 多种数据库之间的数据比较工具

十一月 4, 2024

摘要pgCompare 是一个简单的实用工具,旨在简化数据比较的过程,为跨各种数据库平台比较数据提供一种强大的解决方案。

目录

介绍

在不断发展的数据管理世界中,确保多个数据库系统的一致性和准确性至关重要。无论您在迁移数据、同步系统还是执行例行审计,跨不同数据库平台比较数据的能力都相当重要。pgCompare 是一个开源工具,旨在简化和增强 PostgreSQL、Oracle、MySQL 和 SQL Server 数据库之间的数据比较过程。

pgCompare 的主要功能有:

  • 多数据库支持:pgCompare 能够跨四个主要数据库系统(PostgreSQL、Oracle、MySQL 和 SQL Server)进行连接和比较数据,故而能脱颖而出。这种多数据库支持对于管理各种数据库技术的组织相当重要。
  • 比较报告:pgCompare 会生成详细的报告,突出显示数据集之间的差异。这些报告包括有关缺失记录、不匹配值的信息,和摘要统计信息,使用户能够快速识别和解决不一致的问题。
  • 存储的结果:结果存储在一个 PostgreSQL 数据库中,用于跟踪比较历史、当前状态和告警。
  • 灵活的比较选项:用户可以使用各种选项来自定义他们的比较,例如一些转换数据和排除特定列的选项。这种灵活性可以为满足特定的要求,对比较过程进行定制化。
  • 性能和可扩展性:pgCompare 在构建时考虑了性能,可高效处理大型数据集,同时将对源端和目标端系统的影响降至最低。其灵活的架构确保它可以满足小型和大型数据集的需求。

pgCompare 入门

PgCompare 是一个开源工具,任何人都可以免费使用,并且 pgCompare 的入门非常简单。该工具可以从官方 git 仓库下载,用户可以在其中找到详细的文档和教程,以帮助他们配置和运行他们的第一次比较。凭借其强大的功能集和易用性,pgCompare 致力成为一款数据库专业人士不可或缺的工具。

pgCompare 作为应用程序会在您选择的位置运行,可以是本地机器,也可以是更靠近数据存储的远程机器。pgCompare 会创建一个单独的 Postgres 数据库,用于运行查询以从远程数据存储中获取数据。您可在 dc_table 中为比较进行详细的配置。

在编译 Java 源代码后(有关详细信息,请参阅项目 readme 文件),第一步是将 pgcompare.properties.sample 文件复制到 pgcompare.properties,并对存储库、目标数据库和源数据库进行必要的编辑。在属性文件准备好后,使用 pgcompare 初始化存储库。

java -jar pgcompare.jar --init

在 git 仓库中的 database 目录下,有一个示例表。如果还没有表,可以将 HR.EMP 表添加到您选择的源数据库和目标数据库。

执行比较之前的最后一步是,将表注册到 pgCompare 存储库。为此,只需在执行 pgCompare 时,使用 discovery 标志,后跟它应该对其进行检测的模式(本例中为 hr)。

java -jar pgcompare.jar --discovery hr

要比较数据库,您需要运行如下操作:

java -jar pgcompare.jar --batch=0

比较操作的摘要输出,将会在任务结束时显示:

Reconciliation Complete: Table = emp; Equal = 21; Not Equal = 1; Missing Source = 1; Missing Target = 0
Processed 1 tables
Table Summary: Table = emp; Status = out-of-sync; Equal = 21; Not Equal = 1; Missing Source = 1; Missing Target = 0
Run Summary: Elapsed Time (seconds) = 7; Total Rows Processed = 23; Total Out-of-Sync = 2; Through-put (rows/per second) = 3

最后,如果存在有差异的行,要获得每行的详细信息以及进行重新验证,可以使用 check 选项:

java -jar pgcompare.jar --batch=0 --check

在检查执行完后,会显示出有关差异行的详细信息:

Primary Key: {"eid":23}
  Out-of-Sync:  PK = {"eid": 23};  Differences = [{"LAST_NAME":{"source":"Runner","target":"Pace"}}]
Primary Key: {"eid":22}
  Out-of-Sync:  PK = {"eid": 22};  Differences = ["Missing Source"]

pgCompare 应用场景

数据迁移

在将数据从一个数据库平台迁移到另一个数据库平台时,确保所有记录都已准确传输至关重要。例如,在 Oracle 到 Postgres 的迁移过程中,就可以使用此工具验证数据。在停用旧系统之前,创建一个验证数据一致性的数据验证任务也很有用。

数据同步

对于同时运行多个数据库的组织,保持这些系统之间的同步相当重要。对于双活配置的需求持续增长。这些解决方案使用的逻辑复制会带来风险。为了控制这种风险,引入了补偿控制,pgCompare 有助于定期检查和同步不同数据库之间的数据。

合规遵从性

许多行业都需要定期审计,以确保数据准确性和合规性。pgCompare 能提供清晰详细的比较报告,简化了审核的过程。审计师和监管机构始终需要证据证明没有出现数据差异。pgCompare 的输出对于满足此要求非常有用。

质量保证

在开发和测试环境中,pgCompare 可用于验证数据在应用程序开发和部署的各个阶段是否保持一致。如果使用了不正确或过时的数据执行测试,则可能会增加生产版本的风险。

pgCompare 的亮点特性

传统的数据比较方法,通常涉及容易出错且需要大量维护的人工操作流程或脚本。许多解决方案依赖于比较行数,这并不能证明数据确实相同。pgCompare 通过提供可靠的自动化解决方案,来降低错误风险并节省宝贵的时间,从而彻底改变了这一过程。

  • 效率:自动化数据比较,减少了手动检查所需的时间和精力,使数据库管理员和数据工程师能够专注于更有意义的任务。
  • 准确性:通过利用高级算法,pgCompare 可确保精确识别差异,从而提高数据完整性。
  • 集成:pgCompare 支持多个数据库,可无缝集成到不同的 IT 环境中,使其成为适用于任何组织的多功能工具。

在数据准确性和一致性至关重要的世界中,pgCompare 提供了一种可靠、高效且可扩展的解决方案,用于比较 PostgreSQL、Oracle、MySQL 和 SQL Server 数据库中的数据。无论您是数据库管理员、数据工程师还是 IT 经理,pgCompare 都是您需要的工具,可确保数据保持一致性和可靠性。

使用 pgCompare 拥抱数据比较的未来,并转变您管理多数据库环境的方式。

了解更多

pgCompare 项目