Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ копия Π½Π° postgresql с pgbackrest - курс Π·Π° ΠΌΠ»Π°Π΄ΠΈ Π±ΠΎΠΉΡ†ΠΈ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ

ΠžΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΆΠ΅Π½ΠΈΠ΅

Аз съм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Пиша ΠΊΠΎΠ΄, взаимодСйствам с Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ само ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π». Π’ никакъв случай Π½Π΅ сС правя Π½Π° систСмСн администратор ΠΈ ΠΎΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π½Π° dba. Но…

Π‘Π»ΡƒΡ‡ΠΈ сС Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΠΌ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ postgresql. Π‘Π΅Π· ΠΎΠ±Π»Π°Ρ†ΠΈ - ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΉΡ‚Π΅ SSH ΠΈ Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ всичко Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ Π΄Π° Π½Π΅ иска ΠΏΠ°Ρ€ΠΈ. Какво ΠΏΡ€Π°Π²ΠΈΠΌ Π² Ρ‚Π°ΠΊΠΈΠ²Π° случаи? Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠ°, ΠΏΡŠΡ…Π°ΠΌΠ΅ pgdump Π² cron, Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°ΠΌΠ΅ всичко Π² Π°Ρ€Ρ…ΠΈΠ²Π° всСки Π΄Π΅Π½ ΠΈ Π°ΠΊΠΎ сС Ρ€Π°Π·ΠΏΡ€ΡŠΡΠ½Π΅ΠΌ напълно, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ Π°Ρ€Ρ…ΠΈΠ² някъдС Π΄Π°Π»Π΅Ρ‡.

Π’ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ трудността бСшС, Ρ‡Π΅ спорСд ΠΏΠ»Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° растС с ΠΎΠΊΠΎΠ»ΠΎ + - 100 MB Π½Π° Π΄Π΅Π½. Π Π°Π·Π±ΠΈΡ€Π° сС, слСд няколко сСдмици ΠΆΠ΅Π»Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ всичко с pgdump Ρ‰Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π΅. Π’ΠΎΠ²Π° Π΅ мястото, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΠ²ΠΈ са ΠΏΠΎΠ»Π΅Π·Π½ΠΈ.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ? Π”ΠΎΠ±Ρ€Π΅ дошли ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.

Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎΡ‚ΠΎ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π΅ Π²ΠΈΠ΄ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ сС ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ всички ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π° само Π½ΠΎΠ²ΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ слСд ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ ΠΊΠΎΠΏΠΈΠ΅.

ΠšΠ°Ρ‚ΠΎ всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π’ΠžΠ’ΠΠ›ΠΠž Π½Π΅ ТСлаСшС (ΠΏΠΎ Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅) Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ Ρ‚ΡŠΠ½ΠΊΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° postgres, исках Π΄Π° намСря Π·Π΅Π»Π΅Π½ Π±ΡƒΡ‚ΠΎΠ½. Π•, Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°Ρ‚ΠΎ Π² AWS, DigitalOcean: натиснах Π΅Π΄ΠΈΠ½ Π±ΡƒΡ‚ΠΎΠ½ - ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ… рСпликация, натиснах втория - настроих Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ копия, трСтия - всичко сС Π²ΡŠΡ€Π½Π° ΠΏΡ€Π΅Π΄ΠΈ няколко часа. НС Π½Π°ΠΌΠ΅Ρ€ΠΈΡ… Π±ΡƒΡ‚ΠΎΠ½ ΠΈ красив GUI инструмСнт. Ако Π·Π½Π°Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΡŠΠ² (Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π΅Π½ ΠΈΠ»ΠΈ Π΅Π²Ρ‚ΠΈΠ½) - ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π·Π° Π½Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅.

Π“ΡƒΠ³ΡŠΠ» Π½Π°ΠΌΠ΅Ρ€ΠΈΡ… Π΄Π²Π° инструмСнта ΠΏΠ³Π±Π°Ρ€ΠΌΠ°Π½ ΠΈ pgΠΎΠ±Π»Π΅Π³Π°Π»ΠΊΠ°. Π‘ ΠΏΡŠΡ€Π²ΠΈΡ просто Π½Π΅ успях (ΠΌΠ½ΠΎΠ³ΠΎ лоша докумСнтация, ΠΎΠΏΠΈΡ‚Π°Ρ… сС Π΄Π° Π²Π·Π΅ΠΌΠ° всичко спорСд стари Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²Π°), Π½ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ сС ΠΎΠΊΠ°Π·Π° Π½Π° Π½ΠΈΠ²ΠΎ докумСнтация, Π½ΠΎ Π½Π΅ ΠΈ Π±Π΅Π· Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ. Π—Π° Π΄Π° сС опрости Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΈΠ·ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΡ€Π΅Π΄ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π·Π°Π΄Π°Ρ‡Π°, Π΅ написана Ρ‚Π°Π·ΠΈ статия.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ статия, Ρ‰Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΈ, Π΄Π° Π³ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚Π΅ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ копия) ΠΈ Π΄Π° Π³ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Ρ‚Π΅ Π² случай Π½Π° Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° главния ΡΡŠΡ€Π²ΡŠΡ€.

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

Π©Π΅ Π²ΠΈ трябват Π΄Π²Π° VPS, Π·Π° Π΄Π° ΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Ρ‰Π΅ Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ‚Π΅), Π° Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ самият ΡΡŠΡ€Π²ΡŠΡ€ с postgres (Π² моя случай вСрсия 11 Π½Π° postgres).

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° с postgres ΠΈΠΌΠ°Ρ‚Π΅ инсталиран root, sudo ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», postgres ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈ самия postgres (потрСбитСлят Π½Π° postgres сС създава Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС инсталира postgresql), Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ root ΠΈ sudo ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» (потрСбитСлско ΠΈΠΌΠ΅ pgbackrest Ρ‰Π΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ).

Π—Π° Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° инструкциитС - пиша Π² курсив къдС, с какъв ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈ с ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€Π°Π²Π° съм изпълнил ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΈ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ‚Π΅ статията.

pgΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Π»Π΅Π³Π°Π»ΠΊΠ°Ρ‚Π°

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° 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. Pgbackrest изисква 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 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠ»ΠΈ root):

ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° инсталиранС Π½Π° pgbackrest Π½Π° postgres ΡΡŠΡ€Π²ΡŠΡ€ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° инсталиранС Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (Π΄Π°, pgbackrest трябва Π΄Π° бъдС инсталиран ΠΈ Π½Π° Π΄Π²Π°Ρ‚Π° ΡΡŠΡ€Π²ΡŠΡ€Π°), Π½ΠΎ Π² 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 ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ взаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ postgres ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° с ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° pgbackrest):

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‡ΠΈΡ„Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅:

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

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π“ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π±Π΅Π· sudo.

Postgres ΡΡŠΡ€Π²ΡŠΡ€ (sudo ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠ»ΠΈ root):

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‡ΠΈΡ„Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅:

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

На Ρ‚Π°Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ° Ρ‰Π΅ поиска ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° ΠΎΡ‚ root потрСбитСля. Врябва Π΄Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° Π½Π° root потрСбитСля Π½Π° 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

На Ρ‚Π°Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ° Ρ‰Π΅ поиска ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° ΠΎΡ‚ root потрСбитСля. Врябва Π΄Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° Π½Π° root потрСбитСля Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ!

ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅:

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π·Π° чистотата Π½Π° СкспСримСнта):

sudo -u pgbackrest ssh postgres@<postgres_server_ip>

Postgres ΡΡŠΡ€Π²ΡŠΡ€ (root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π·Π° чистотата Π½Π° СкспСримСнта):

sudo -u postgres ssh pgbackrest@<repository_server_ip>

УвСрявамС сС, Ρ‡Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Настройка Π½Π° postgres ΡΡŠΡ€Π²ΡŠΡ€

Postgres ΡΡŠΡ€Π²ΡŠΡ€ (sudo ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠ»ΠΈ root):

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), Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ 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. РСстартирайтС 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 # ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ сколько Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Ρ… бэкапов. Π’.Π΅. Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΠ»Π½Ρ‹Ρ… бэкапа ΠΈ Π²Ρ‹ создаСтС Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ - ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ вмСстС с ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. 
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 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠ»ΠΈ root):

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π½Π° 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 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠ»ΠΈ root):

1. Π‘ΠΏΡ€Π΅Ρ‚Π΅ работСщия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€:

sudo pg_ctlcluster 11 main stop

2. Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΎΡ‚ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅:

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

3. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°:

sudo pg_ctlcluster 11 main start

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠΏΠΈΠ΅, трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π²Ρ‚ΠΎΡ€ΠΎ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅:

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° pgbackrest):

sudo pgbackrest --stanza=main backup

Π’ΠΎΠ²Π° Π΅ всичко. Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ искам Π΄Π° Π²ΠΈ напомня, Ρ‡Π΅ Π² никакъв случай Π½Π΅ сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΌ Π΄Π° сС правя Π½Π° ΡΡ‚Π°Ρ€ΡˆΠΈ dba ΠΈ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΎΠ±Π»Π°Ρ†ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠ°Ρ‚Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° самият Π°Π· Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌ Π΄Π° ΠΈΠ·ΡƒΡ‡Π°Π²Π°ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Π΅ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅, рСпликация, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Ρ‚.Π½. ΠΈ пиша ΠΌΠ°Π»ΠΊΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅, Π·Π° Π΄Π° направя малък принос към общността ΠΈ Π΄Π° оставя ΠΌΠ°Π»ΠΊΠΈ ΠΈΠ·ΠΌΠ°ΠΌΠ½ΠΈ листовС Π·Π° сСбС си.

Π’ слСдващитС статии Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° говоря Π·Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ - Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² чист ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π² S3, Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Ρ‡Ρ€Π΅Π· rsync.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€