
翻译自:https://www.crunchydata.com/blog/introducing-pgcompare-the-ultimate-multi-database-data-comparison-tool
在数据管理的高级场景中,确保多数据库系统的数据一致性及精确性都是重中之重。无论是迁移数据、同步系统或进行日常审计,能够进行不同操作系统之间的数据比对至关重要。而pgCompare,一款开源的工具,可用于简化PostgreSQL、Oracle、MySQL以及MSSQL数据库之间的数据比对工作。
pgCompare的主要特性如下:
多数据库支持:pgCompare支持四类主要数据库:PostgreSQL、Oracle、MySQL以及MSSQL。此特性对同时拥有多数据库系统的组织较为友好;
详细的比对报告:pgCompare会生成详细的比对报告,并高亮不同之处。报告中的信息包含缺失的数据,不匹配的数据以及汇总信息,以帮助用户快速定位问题点;
持久化的结果:比对结果存储在PostgreSQL数据库中,用以跟踪历史比对结果、当前状态以及告警信息;
灵活的比对选项:用户可定制化比对选项,例如进行数据转换、排除指定列等。用以满足特定需求;
高性能及可扩展性:pgCompare对比对两端的数据库的性能影响均很小;其灵活的架构可满足不同数据量的比对需求;
pgCompare入门
pgCompare是一款开源工具,且简单易用。其git地址为:https://github.com/CrunchyData/pgCompare ,在该网址,可找到有关其配置、使用的详细文档。鉴于其强大的特性集及其易用性,pgCompare终将成为数据库专家不可或缺的工具集中的一员。
pgCompare安装灵活,可根据实际情况选择安装在数据库服务器或异机。pgCompare会创建一个单独的PostgreSQL数据库来从需进行数据比对的数据库中检索数据。有关比对的详细配置在dc_table中配置。
在编译完Java源码后,第一步是将pgcompare.properities.sample文件拷贝为pgcompare.properities文件,并配置存储库、源端、目标端数据库。配置完成属性文件后,使用pgcomare初始化存储库。java -jar pgcomare.jar --init
在git中提供了示例表,若需要进行测试环境的搭建,可以将HR.EMP表导入源端及目标端数据库中。
在执行比对之前的最后一步,是使用pgCompare存储库注册比对表。可通过执行pgCompare时指定discovery标识后跟表的schema来注册比对表(示例中schema为hr):java -jar pgcomapre.jar --discovery hr
可通过执行以下命令对数据库进行比对:java -jar pgcomare.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选项查看不一致行及其详细信息: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的使用场景
数据迁移
在对数据进行跨平台迁移时,确保每行数据均已准确无误的转换至关重要。例如,Crunchy数据库迁移团队在进行Oracle替换时使用pgCompare进行数据的验证。且在将旧系统退役之前,进行数据一致性验证也很重要。
数据同步
对于同时运行多种数据库的组织,维护系统之间的数据同步也很重要。对于双活的配置需求日益高涨。而不同数据库之间的数据同步,一般使用逻辑同步来实现,而pgCompare可通过周期性检查一致性来弥补逻辑同步可能带来的数据不一致风险。
合规性检查
许多企业要求周期审计以确保数据的精确性及合规性。pgCompare通过提供清晰、详细的比对报告来简化审计过程。审计员和监管者总会要求给出未发生数据偏差的证据,而pgCompare的比对数据信息则可满足此需求。
质量保证
在开发或测试环境中,pgCompare可用作验证在应用程序开发和部署的各个阶段数据是否始终保持一致性状态。如果使用不正确或过时的数据进行测试,则可能会增加产品发布的风险。
为什么pgCompare是一个游戏规则改变者
传统的数据比对大多包含许多需人工介入或可能产生错误且需要大量维护的脚本;还有一些解决方案只是简单的比对行数,而非实际的数据。pgCompare通过提供可靠、自动的解决方案彻底改变了数据比对过程,且减少了发生错误的风险,并节省了大量的时间。
效率:自动化数据比对解约了时间,使得数据库管理员及工程师有更多的时间关注战略性任务;
精确:通过使用先进的算法,pgCompare确保可精确识别差异,增强了数据的完整性;
集成:pgCompare支持多个数据库,且可无缝集成到不同的IT环境中,使其具有成为任何组织的通用工具的潜力;
总之,在一个数据精确性和一致性至关重要的场景中,pgCompare可为跨PostgreSQL、Oracle、MySQL、MSSQL数据库比较数据提供一个可靠、高效且可扩展的方案。无论您是一位数据库管理员、数据库工程师或IT经理,pgCompare都是可用以确保数据一致和可靠的好工具。
pgCompare:拥抱数据比对的未来,变革多数据库环境管理的传统方式!






