Run a few sanity checks on your logical PostgreSQL replica to make sure its the same as the primary.
Project description
pg-replica-auditor
Features
Assumptions
These tests assume that id
and updated_at
columns exist and have indexes for efficient querying and that the table exists on both databases.
Row comparison
Runs row comparisons between primary and replica using two methods:
- select 8128 rows (or number of rows given to
--rows
) at random betweenMIN(id)
andMAX(id)
- select all rows between
MAX(id)
andMAX(id) - 1000
.
Replica lag
Checks for "replica lag" by comparing MAX(updated_at)
on the given table on both databases.
Requirements
- Python 3
- Postgres development files (required by psycopg2). On Mac OS, use
brew install postgresql
. On Ubuntu, installlibpq-dev
.
Installation
Development
Using virtualenv, pip install -r requirements.txt
Production
Using Pypi, pip install pgreplicaauditor
.
Usage
This script requires three arguments:
--primary
, any acceptable Postgres connection string (incl. DSN),--replica
, same as--primary
but for the replica database,--table
, the table to check.
Optionally, if you want to see which queries it runs, you can set the --debug
option. If you want to change the size of the random sample for the row comparison test, you can pass --rows=<any number here>
.
Example:
$ pgreplicaauditor --primary=postgres://primary-db.amazonaws.com:5432/my_db --replica=postgres://replica-db.amazonaws.com:5432/my_db --table=immutable_items
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pg_replica_auditor-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 599dc928aabcaabbfe6f927e885b30a262907140e04f02951003490d58f38000 |
|
MD5 | b534afae78042e954aa77fe689fcb2dc |
|
BLAKE2b-256 | 0ebbc7868e7a5b5c31d657fccc22ffedbab774ebac4015e777a3ca25e5876663 |