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.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a65a8093cd3d81ff319b9ef338dfa62b4789683dc728ac27c475d8426f0dfb2 |
|
MD5 | 78853c1215f4e7c66b17dd04b096e376 |
|
BLAKE2b-256 | efe95c3a75fcd577005672993fb39caf6c2dce024aed0358390cfc70753cea26 |