Ptrack is a fast block-level incremental backup engine for PostgreSQL. Currently
ptrack codebase is split approximately 50%/50% between PostgreSQL core patch and extension. All public SQL API methods are placed in the
ptrack extension, while the main engine is still in core.
- Get latest PostgreSQL sources:
git clone https://github.com/postgres/postgres.git -b REL_12_STABLE && cd postgres
- Apply PostgreSQL core patch:
git apply ptrack/patches/ptrack-2.0-core.diff
Compile and install PostgreSQL
echo 'ptrack_map_size = 64' >> postgres_data/postgresql.conf
- Compile and install
USE_PGXS=1 make -C /path/to/ptrack/ install
- Run PostgreSQL and create
CREATE EXTENSION ptrack;
Public SQL API
- ptrack_version() --- returns ptrack version string (2.0 currently).
- pg_ptrack_get_pagemapset('LSN') --- returns a set of changed data files with bitmaps of changed blocks since specified LSN.
- pg_ptrack_control_lsn() --- returns LSN of the last ptrack map initialization.
- pg_ptrack_get_block --- returns a requested block of relation.
The main goal currently is to move as much
ptrack functionality into the extension as possible and leave only certain requred hooks as core patch.