ื™ื ืงืจืขืžืขื ื˜ืึทืœ ืคึผืึธืกื˜ื’ืจืขืกืงืœ ื‘ืึทืงืึทืคึผืก ืžื™ื˜ ืคึผื’ื‘ืึทืงืงืจืขืกื˜ - ืึท ืงื•ืจืก ืคึฟืึทืจ ืึท ื™ื•ื ื’ ืคื™ื™ื˜ืขืจ ืคื•ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ

ืึธืคึผืœื™ื™ืงืขื ื•ื ื’

ืื™ืš ื‘ื™ืŸ ืึท ื“ืขื•ื•ืขืœืึธืคึผืขืจ. ืื™ืš ืฉืจื™ื™ึทื‘ืŸ ืงืึธื“ ืื•ืŸ ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื‘ืœื•ื™ื– ื•ื•ื™ ืึท ื‘ืึทื ื™ืฆืขืจ. ืื™ืš ืฉื˜ืขืœ ื–ื™ืš ื ื™ืฉื˜ ืคืืจ ืื– ืื™ืš ื‘ื™ืŸ ื ืกื™ืกื˜ืขื ืื“ืžื™ื ื™ืกื˜ืจืื˜ื•ืจ, ืคื™ืœ ื•ื•ื™ื™ื ื™ื’ืขืจ ื ื“ื‘ื. ืึธื‘ืขืจโ€ฆ

ืขืก ืึทื–ื•ื™ ื’ืขื˜ืจืืคืŸ ืึทื– ืื™ืš ื“ืืจืฃ ืฆื• ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ืึท ื‘ืึทืงืึทืคึผ ืคื•ืŸ ื“ื™ ืคึผืึธืกื˜ื’ืจืขืกืงืœ ื“ืึทื˜ืึทื‘ื™ื™ืก. ืงื™ื™ืŸ ื•ื•ืืœืงื ืก - ื ืึธืจ ื ื•ืฆืŸ SSH ืื•ืŸ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ืึทืœืฅ ืึทืจื‘ืขื˜ ืึธืŸ ืึทืกืงื™ื ื’ ืคึฟืึทืจ ื’ืขืœื˜. ื•ื•ืึธืก ื˜ืึธืŸ ืžื™ืจ ื˜ืึธืŸ ืื™ืŸ ืึทื–ืึท ืงืึทืกืขืก? ื“ืึธืก ืื™ื– ืจืขื›ื˜, ืžื™ืจ ืฉื˜ื•ืคึผืŸ pgdump ืื™ืŸ cron, ื‘ืึทืงืึทืคึผ ืึทืœืฅ ืฆื• ื“ื™ ืึทืจืงื™ื™ื•ื• ื™ืขื“ืขืจ ื˜ืึธื’, ืื•ืŸ ืื•ื™ื‘ ืžื™ืจ ื–ืขื ืขืŸ ื’ืึธืจ ืคืึทืจืคืึทืœืŸ, ืžื™ืจ ืฉื™ืงืŸ ื“ืขื ืึทืจืงื™ื™ื•ื• ืขืจื’ืขืฅ ื•ื•ื™ื™ึทื˜ ืึทื•ื•ืขืง.

ื“ืึธืก ืžืึธืœ ื“ื™ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื– ืœื•ื™ื˜ ื“ื™ ืคึผืœืึทื ื–, ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืžื™ื™ื ื˜ ืฆื• ื•ื•ืึทืงืกืŸ ืžื™ื˜ ื•ื•ืขื’ืŸ +- 100 ืžืขื’ืื‘ื™ื™ื˜ืŸ ืคึผืขืจ ื˜ืึธื’. ืคื•ืŸ ืงื•ืจืก, ื ืึธืš ืึท ืคึผืึธืจ ืคื•ืŸ ื•ื•ืึธื›ืŸ ื“ื™ ืคืึทืจืœืึทื ื’ ืฆื• ื‘ืึทืงืึทืคึผ ืึทืœืฅ ืžื™ื˜ ืคึผื’ื“ืึทืžืคึผ ื•ื•ืขื˜ ืคืึทืจืฉื•ื•ื™ื ื“ืŸ. ื“ืึธืก ืื™ื– ื•ื•ื• ื™ื ืงืจืึทืžืขื ื˜ืึทืœ ื‘ืึทืงืึทืคึผืก ืงื•ืžืขืŸ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ.

ื˜ืฉื™ืงืึทื•ื•ืข? ื‘ืจื•ื›ื™ื ื”ื‘ืื™ื ืฆื• ืงืึทืฅ.

ื™ื ืงืจืขืžืขื ื˜ืึทืœ ื‘ืึทืงืึทืคึผ ืื™ื– ืึท ื˜ื™ืคึผ ืคื•ืŸ ื‘ืึทืงืึทืคึผ ื•ื•ืขืŸ ื ื™ื˜ ืึทืœืข ืžืงื•ืจ ื˜ืขืงืขืก ื–ืขื ืขืŸ ืงืึทืคึผื™ื“, ืึธื‘ืขืจ ื‘ืœื•ื™ื– ื ื™ื™ึทืข ืื•ืŸ ื“ื™ ื’ืขื‘ื™ื˜ืŸ ื–ื™ื ื˜ ื“ื™ ืฉืึทืคื•ื ื’ ืคื•ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืงืึธืคึผื™ืข.

ื•ื•ื™ ื™ืขื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื‘ืกืึธืœื•ื˜ ื ื™ื˜ ื•ื•ื™ืœื“ (ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜) ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ื™ื ื˜ืจืึทืงืึทืกื™ื– ืคื•ืŸ ืคึผืึธืกื˜ื’ืจืขืก, ืื™ืš ื’ืขื•ื•ืืœื˜ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ื’ืจื™ืŸ ืงื ืขืคึผืœ. ื ื•, ืื™ืจ ื•ื•ื™ืกืŸ, ื•ื•ื™ ืื™ืŸ AWS, DigitalOcean: ืื™ืจ ื’ืขื“ืจื™ืงื˜ ืื™ื™ืŸ ืงื ืขืคึผืœ - ืื™ืจ ื”ืึธื˜ ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืื™ืจ ื’ืขื“ืจื™ืงื˜ ื“ื™ ืจื’ืข - ืื™ืจ ืฉื˜ืขืœืŸ ืึทืจื•ื™ืฃ ื‘ืึทืงืึทืคึผืก, ื“ื™ ื“ืจื™ื˜ - ืื™ืจ ืจืึธื•ืœื“ ืึทืœืฅ ืฆื•ืจื™ืง ืึท ืคึผืึธืจ ืคื•ืŸ ืฉืขื”. ืื™ืš ื”ืึธื‘ ื ื™ื˜ ื’ืขืคึฟื•ื ืขืŸ ืึท ืงื ืขืคึผืœ ืึธื“ืขืจ ืึท ืฉื™ื™ืŸ GUI ื’ืขืฆื™ื™ึทื’. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืกืŸ ืื™ื™ื ืขืจ (ืคืจื™ื™ ืึธื“ืขืจ ื‘ื™ืœื™ืง), ืฉืจื™ื™ึทื‘ืŸ ื•ื•ืขื’ืŸ ืื™ื ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ.

ื ืึธืš ื’ื•ื’ืœื™ื ื’ ืื™ืš ื’ืขืคึฟื•ื ืขืŸ ืฆื•ื•ื™ื™ ืžื›ืฉื™ืจื™ื ืคึผื’ื‘ืึทืจืžืึทืŸ ะธ pgbackrest. ืื™ืš ื‘ื™ืŸ ืคืฉื•ื˜ ื ื™ืฉื˜ ืžืฆืœื™ื— ื’ืขื•ื•ืขืŸ ืžื™ื˜ ื“ื™ ืขืจืฉื˜ืข (ื–ื™ื™ืขืจ ืฉื™ื˜ืขืจืข ื“ืืงื•ืžืขื ื˜ืืฆื™ืข, ืื™ืš ื”ืื‘ ื’ืขืคืจื•ืื•ื•ื˜ ืืœืขืก ืื•ื™ืกืฆื•ืคื™ื ืขืŸ ืœื•ื™ื˜ ื“ื™ ืืœื˜ืข ืžืื ื•ื•ืืœืŸ), ืื‘ืขืจ ืžื™ื˜ ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ื”ืื˜ ื–ื™ืš ื“ื™ ื“ืืงื•ืžืขื ื˜ืืฆื™ืข ืืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ืฆื• ื–ื™ื™ืŸ ื’ืœื™ื™ืš, ืื‘ืขืจ ื ื™ืฉื˜ ืืŸ ื—ืกืจื•ื ื•ืช. ืฆื• ืคืึทืจืคึผืึธืฉืขื˜ืขืจืŸ ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ ื“ื™ ื•ื•ืืก ื–ืขื ืขืŸ ืคื™ื™ืกื˜ ืžื™ื˜ ืึท ืขื ืœืขืš ืึทืจื‘ืขื˜, ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ.

ื ืึธืš ืœื™ื™ืขื ืขืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืจ ื•ื•ืขื˜ ืœืขืจื ืขืŸ ื•ื•ื™ ืฆื• ืžืึทื›ืŸ ื™ื ืงืจืึทืžืขื ื˜ืึทืœ ื‘ืึทืงืึทืคึผืก, ืจืึทื˜ืขื•ื•ืขืŸ ื–ื™ื™ ืฆื• ืึท ื•ื•ื™ื™ึทื˜ ืกืขืจื•ื•ืขืจ (ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืžื™ื˜ ื‘ืึทืงืึทืคึผืก) ืื•ืŸ ื•ืžืงืขืจืŸ ื–ื™ื™ ืื™ืŸ ืคืึทืœ ืคื•ืŸ ื“ืึทื˜ืŸ ืึธื ื•ื•ืขืจ ืึธื“ืขืจ ืื ื“ืขืจืข ืคึผืจืึธื‘ืœืขืžืก ืื•ื™ืฃ ื“ื™ ื”ื•ื™ืคึผื˜ ืกืขืจื•ื•ืขืจ.

ื˜ืจืึทื™ื ื™ื ื’

ืฆื• ืจืขืคึผืจืึธื“ื•ืฆื™ืจืŸ ื“ื™ ืžืึทื ื•ืึทืœ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื•ื•ื™ื™ ื•ื•ืคึผืก. ื“ืขืจ ืขืจืฉื˜ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ (ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ื™ืฃ ื•ื•ืึธืก ื“ื™ ื‘ืึทืงืึทืคึผืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืกื˜ืึธืจื“), ืื•ืŸ ื“ื™ ืจื’ืข, ืื™ืŸ ืคืึทืงื˜, ื“ื™ ืกืขืจื•ื•ืขืจ ื–ื™ืš ืžื™ื˜ ืคึผืึธืกื˜ื’ืจืขืก (ืื™ืŸ ืžื™ื™ืŸ ืคืึทืœ, ื•ื•ืขืจืกื™ืข 11 ืคื•ืŸ ืคึผืึธืกื˜ื’ืจืขืก).

ืขืก ืื™ื– ืื ื’ืขื ื•ืžืขืŸ ืึทื– ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ืžื™ื˜ postgres ืื™ืจ ื”ืึธื‘ืŸ ื•ื•ืึธืจืฆืœ, sudo user, postgres ื‘ืึทื ื™ืฆืขืจ ืื•ืŸ postgres ื–ื™ืš ืื™ื– ืื™ื ืกื˜ืึทืœื™ืจืŸ (ื“ื™ ืคึผืึธืกื˜ื’ืจืขืก ื‘ืึทื ื™ืฆืขืจ ืื™ื– ื‘ืืฉืืคืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื•ื•ืขืŸ ืื™ืจ ื™ื ืกื˜ืึทืœื™ืจืŸ postgresql), ืื•ืŸ ืื•ื™ืฃ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืกืขืจื•ื•ืขืจ ืขืก ื–ืขื ืขืŸ ื•ื•ืึธืจืฆืœ ืื•ืŸ sudo ื‘ืึทื ื™ืฆืขืจ (ืื™ืŸ ื“ื™ ืžืึทื ื•ืึทืœ. ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื ืึธืžืขืŸ pgbackrest ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜).

ืึทื–ื•ื™ ืึทื– ืื™ืจ ื”ืึธื˜ ื•ื•ื™ื™ื ื™ืงืขืจืข ืคืจืื‘ืœืขืžืขืŸ ื•ื•ืขืŸ ืื™ืจ ืจืขืคึผืจืึธื“ื•ืฆื™ืจืŸ ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–, ืื™ืš ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ื™ื™ื˜ืึทืœื™ืง ื•ื•ื•, ืžื™ื˜ ื•ื•ืึธืก ื‘ืึทื ื™ืฆืขืจ ืื•ืŸ ืžื™ื˜ ื•ื•ืึธืก ืจืขื›ื˜ ืื™ืš ื•ื™ืกืคื™ืจืŸ ื“ืขื ื‘ืึทืคึฟืขืœ ื‘ืฉืขืช ืฉืจื™ื™ื‘ืŸ ืื•ืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ืขื ืึทืจื˜ื™ืงืœ.

ื™ื ืกื˜ืึธืœื™ื ื’ pgbackrest

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ื‘ืึทื ื™ืฆืขืจ pgbackrest):

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. ืึทืกืขืžื‘ืึทืœ ืคึผื’ื‘ืึทืงืงืจืขืกื˜:

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. ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ืจื™ืงื•ื•ื™ื™ืขืจื– ืคึผืขืจืœ. ื™ื ืกื˜ืึทืœื™ืจืŸ:

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 ืกืขืจื•ื•ืขืจ (ืกื•ื“ืึธ ื‘ืึทื ื™ืฆืขืจ ืึธื“ืขืจ ื•ื•ืึธืจืฆืœ):

ื“ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ื™ื ืกื˜ืึธืœื™ื ื’ ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ืื•ื™ืฃ ืึท ืกืขืจื•ื•ืขืจ ืžื™ื˜ ืคึผืึธืกื˜ื’ืจืขืก ืื™ื– ืขื ืœืขืš ืฆื• ื“ื™ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’ ืคึผืจืึธืฆืขืก ืื•ื™ืฃ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ื™ืึธ, ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ื™ืฃ ื‘ื™ื™ื“ืข ืกืขืจื•ื•ืขืจืก), ืึธื‘ืขืจ ืื™ืŸ ื“ื™ 6 ืคึผืึทืจืึทื’ืจืึทืฃ ื“ื™ ืจื’ืข ืื•ืŸ ืœืขืฆื˜ืข ืงืึทืžืึทื ื“ื–:

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):

ืฉืึทืคึฟืŸ ืึท ืฉืœื™ืกืœ ืคึผืึธืจ:

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

ื•ื•ืืจืขื ื•ื ื’! ืžื™ืจ ืœื•ื™ืคืŸ ื“ื™ ืื•ื™ื‘ืŸ ืงืึทืžืึทื ื“ื– ืึธืŸ ืกื•ื“ืึธ.

Postgres ืกืขืจื•ื•ืขืจ (ืกื•ื“ืึธ ื‘ืึทื ื™ืฆืขืจ ืึธื“ืขืจ ื•ื•ืึธืจืฆืœ):

ืฉืึทืคึฟืŸ ืึท ืฉืœื™ืกืœ ืคึผืึธืจ:

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 ""

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืกื•ื“ืึธ ื‘ืึทื ื™ืฆืขืจ):

ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืขืคื ื˜ืœืขืš ืฉืœื™ืกืœ ืคื•ืŸ ื“ื™ ืคึผืึธืกื˜ื’ืจืขืก ืกืขืจื•ื•ืขืจ ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืกืขืจื•ื•ืขืจ:

(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 ืกืขืจื•ื•ืขืจ (ืกื•ื“ืึธ ื‘ืึทื ื™ืฆืขืจ):

ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืขืคื ื˜ืœืขืš ืฉืœื™ืกืœ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืžื™ื˜ ืคึผืึธืกื˜ื’ืจืขืก:

(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 ืกืขืจื•ื•ืขืจ (ืกื•ื“ืึธ ื‘ืึทื ื™ืฆืขืจ ืึธื“ืขืจ ื•ื•ืึธืจืฆืœ):

1. ืœืึธื–ืŸ ืก ืœืึธื–ืŸ ื ืึทืงื™ื ื’ ืื•ื™ืฃ ื“ื™ ืคึผืึธืกื˜ื’ืจืขืก ืกืขืจื•ื•ืขืจ ืคึฟื•ืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื™ืคึผืก. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื˜ืขืงืข postgresql.conf (ืœื™ื’ืŸ ืื™ืŸ ื“ื™ /etc/postgresql/11/ื”ื•ื™ืคึผื˜ ื˜ืขืงืข), ืึทื“ื™ื ื’ ื“ื™ ืฉื•ืจื” ืฆื• ืขืก:

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) ืคึฟืึทืจ pgbackrest ืฆื• ืึทืจื‘ืขื˜ืŸ:

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. ืจืขืœืึธืึทื“ ืคึผืึธืกื˜ื’ืจืขืกืงืœ:

sudo service postgresql restart

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืกืขืจื•ื•ืขืจ

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ื‘ืึทื ื™ืฆืขืจ):

ื–ืืœ ืก ืžืึทื›ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ืกืขื˜ื˜ื™ื ื’ืก ืื™ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืข pgbackrest
(/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 # ะŸะฐั€ะฐะผะตั‚ั€, ัƒะบะฐะทั‹ะฒะฐัŽั‰ะธะน ัะบะพะปัŒะบะพ ั…ั€ะฐะฝะธั‚ัŒ ะฟะพะปะฝั‹ั… ะฑัะบะฐะฟะพะฒ. ะข.ะต. ะตัะปะธ ัƒ ะฒะฐั ะตัั‚ัŒ ะดะฒะฐ ะฟะพะปะฝั‹ั… ะฑัะบะฐะฟะฐ ะธ ะฒั‹ ัะพะทะดะฐะตั‚ะต ั‚ั€ะตั‚ะธะน - ะฟะตั€ะฒั‹ะต ะดะฒะฐ ะฑัƒะดัƒั‚ ัƒะดะฐะปะตะฝั‹ ะฒะผะตัั‚ะต ั ะธะฝะบั€ะตะผะตะฝั‚ะฐะผะธ. 
start-fast=y # ะะฐั‡ะธะฝะฐะตั‚ ั€ะตะทะตั€ะฒะฝะพะต ะบะพะฟะธั€ะพะฒะฐะฝะธะต ะฝะตะผะตะดะปะตะฝะฝะพ, ะฟั€ะพั‡ะธั‚ะฐั‚ัŒ ะฟั€ะพ ัั‚ะพั‚ ะฟะฐั€ะฐะผะตั‚ั€ ะผะพะถะฝะพ ั‚ัƒั‚ https://postgrespro.ru/docs/postgrespro/9.5/continuous-archiving

ืฉืึทืคึฟืŸ ืึท ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ื‘ืึทื ื™ืฆืขืจ):

ืฉืึทืคึฟืŸ ืึท ื ื™ื™ึทืข ืกื˜ืึธืจื™ื“ื–ืฉ ืคึฟืึทืจ ื“ืขื ืงื ื•ื™ืœ ื”ื•ื™ืคึผื˜:

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

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

Postgres ืกืขืจื•ื•ืขืจ (ืกื•ื“ืึธ ื‘ืึทื ื™ืฆืขืจ ืึธื“ืขืจ ื•ื•ืึธืจืฆืœ):

ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื•ื™ืฃ ื“ื™ Postgres ืกืขืจื•ื•ืขืจ:

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

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ื‘ืึทื ื™ืฆืขืจ):

ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื•ื™ืฃ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืกืขืจื•ื•ืขืจ:

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

ืžื™ืจ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ืื™ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืžื™ืจ ื–ืขืŸ ื“ื™ ืฉื•ืจื” "ื˜ืฉืขืง ื‘ืึทืคึฟืขืœ ืกื•ืฃ: ื’ืขืขื ื“ื™ืงื˜ ื”ืฆืœื—ื”".

ืžื™ื“? ืœืึธืžื™ืจ ื’ื™ื™ืŸ ืฆื• ื“ื™ ืžืขืจืกื˜ ื˜ืฉื™ืงืึทื•ื•ืข ื˜ื™ื™ืœ.

ืžืึทื›ืŸ ืึท ื‘ืึทืงืึทืคึผ

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ื‘ืึทื ื™ืฆืขืจ):

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 ืกืขืจื•ื•ืขืจ (ืกื•ื“ืึธ ื‘ืึทื ื™ืฆืขืจ ืึธื“ืขืจ ื•ื•ืึธืจืฆืœ):

1. ื”ืึทืœื˜ืŸ ื“ื™ ืคืœื™ืกื ื“ื™ืง ืงื ื•ื™ืœ:

sudo pg_ctlcluster 11 main stop

2. ืจื™ืกื˜ืึธืจื™ื ื’ ืคื•ืŸ ื‘ืึทืงืึทืคึผ:

sudo -u postgres pgbackrest --stanza=main --delta restore

3. ืึธื ื”ื™ื™ื‘ ื“ืขื ืงื ื•ื™ืœ:

sudo pg_ctlcluster 11 main start

ื ืึธืš ืจื™ืกื˜ืึธืจื™ื ื’ ื“ื™ ื‘ืึทืงืึทืคึผ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืึท ืฆื•ื•ื™ื™ื˜ ื‘ืึทืงืึทืคึผ:

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืคึผื’ื‘ืึทืงืงืจืขืกื˜ ื‘ืึทื ื™ืฆืขืจ):

sudo pgbackrest --stanza=main backup

ืึทื– ืก ืึทืœืข. ืฆื•ื ืกื•ืฃ ื•ื•ื™ืœ ืื™ืš ืื™ื™ืš ื“ืขืจืžืื ืขืŸ, ืื– ืื™ืš ืคืจื•ื‘ ื‘ืฉื•ื ืื•ืคืŸ ื ื™ืฉื˜ ื–ื™ืš ืคืืจืฉื˜ืขืœืŸ ืคืืจ ื ืขืœื˜ืขืจืข ื“ื‘ื ืื•ืŸ ื•ื•ืขืœ ื ื•ืฆืŸ ื“ื™ ื•ื•ืืœืงื ืก ื‘ื™ื™ ื“ื™ ืžื™ื ื“ืกื˜ืข ื’ืขืœืขื’ื ื”ื™ื™ื˜. ื“ืขืจื•ื•ื™ื™ึทืœ, ืื™ืš ื–ื™ืš ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ืœืขืจื ืขืŸ ืคืึทืจืฉื™ื“ืŸ ื˜ืขืžืขืก ืึทื–ืึท ื•ื•ื™ ื‘ืึทืงืึทืคึผ, ืจืขืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืžืึธื ื™ื˜ืึธืจื™ื ื’, ืขื˜ืง. ืื•ืŸ ืื™ืš ืฉืจื™ื™ื‘ ืงืœื™ื™ื ืข ื‘ืืจื™ื›ื˜ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืื˜ืŸ ื›ื“ื™ ืฆื• ืžืื›ืŸ ื ืงืœื™ื™ื ืข ื‘ื™ื™ืฉื˜ื™ื™ืขืจื•ื ื’ ืคืืจ ื“ื™ ืงื”ื™ืœื” ืื•ืŸ ืื™ื‘ืขืจืœืื–ืŸ ืงืœื™ื™ื ืข ืฉื•ื•ื™ื ื“ืœืขืจืœืขืš ืคืืจ ื–ื™ืš ืืœื™ื™ืŸ.

ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืึทืจื˜ื™ืงืœืขืŸ, ืื™ืš ื•ื•ืขืœ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื ืึธืš ืคึฟืขื™ึดืงื™ื™ื˜ืŸ - ื“ืึทื˜ืŸ ืึธืคึผื–ื•ืš ืฆื• ืึท ืจื™ื™ืŸ ืงื ื•ื™ืœ, ืขื ืงืจื™ืคึผืฉืึทืŸ ืคื•ืŸ ื‘ืึทืงืึทืคึผืก ืื•ืŸ ืืจื•ื™ืกื’ืขื‘ืŸ ืฆื• S3, ื‘ืึทืงืึทืคึผืก ื“ื•ืจืš rsync.

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’