对逻辑PostgreSQL副本运行一些健全性检查,以确保它与主副本相同。
pg-replica-auditor的Python项目详细描述
pg副本审核员
比较PostgreSQL逻辑副本与其主副本的工具。它可以帮助检测数据不一致。在
特点
假设
查询{and{cd2>中同时存在于
行比较
使用两种方法在主和副本之间运行行比较:
- 在
MIN(id)
和MAX(id)
之间随机选择8128行(或给--rows
的行数) - 选择最后1000行。在
副本延迟
通过比较两个数据库上给定表上的MAX(updated_at)
来检查“副本延迟”。在
最大值
检查复制副本和主副本上的最小值id
和最大值id
是否匹配。由于副本延迟,它们可能会偏移一点。在
批量1000和
取id
列的和(以1000为单位),并在数据库之间进行比较。这假设批量检索行比随机检索更容易,运行速度比行比较快,并且可以扫描更多行。在
计算所有行数
使用 遍历步长为 使用virtualenv, 使用Pypi, 此脚本需要三个参数: 可选参数: 示例: 标签:COUNT(lag_column)
对所有行进行计数,以确保副本和主服务器上的行计数都匹配。非常慢,因为它必须进行完全扫描(索引或表)。{{cd2>缺少连续记录
MAX(id)
*--step-size=0.01
的表。假设是,如果记录丢失,它们将大量丢失,并分组在一起。在要求
brew install postgresql
。在Ubuntu上,安装libpq-dev
。在安装
开发
pip install -r requirements.txt
生产
pip install pg-replica-auditor
。在使用
--primary
,任何可接受的Postgres连接字符串(包括DSN)--replica
,与--primary
相同,但对于副本数据库--exclude-tables
,从扫描中排除逗号分隔的表--table
,只扫描这个表--debug
,将打印调试信息--rows
,将在行比较检查中扫描这么多行--lag-column
,将使用此列进行副本延迟检查--show-skipped
,将打印最后1000次检查中跳过的行--count-before
,将计算在此时间戳之前创建/更新的表中的所有行--step-size
,将减小丢失顺序记录搜索的步长。在$ pgreplicaauditor --primary=postgres://primary-db.amazonaws.com:5432/my_db --replica=postgres://replica-db.amazonaws.com:5432/my_db --table=immutable_items --lag-column=created_at --count-before="2020-04-06"
推荐PyPI第三方库