ื’ื™ื‘ื•ื™ื™ื ืžืฆื˜ื‘ืจื™ื postgresql ืขื pgrestrest - ืงื•ืจืก ืœืœื•ื—ื ืฆืขื™ืจ ืžื”ืžืคืชื—

ื›ืชื‘ ื•ื™ืชื•ืจ

ืื ื™ ืžืคืชื—. ืื ื™ ื›ื•ืชื‘ ืงื•ื“ ื•ืžืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื›ืžืฉืชืžืฉ ื‘ืœื‘ื“. ื‘ืฉื•ื ืื•ืคืŸ ืื ื™ ืœื ืžืชื™ื™ืžืจ ืœื”ื™ื•ืช ืžื ื”ืœ ืžืขืจื›ืช, ื•ืขื•ื“ ืคื—ื•ืช ืžื–ื” ืœ-dba. ืื‘ืœโ€ฆ

ื›ืš ืงืจื” ืฉื”ื™ื™ืชื™ ืฆืจื™ืš ืœืืจื’ืŸ ื’ื™ื‘ื•ื™ ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื postgresql. ื‘ืœื™ ืขื ื ื™ื - ืคืฉื•ื˜ ื”ืฉืชืžืฉ ื‘-SSH ื•ื•ื“ื ืฉื”ื›ืœ ืขื•ื‘ื“ ื‘ืœื™ ืœื‘ืงืฉ ื›ืกืฃ. ืžื” ืขื•ืฉื™ื ื‘ืžืงืจื™ื ื›ืืœื”? ื–ื” ื ื›ื•ืŸ, ืื ื—ื ื• ื“ื•ื—ืคื™ื ืืช pgdump ืœืชื•ืš cron, ืžื’ื‘ื™ื ื”ื›ืœ ืœืืจื›ื™ื•ืŸ ื›ืœ ื™ื•ื, ื•ืื ืื ื—ื ื• ืื‘ื•ื“ื™ื ืœื’ืžืจื™, ืื ื—ื ื• ืฉื•ืœื—ื™ื ืืช ื”ืืจื›ื™ื•ืŸ ื”ื–ื” ืœืžืงื•ื ืจื—ื•ืง.

ื”ืคืขื ื”ืงื•ืฉื™ ื”ื™ื” ืฉืœืคื™ ื”ืชื•ื›ื ื™ื•ืช, ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื”ื™ื” ืืžื•ืจ ืœื’ื“ื•ืœ ื‘ื›-+- 100 ืžื’ื” ืœื™ื•ื. ื›ืžื•ื‘ืŸ, ืื—ืจื™ ื›ืžื” ืฉื‘ื•ืขื•ืช ื”ืจืฆื•ืŸ ืœื’ื‘ื•ืช ื”ื›ืœ ืขื pgdump ื™ื™ืขืœื. ื–ื” ื”ืžืงื•ื ืฉื‘ื• ื’ื™ื‘ื•ื™ื™ื ืžืฆื˜ื‘ืจื™ื ื‘ืื™ื ืœื”ืฆืœื”.

ืžืขื ื™ื™ืŸ? ื‘ืจื•ื›ื™ื ื”ื‘ืื™ื ืœื—ืชื•ืœ.

ื’ื™ื‘ื•ื™ ืžืฆื˜ื‘ืจ ื”ื•ื ืกื•ื’ ืฉืœ ื’ื™ื‘ื•ื™ ื›ืืฉืจ ืœื ื›ืœ ืงื‘ืฆื™ ื”ืžืงื•ืจ ืžื•ืขืชืงื™ื, ืืœื ืจืง ื—ื“ืฉื™ื ื•ืืœื” ื”ืฉืชื ื• ืžืื– ื™ืฆื™ืจืช ื”ืขื•ืชืง ื”ืงื•ื“ื.

ื›ืžื• ื›ืœ ืžืคืชื— ืฉืžืžืฉ ืœื ื”ื™ื” ืžื•ื›ืŸ (ื‘ืื•ืชื” ืชืงื•ืคื”) ืœื”ื‘ื™ืŸ ืืช ื”ืžื•ืจื›ื‘ื•ื™ื•ืช ืฉืœ postgres, ืจืฆื™ืชื™ ืœืžืฆื•ื ืืช ื”ื›ืคืชื•ืจ ื”ื™ืจื•ืง. ื•ื‘ื›ืŸ, ืืชื” ื™ื•ื“ืข, ื›ืžื• ื‘-AWS, DigitalOcean: ืœื—ืฆืช ืขืœ ื›ืคืชื•ืจ ืื—ื“ - ืงื™ื‘ืœืช ืฉื›ืคื•ืœ, ืœื—ืฆืช ืขืœ ื”ืฉื ื™ - ื”ื’ื“ืจืช ื’ื™ื‘ื•ื™ื™ื, ื”ืฉืœื™ืฉื™ - ื’ืœื’ืœืช ื”ื›ืœ ื›ืžื” ืฉืขื•ืช ืื—ื•ืจื”. ืœื ืžืฆืืชื™ ื›ืคืชื•ืจ ืื• ื›ืœื™ GUI ื™ืคื”. ืื ืืชื ืžื›ื™ืจื™ื ืื—ื“ ื›ื–ื” (ื—ื™ื ื ืื• ื–ื•ืœ), ื›ืชื‘ื• ืขืœื™ื• ื‘ืชื’ื•ื‘ื•ืช.

ืœืื—ืจ ื—ื™ืคื•ืฉ ื‘ื’ื•ื’ืœ ืžืฆืืชื™ ืฉื ื™ ื›ืœื™ื pgbarman ะธ ืžืฉืขื ืช pg. ืคืฉื•ื˜ ืœื ื”ืฆืœื—ืชื™ ืขื ื”ืจืืฉื•ืŸ (ืชื™ืขื•ื“ ื“ืœื™ืœ ืžืื•ื“, ื ื™ืกื™ืชื™ ืœื”ื‘ื™ืŸ ื”ื›ืœ ืœืคื™ ืžื“ืจื™ื›ื™ื ื™ืฉื ื™ื), ืื‘ืœ ืขื ื”ืฉื ื™ ื”ืชื™ืขื•ื“ ื”ืชื‘ืจืจ ื›ืจืื•ื™, ืื‘ืœ ืœื ื—ืฃ ืžืคื’ืžื™ื. ื›ื“ื™ ืœืคืฉื˜ ืืช ืขื‘ื•ื“ืชื ืฉืœ ืžื™ ืฉืขื•ืžื“ ื‘ืคื ื™ ืžืฉื™ืžื” ื“ื•ืžื”, ื ื›ืชื‘ ืžืืžืจ ื–ื”.

ืœืื—ืจ ืงืจื™ืืช ืžืืžืจ ื–ื”, ืชืœืžื“ื• ื›ื™ืฆื“ ืœื‘ืฆืข ื’ื™ื‘ื•ื™ื™ื ืžืฆื˜ื‘ืจื™ื, ืœืฉืžื•ืจ ืื•ืชื ื‘ืฉืจืช ืžืจื•ื—ืง (ืžืื’ืจ ืขื ื’ื™ื‘ื•ื™ื™ื) ื•ืœืฉื—ื–ืจ ืื•ืชื ื‘ืžืงืจื” ืฉืœ ืื•ื‘ื“ืŸ ื ืชื•ื ื™ื ืื• ื‘ืขื™ื•ืช ืื—ืจื•ืช ื‘ืฉืจืช ื”ืจืืฉื™.

ื”ื“ืจื›ื”

ื›ื“ื™ ืœืฉื—ื–ืจ ืืช ื”ืžื“ืจื™ืš ืชื–ื“ืงืง ืœืฉื ื™ VPS. ื”ืจืืฉื•ืŸ ื™ื”ื™ื” ื”ืื—ืกื•ืŸ (ื”ืžืื’ืจ ืขืœื™ื• ื™ืื•ื—ืกื ื• ื”ื’ื™ื‘ื•ื™ื™ื), ื•ื”ืฉื ื™, ืœืžืขืฉื”, ื”ืฉืจืช ืขืฆืžื• ืขื postgres (ื‘ืžืงืจื” ืฉืœื™, ื’ืจืกื” 11 ืฉืœ postgres).

ื”ื”ื ื—ื” ื”ื™ื ืฉื‘ืฉืจืช ืขื postgres ื™ืฉ ืœืš root, sudo user, postgres user ื•ืžื•ืชืงืŸ postgres ืขืฆืžื• (ืžืฉืชืžืฉ postgres ื ื•ืฆืจ ืื•ื˜ื•ืžื˜ื™ืช ื‘ืขืช ื”ืชืงื ืช postgresql), ื•ื‘ืฉืจืช ื”ืžืื’ืจ ื™ืฉ root ื•-sudo user (ื‘ืžื“ืจื™ืš ื™ืฉืžืฉ ืฉื ื”ืžืฉืชืžืฉ pgbackrest).

ื›ื“ื™ ืฉื™ื”ื™ื• ืœืš ืคื—ื•ืช ื‘ืขื™ื•ืช ื‘ืฉื—ื–ื•ืจ ื”ื”ื•ืจืื•ืช, ืื ื™ ื›ื•ืชื‘ ื‘ืื•ืชื™ื•ืช ื ื˜ื•ื™ ืื™ืคื”, ืขื ืื™ื–ื” ืžืฉืชืžืฉ ื•ืขื ืื™ืœื• ื–ื›ื•ื™ื•ืช ื‘ื™ืฆืขืชื™ ืืช ื”ืคืงื•ื“ื” ืชื•ืš ื›ื“ื™ ื›ืชื™ื‘ื” ื•ื‘ื“ื™ืงื” ืฉืœ ื”ืžืืžืจ.

ื”ืชืงื ืช ืžืฉืขื ืช pg

ืžืื’ืจ (ืžืฉืชืžืฉ pgrestrest):

1. ื”ื•ืจื“ ืืช ื”ืืจื›ื™ื•ืŸ ืž-pgbackrest ื•ื”ืขื‘ื™ืจ ืืช ืชื•ื›ื ื• ืœืชื™ืงื™ื” /build:

sudo mkdir /build
sudo wget -q -O - 
       https://github.com/pgbackrest/pgbackrest/archive/release/2.18.tar.gz | 
       sudo tar zx -C /build

2. ื”ืชืงืŸ ืืช ื”ืชืœื•ืช ื”ื“ืจื•ืฉื” ืœื”ืจื›ื‘ื”:

sudo apt-get update
sudo apt-get install build-essential libssl-dev libxml2-dev libperl-dev zlib1g-dev 
       libpq-dev

3. ื”ืจื›ื‘ืช ืžืฉืขื ืช pg:

cd /build/pgbackrest-release-2.18/src && sudo ./configure
sudo make -s -C /build/pgbackrest-release-2.18/src

4. ื”ืขืชืง ืืช ืงื•ื‘ืฅ ื”ื”ืคืขืœื” ืœืกืคืจื™ื™ืช /usr/bin:

sudo cp /build/pgbackrest-release-2.18/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

5. ืžืฉืขื ืช Pgback ื“ื•ืจืฉืช perl. ืœื”ืชืงื™ืŸ:

sudo apt-get install perl

6. ืฆื•ืจ ืกืคืจื™ื•ืช ืขื‘ื•ืจ ื™ื•ืžื ื™ื, ืชืŸ ืœื”ื ื–ื›ื•ื™ื•ืช ืžืกื•ื™ืžื•ืช:

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /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 pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf

7. ื‘ื“ื•ืง:

pgbackrest version

ืฉืจืช Postgres (ืžืฉืชืžืฉ sudo ืื• ืฉื•ืจืฉ):

ืชื”ืœื™ืš ื”ืชืงื ืช pgbackrest ืขืœ ืฉืจืช ืขื postgres ื“ื•ืžื” ืœืชื”ืœื™ืš ื”ื”ืชืงื ื” ื‘ืžืื’ืจ (ื›ืŸ, ื™ืฉ ืœื”ืชืงื™ืŸ ืืช pgbackrest ื‘ืฉื ื™ ื”ืฉืจืชื™ื), ืื‘ืœ ื‘ืคืกืงื” ื”ืฉื™ืฉื™ืช ื”ืคืงื•ื“ื” ื”ืฉื ื™ื™ื” ื•ื”ืื—ืจื•ื ื”:

sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf

ืœื”ื—ืœื™ืฃ ื‘:

sudo chown postgres:postgres /var/log/pgbackrest
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

ื”ื’ื“ืจืช ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ืŸ ืฉืจืชื™ื ื‘ืืžืฆืขื•ืช SSH ืœืœื ืกื™ืกืžื”

ืขืœ ืžื ืช ืฉ-pgbackrest ื™ืคืขืœ ื›ื”ืœื›ื”, ื™ืฉ ืฆื•ืจืš ืœื”ื’ื“ื™ืจ ืืช ื”ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ืŸ ืฉืจืช postgres ืœืžืื’ืจ ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ ื”ืžืคืชื—.

ืžืื’ืจ (ืžืฉืชืžืฉ pgrestrest):

ืฆื•ืจ ื–ื•ื’ ืžืคืชื—ื•ืช:

mkdir -m 750 /home/pgbackrest/.ssh
ssh-keygen -f /home/pgbackrest/.ssh/id_rsa 
       -t rsa -b 4096 -N ""

ืื–ื”ืจื”! ืื ื• ืžืคืขื™ืœื™ื ืืช ื”ืคืงื•ื“ื•ืช ืœืขื™ืœ ืœืœื sudo.

ืฉืจืช Postgres (ืžืฉืชืžืฉ sudo ืื• ืฉื•ืจืฉ):

ืฆื•ืจ ื–ื•ื’ ืžืคืชื—ื•ืช:

sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa 
       -t rsa -b 4096 -N ""

ืžืื’ืจ (ืžืฉืชืžืฉ sudo):

ื”ืขืชืง ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ืฉืจืช postgres ืœืฉืจืช ื”ืžืื’ืจ:

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && 
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && 
       sudo ssh root@<postgres_server_ip> cat /var/lib/postgresql/.ssh/id_rsa.pub) | 
       sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys

ื‘ืฉืœื‘ ื–ื” ืชืชื‘ืงืฉื• ืœื”ื–ื™ืŸ ืืช ื”ืกื™ืกืžื” ืขื‘ื•ืจ ืžืฉืชืžืฉ ื”ืฉื•ืจืฉ. ืืชื” ืฆืจื™ืš ืœื”ื–ื™ืŸ ืืช ื”ืกื™ืกืžื” ืฉืœ ืžืฉืชืžืฉ ื”ืฉื•ืจืฉ ืฉืœ ืฉืจืช postgres!

ืฉืจืช Postgres (ืžืฉืชืžืฉ sudo):

ื”ืขืชืง ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ื”ืžืื’ืจ ืœืฉืจืช ืขื postgres:

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && 
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && 
       sudo ssh root@<repository_server_ip> cat /home/pgbackrest/.ssh/id_rsa.pub) | 
       sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys

ื‘ืฉืœื‘ ื–ื” ืชืชื‘ืงืฉื• ืœื”ื–ื™ืŸ ืืช ื”ืกื™ืกืžื” ืขื‘ื•ืจ ืžืฉืชืžืฉ ื”ืฉื•ืจืฉ. ืืชื” ืฆืจื™ืš ืœื”ื–ื™ืŸ ื‘ื“ื™ื•ืง ืืช ื”ืกื™ืกืžื” ืฉืœ ืžืฉืชืžืฉ ื”ืฉื•ืจืฉ ืฉืœ ื”ืžืื’ืจ!

ืื ื• ื‘ื•ื“ืงื™ื:

ืžืื’ืจ (ืžืฉืชืžืฉ ืฉื•ืจืฉ, ืขืœ ื˜ื”ืจืช ื”ื ื™ืกื•ื™):

sudo -u pgbackrest ssh postgres@<postgres_server_ip>

ืฉืจืช Postgres (ืžืฉืชืžืฉ ืฉื•ืจืฉ, ืขืœ ื˜ื”ืจืช ื”ื ื™ืกื•ื™):

sudo -u postgres ssh pgbackrest@<repository_server_ip>

ืื ื• ื“ื•ืื’ื™ื ืฉื ืงื‘ืœ ื’ื™ืฉื” ืœืœื ื‘ืขื™ื•ืช.

ื”ืงืžืช ืฉืจืช postgres

ืฉืจืช Postgres (ืžืฉืชืžืฉ sudo ืื• ืฉื•ืจืฉ):

1. ื‘ื•ืื• ื ืืคืฉืจ ื“ืคื™ืงื” ืขืœ ืฉืจืช postgres ืžื›ืชื•ื‘ื•ืช IP ื—ื™ืฆื•ื ื™ื•ืช. ืœืฉื ื›ืš, ืขืจื•ืš ืืช ื”ืงื•ื‘ืฅ postgresql.conf (ืžืžื•ืงื ื‘ืชื™ืงื™ื™ื” /etc/postgresql/11/main), ื”ื•ืกืคืช ื”ืฉื•ืจื” ืืœื™ื”:

listen_addresses = '*'

ืื ืฉื•ืจื” ื›ื–ื• ื›ื‘ืจ ืงื™ื™ืžืช, ืื• ื‘ื˜ืœ ืืช ื”ื”ืขืจื” ืื• ื”ื’ื“ืจ ืืช ืขืจืš ื”ืคืจืžื˜ืจ ื‘ืชื•ืจ '*'.

ื‘ืงื•ื‘ืฅ pg_hba.conf (ืžืžื•ืงื ื’ื ื‘ืชื™ืงื™ื™ื” /etc/postgresql/11/main) ื”ื•ืกืฃ ืืช ื”ืฉื•ืจื•ืช ื”ื‘ืื•ืช:

hostssl  all  all  0.0.0.0/0  md5
host  all  all  0.0.0.0/0  md5

ืฉื:

hostssl/host - ะฟะพะดะบะปัŽั‡ะฐะตะผัั ั‡ะตั€ะตะท SSL (ะธะปะธ ะฝะตั‚)
all - ั€ะฐะทั€ะตัˆะฐะตะผ ะฟะพะดะบะปัŽั‡ะตะฝะธะต ะบะพ ะฒัะตะผ ะฑะฐะทะฐะผ
all - ะธะผั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั, ะบะพั‚ะพั€ะพะผัƒ ั€ะฐะทั€ะตัˆะฐะตะผ ะฟะพะดะบะปัŽั‡ะตะฝะธะต (ะฒัะตะผ)
0.0.0.0/0 - ะผะฐัะบะฐ ัะตั‚ะธ ั ะบะพั‚ะพั€ะพะน ะผะพะถะฝะพ ะฟะพะดะบะปัŽั‡ะฐั‚ัŒัั
md5 - ัะฟะพัะพะฑ ัˆะธั„ั€ะพะฒะฐะฝะธั ะฟะฐั€ะพะปั

2. ื‘ื•ืื• ื ืขืฉื” ืืช ื”ื”ื’ื“ืจื•ืช ื”ื“ืจื•ืฉื•ืช ื‘ postgresql.conf (ื–ื” ื‘ืชื™ืงื™ื™ื” /etc/postgresql/11/main) ื›ื“ื™ ืฉ-pgrest ืชืขื‘ื•ื“:

archive_command = 'pgbackrest --stanza=main archive-push %p' # ะ“ะดะต main - ะฝะฐะทะฒะฐะฝะธะต ะบะปะฐัั‚ะตั€ะฐ. ะŸั€ะธ ัƒัั‚ะฐะฝะพะฒะบะต postgres ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ัะพะทะดะฐะตั‚ ะบะปะฐัั‚ะตั€ main.
archive_mode = on
max_wal_senders = 3
wal_level = replica

3. ื‘ื•ืื• ื ืขืฉื” ืืช ื”ื”ื’ื“ืจื•ืช ื”ื“ืจื•ืฉื•ืช ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืฉืœ pgbackrest (/etc/pgbackrest/pgbackrest.conf):

[main]
pg1-path=/var/lib/postgresql/11/main

[global]
log-level-file=detail
repo1-host=<repository_server_ip>

4. ื˜ืขืŸ ืžื—ื“ืฉ ืืช postgresql:

sudo service postgresql restart

ื”ื’ื“ืจืช ืฉืจืช ืžืื’ืจ

ืžืื’ืจ (ืžืฉืชืžืฉ pgbackrest):

ื‘ื•ืื• ื ื‘ืฆืข ืืช ื”ื”ื’ื“ืจื•ืช ื”ื“ืจื•ืฉื•ืช ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืžืฉืขื ืช pg
(/etc/pgbackrest/pgbackrest.conf):

[main]
pg1-host=<postgres_server_ip>
pg1-path=/var/lib/postgresql/11/main

[global]
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2 # ะŸะฐั€ะฐะผะตั‚ั€, ัƒะบะฐะทั‹ะฒะฐัŽั‰ะธะน ัะบะพะปัŒะบะพ ั…ั€ะฐะฝะธั‚ัŒ ะฟะพะปะฝั‹ั… ะฑัะบะฐะฟะพะฒ. ะข.ะต. ะตัะปะธ ัƒ ะฒะฐั ะตัั‚ัŒ ะดะฒะฐ ะฟะพะปะฝั‹ั… ะฑัะบะฐะฟะฐ ะธ ะฒั‹ ัะพะทะดะฐะตั‚ะต ั‚ั€ะตั‚ะธะน, ั‚ะพ ัะฐะผั‹ะน ัั‚ะฐั€ั‹ะน ะฑัะบะฐะฟ ะฑัƒะดะตั‚ ัƒะดะฐะปะตะฝ. ะœะพะถะฝะพ ะฟั€ะพะธะทะฝะพัะธั‚ัŒ ะบะฐะบ "ั…ั€ะฐะฝะธั‚ัŒ ะฝะต ะฑะพะปะตะต ะดะฒัƒั… ะฑัะบะฐะฟะพะฒ" - ะฟะพ ะฐะฝะฐะปะพะณะธะธ ั ั€ะพั‚ะฐั†ะธัะผะธ ะปะพะณะพะฒ. ะกะฟะฐัะธะฑะพ @Aytuar ะทะฐ ะธัะฟั€ะฐะฒะปะตะฝะธะต ะพัˆะธะฑะบะธ.
start-fast=y # ะะฐั‡ะธะฝะฐะตั‚ ั€ะตะทะตั€ะฒะฝะพะต ะบะพะฟะธั€ะพะฒะฐะฝะธะต ะฝะตะผะตะดะปะตะฝะฝะพ, ะฟั€ะพั‡ะธั‚ะฐั‚ัŒ ะฟั€ะพ ัั‚ะพั‚ ะฟะฐั€ะฐะผะตั‚ั€ ะผะพะถะฝะพ ั‚ัƒั‚ https://postgrespro.ru/docs/postgrespro/9.5/continuous-archiving

ื™ืฆื™ืจืช ืžืื’ืจ

ืžืื’ืจ (ืžืฉืชืžืฉ pgbackrest):

ืฆื•ืจ ืื—ืกื•ืŸ ื—ื“ืฉ ืขื‘ื•ืจ ื”ืืฉื›ื•ืœ ืจืืฉื™:

sudo mkdir -m 770 /var/lib/pgbackrest
sudo chown -R pgbackrest /var/lib/pgbackrest/
sudo -u pgbackrest pgbackrest --stanza=main stanza-create

ะŸั€ะพะฒะตั€ะบะฐ

ืฉืจืช Postgres (ืžืฉืชืžืฉ sudo ืื• ืฉื•ืจืฉ):

ืื ื—ื ื• ื‘ื•ื“ืงื™ื ื‘ืฉืจืช postgres:

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

ืžืื’ืจ (ืžืฉืชืžืฉ pgbackrest):

ืื ื• ื‘ื•ื“ืงื™ื ื‘ืฉืจืช ื”ืžืื’ืจ:

sudo -u pgbackrest pgbackrest --stanza=main --log-level-console=info check

ืื ื• ืžื•ื•ื“ืื™ื ืฉื‘ืคืœื˜ ื ืจืื” ืืช ื”ืฉื•ืจื” "ื‘ื“ื•ืง ืกื•ืฃ ืคืงื•ื“ื”: ื”ื•ืฉืœื ื‘ื”ืฆืœื—ื”".

ืขื™ื™ืฃ? ื ืขื‘ื•ืจ ืœื—ืœืง ื”ืžืขื ื™ื™ืŸ ื‘ื™ื•ืชืจ.

ื‘ื™ืฆื•ืข ื’ื™ื‘ื•ื™

ืžืื’ืจ (ืžืฉืชืžืฉ pgbackrest):

1. ื‘ืฆืข ื’ื™ื‘ื•ื™:

sudo -u pgbackrest pgbackrest --stanza=main backup

2. ื•ื“ื ืฉื ื•ืฆืจ ื’ื™ื‘ื•ื™:

ls /var/lib/pgbackrest/backup/main/

Pgbackrest ืชื™ืฆื•ืจ ืืช ื”ื’ื™ื‘ื•ื™ ื”ืžืœื ื”ืจืืฉื•ืŸ. ืื ืชืจืฆื”, ืชื•ื›ืœ ืœื”ืคืขื™ืœ ืฉื•ื‘ ืืช ืคืงื•ื“ืช ื”ื’ื™ื‘ื•ื™ ื•ืœื•ื•ื“ื ืฉื”ืžืขืจื›ืช ื™ื•ืฆืจืช ื’ื™ื‘ื•ื™ ืžืฆื˜ื‘ืจ.

ืื ื‘ืจืฆื•ื ืš ืœื‘ืฆืข ื’ื™ื‘ื•ื™ ืžืœื ืฉื•ื‘, ืฆื™ื™ืŸ ื“ื’ืœ ื ื•ืกืฃ:

sudo -u pgbackrest pgbackrest --stanza=main --type=full backup

ืื ืืชื” ืจื•ืฆื” ืคืœื˜ ืžืคื•ืจื˜ ืฉืœ ื”ืžืกื•ืฃ, ืฆื™ื™ืŸ ื’ื:

sudo -u pgbackrest pgbackrest --stanza=main --type=full --log-level-console=info backup

ืฉื—ื–ื•ืจ ื’ื™ื‘ื•ื™

ืฉืจืช Postgres (ืžืฉืชืžืฉ sudo ืื• ืฉื•ืจืฉ):

1. ืขืฆื•ืจ ืืช ืืฉื›ื•ืœ ื”ืจื™ืฆื”:

sudo pg_ctlcluster 11 main stop

2. ืฉื—ื–ื•ืจ ืžื’ื™ื‘ื•ื™:

sudo -u postgres pgbackrest --stanza=main --log-level-console=info --delta --recovery-option=recovery_target=immediate restore

ื›ื“ื™ ืœืฉื—ื–ืจ ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ืœืžืฆื‘ ืฉืœ ื”ื’ื™ื‘ื•ื™ ื”ืžืœื ื”ืื—ืจื•ืŸ, ื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ืžื‘ืœื™ ืœืฆื™ื™ืŸ recovery_target:

sudo -u postgres pgbackrest --stanza=main --log-level-console=info --delta restore

ื—ึธืฉืื•ึผื‘! ืœืื—ืจ ื”ืฉื—ื–ื•ืจ, ืขืœื•ืœ ืœืงืจื•ืช ืฉืžืกื“ ื”ื ืชื•ื ื™ื ื™ืชืงืข ื‘ืžืฆื‘ ืฉื—ื–ื•ืจ (ื™ื”ื™ื• ืฉื’ื™ืื•ืช ื›ืžื• ERROR: ืœื ื ื™ืชืŸ ืœื‘ืฆืข DROP DATABASE ื‘ื˜ืจื ื–ืงืฆื™ื” ืœืงืจื™ืื” ื‘ืœื‘ื“). ืœืžืขืŸ ื”ืืžืช, ืขื“ื™ื™ืŸ ืœื ื”ื‘ื ืชื™ ืœืžื” ื–ื” ืงืฉื•ืจ. ื”ืคืชืจื•ืŸ ื”ื•ื ื›ื“ืœืงืžืŸ (ืชืฆื˜ืจืš ืœื”ืžืชื™ืŸ ืžืขื˜ ืœืื—ืจ ื‘ื™ืฆื•ืข ื”ืคืงื•ื“ื”):

sudo -u postgres psql -c "select pg_wal_replay_resume()"

ืœืžืขืฉื”, ืืคืฉืจ ืœืฉื—ื–ืจ ื’ื™ื‘ื•ื™ ืกืคืฆื™ืคื™ ืœืคื™ ืฉืžื•. ื”ื ื” ืื ื™ ืจืง ืื ื™ ืืกืคืง ืงื™ืฉื•ืจ ืœืชื™ืื•ืจ ืฉืœ ืชื›ื•ื ื” ื–ื• ื‘ืชื™ืขื•ื“. ื”ืžืคืชื—ื™ื ืžืžืœื™ืฆื™ื ืœื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช ื–ื• ื‘ื–ื”ื™ืจื•ืช ื•ืœื”ืกื‘ื™ืจ ืžื“ื•ืข. ืื ื™ ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืžืขืฆืžื™ ืฉื”ืฉืชืžืฉืชื™ ื‘ื–ื”. ืื ืืชื” ื‘ืืžืช ืฆืจื™ืš, ื•ื“ื ืฉืœืื—ืจ ื”ืฉื—ื–ื•ืจ ืžืกื“ ื”ื ืชื•ื ื™ื ื™ื•ืฆื ืžืžืฆื‘ ื”ืฉื—ื–ื•ืจ (ื‘ื—ืจ pg_is_in_recovery() ืฆืจื™ืš ืœื”ืจืื•ืช "f"), ื•ืœืžืงืจื”, ื‘ืฆืข ื’ื™ื‘ื•ื™ ืžืœื ืœืื—ืจ ื”ืฉื—ื–ื•ืจ.

3. ื”ืชื—ืœ ืืช ื”ืืฉื›ื•ืœ:

sudo pg_ctlcluster 11 main start

ืœืื—ืจ ืฉื—ื–ื•ืจ ื”ื’ื™ื‘ื•ื™, ืขืœื™ื ื• ืœื‘ืฆืข ื’ื™ื‘ื•ื™ ืฉื ื™:

ืžืื’ืจ (ืžืฉืชืžืฉ pgbackrest):

sudo pgbackrest --stanza=main backup

ื–ื” ื”ื›ืœ. ืœืกื™ื›ื•ื, ืื ื™ ืจื•ืฆื” ืœื”ื–ื›ื™ืจ ืœื›ื ืฉืื ื™ ื‘ืฉื•ื ืื•ืคืŸ ืœื ืžื ืกื” ืœื”ืชื—ื–ื•ืช ืœ-dba ื‘ื›ื™ืจ ื•ืืฉืชืžืฉ ื‘ืขื ื ื™ื ื‘ื”ื–ื“ืžื ื•ืช ื”ื›ื™ ืงื˜ื ื”. ื ื›ื•ืŸ ืœืขื›ืฉื™ื•, ืื ื™ ืขืฆืžื™ ืžืชื—ื™ืœ ืœืœืžื•ื“ ื ื•ืฉืื™ื ืฉื•ื ื™ื ื›ืžื• ื’ื™ื‘ื•ื™, ืฉื›ืคื•ืœ, ื ื™ื˜ื•ืจ ื•ื›ื•'. ื•ืื ื™ ื›ื•ืชื‘ ื“ื•ื—ื•ืช ืงื˜ื ื™ื ืขืœ ื”ืชื•ืฆืื•ืช ืขืœ ืžื ืช ืœืชืจื•ื ืชืจื•ืžื” ืงื˜ื ื” ืœืงื”ื™ืœื” ื•ืœื”ืฉืื™ืจ ืœืขืฆืžื™ ื“ืคื™ ืฆ'ื™ื˜ื™ื ืงื˜ื ื™ื.

ื‘ืžืืžืจื™ื ื”ื‘ืื™ื ืื ืกื” ืœื“ื‘ืจ ืขืœ ืชื›ื•ื ื•ืช ื ื•ืกืคื•ืช - ืฉื—ื–ื•ืจ ื ืชื•ื ื™ื ืœืืฉื›ื•ืœ ื ืงื™, ื”ืฆืคื ืช ื’ื™ื‘ื•ื™ื™ื ื•ืคืจืกื•ื ืœ-S3, ื’ื™ื‘ื•ื™ื™ื ื‘ืืžืฆืขื•ืช rsync.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”