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 Distributions
Hashes for pg_replica_auditor-0.1.3-py3.7.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | df88a45e243d826bd868dc3e3b2759ed11bfd59e12c6d641e2908fc69de99cdd |
|
MD5 | 7373eb1688e2324419bcffaeffb41303 |
|
BLAKE2b-256 | 2e05c2298e1c6d06910db914730e15a1d285baa98e6de67aa0fda10f57cb83de |
Hashes for pg_replica_auditor-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59e619b0ba01656efba7255af6734fc43072adc33b226581b36e1b187c9c0160 |
|
MD5 | c9b303285b5fa17c40430f1cca9fde4f |
|
BLAKE2b-256 | 54d6fa6cf9688eceadef092dcff5aa6031d03f50359dbcd86fb96e4557d3ee7d |