/pgmoneta

Backup / restore solution for PostgreSQL

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

pgmoneta

pgmoneta is a backup / restore solution for PostgreSQL.

pgmoneta is named after the Roman Goddess of Memory.

Features

  • Full backup
  • Restore
  • Compression (gzip, zstd, lz4)
  • Symlink support
  • Prometheus support
  • Remote management
  • Transport Layer Security (TLS) v1.2+ support
  • Daemon mode
  • User vault

See Getting Started on how to get started with pgmoneta.

See Configuration on how to configure pgmoneta.

Overview

pgmoneta makes use of

  • Process model
  • Shared memory model across processes
  • libev for fast network interactions
  • Atomic operations are used to keep track of state
  • The PostgreSQL command line tools

See Architecture for the architecture of pgmoneta.

Tested platforms

Compiling the source

pgmoneta requires

dnf install git gcc cmake make libev libev-devel openssl openssl-devel systemd systemd-devel zlib zlib-devel libzstd libzstd-devel lz4 lz4-devel python3-docutils

Alternative clang 8+ can be used.

Release build

The following commands will install pgmoneta in the /usr/local hierarchy.

git clone https://github.com/pgmoneta/pgmoneta.git
cd pgmoneta
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

Note, that pgmoneta requires PostgreSQL 10 or later to run as the command line tools are required. These can be installed from the PostgreSQL YUM repository, or from the official distribution repository, if supported, like

dnf install -y postgresql

See RPM for how to build a RPM of pgmoneta.

Debug build

The following commands will create a DEBUG version of pgmoneta.

git clone https://github.com/pgmoneta/pgmoneta.git
cd pgmoneta
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

Remember to set the log_level configuration option to debug5.

Contributing

Contributions to pgmoneta are managed on GitHub.com

Contributions are most welcome !

Please, consult our Code of Conduct policies for interacting in our community.

Consider giving the project a star on GitHub if you find it useful. And, feel free to follow the project on Twitter as well.

License

BSD-3-Clause