pgBackRest

Автор: talifa, 8 июня, 2023

-------  install
wget -q -O - \
      https://github.com/pgbackrest/pgbackrest/archive/release/2.45.tar.gz | \
      tar zx -C /build
      
sudo apt-get install make gcc libpq-dev libssl-dev libxml2-dev pkg-config \
      liblz4-dev libzstd-dev libbz2-dev libz-dev libyaml-dev
      
cd /build/pgbackrest-release-2.45/src && ./configure && make

sudo apt-get install postgresql-client libxml2
sudo scp build:/build/pgbackrest-release-2.45/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
sudo -u postgres pgbackrest

--------  start
sudo -u postgres /usr/lib/postgresql/12/bin/initdb \
      -D /var/lib/postgresql/12/demo -k -A peer
sudo pg_createcluster 12 demo

/etc/pgbackrest/pgbackrest.conf ⇒ Configure the PostgreSQL cluster data directory
[demo]
pg1-path=/var/lib/postgresql/12/demo

sudo -u postgres bash -c ' \
      export PGBACKREST_LOG_PATH=/path/set/by/env && \
      pgbackrest --log-level-console=error help backup log-path'
      
------------- Create the Repository

sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown postgres:postgres /var/lib/pgbackrest

----------- Configure Archiving
archive_command = 'pgbackrest --stanza=demo archive-push %p'
archive_mode = on
max_wal_senders = 3
wal_level = replica

sudo pg_ctlcluster 12 demo restart

--------------Create the Stanza
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create

---------- Check
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check

----------- Backup
sudo -u postgres pgbackrest --stanza=demo \
      --log-level-console=info backup
      
----------  info
sudo -u postgres pgbackrest info

----------  restore
sudo pg_ctlcluster 12 demo stop
sudo -u postgres rm /var/lib/postgresql/12/demo/global/pg_control
sudo pg_ctlcluster 12 demo start
        pg-primary ⇒ Remove old files from demo cluster
sudo -u postgres find /var/lib/postgresql/12/demo -mindepth 1 -delete
        pg-primary ⇒ Restore the demo cluster and start PostgreSQL
sudo -u postgres pgbackrest --stanza=demo restore
sudo pg_ctlcluster 12 demo start

---------  monitoring

sudo -u postgres cat \
      /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql
      
      pg-primary ⇒ Query last successful backup time and archived WAL
sudo -u postgres cat \
      /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql