ΠΠΈΡΠΊΠ»Π΅ΠΉΠΌΠ΅Ρ
Π― β ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Π― ΠΏΠΈΡΡ ΠΊΠΎΠ΄, Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡ Π»ΠΈΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π― Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅, dba. ΠΠΎβ¦
Π’Π°ΠΊ Π²ΡΡΠ»ΠΎ, ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ postgresql Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠ±Π»Π°ΠΊΠΎΠ² β Π΄Π΅ΡΠΆΠΈ SSH ΠΈ ΡΠ΄Π΅Π»Π°ΠΉ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΈ Π½Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΎ Π΄Π΅Π½Π΅Π³. Π§ΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π² ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ? ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΏΠΈΡ Π°Π΅ΠΌ pgdump Π² cron, ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ Π±ΡΠΊΠ°ΠΏΠΈΠΌ Π²ΡΠ΅ Π² Π°ΡΡ ΠΈΠ² ΠΈ Π΅ΡΠ»ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΡΠ»ΠΈΡΡ β ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΡΠΎΡ Π°ΡΡ ΠΈΠ² ΠΊΡΠ΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠ΄Π°Π»ΡΡΠ΅.
Π ΡΡΠΎΡ ΡΠ°Π· ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΎΡΠ»Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎ ΠΏΠ»Π°Π½Π°ΠΌ Π±Π°Π·Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ»Π° ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° +- 100 ΠΠ Π² Π΄Π΅Π½Ρ. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΠΆΠ΅ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π±ΡΠΊΠ°ΠΏΠΈΡΡ Π²ΡΠ΅ pgdump’ΠΎΠΌ ΠΎΡΠΏΠ°Π΄Π΅Ρ. Π’ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ Π±ΡΠΊΠ°ΠΏΡ.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ? ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ Π±ΡΠΊΠ°ΠΏ β ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π½Π΅ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, Π° ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΎΠ²ΡΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ.
ΠΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π‘ΠΠΠΠ Π¨ΠΠΠΠ Π½Π΅ ΠΆΠ΅Π»Π°ΡΡΠΈΠΉ (Π½Π° ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ) ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΡΠΎΠ½ΠΊΠΎΡΡΡΡ postgres Ρ Ρ ΠΎΡΠ΅Π» Π½Π°ΠΉΡΠΈ Π·Π΅Π»Π΅Π½ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ. ΠΡ, Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π² AWS, DigitalOcean: Π½Π°ΠΆΠ°Π» ΠΎΠ΄Π½Ρ ΠΊΠ½ΠΎΠΏΠΊΡ β ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, Π½Π°ΠΆΠ°Π» Π²ΡΠΎΡΡΡ β Π½Π°ΡΡΡΠΎΠΈΠ» Π±ΡΠΊΠ°ΠΏΡ, ΡΡΠ΅ΡΡΡ β Π²ΡΠ΅ ΠΎΡΠΊΠ°ΡΠΈΠ» Π½Π° ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ² Π½Π°Π·Π°Π΄. ΠΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ³ΠΎ GUIΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Ρ Π½Π΅ Π½Π°ΡΠ΅Π». ΠΡΠ»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ (Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΈΠ»ΠΈ Π΄Π΅ΡΠ΅Π²ΡΠΉ) β Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
ΠΠΎΠ³ΡΠ³Π»ΠΈΠ² Ρ Π½Π°ΡΠ΅Π» Π΄Π²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° pgbarman ΠΈ pgbackrest. Π‘ ΠΏΠ΅ΡΠ²ΡΠΌ Ρ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π·Π°Π΄Π°Π»ΠΎΡΡ (ΠΎΡΠ΅Π½Ρ ΡΠΊΡΠ΄Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΡΡΠ°Π»ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ΄Π½ΡΡΡ ΠΏΠΎ ΡΡΠ°ΡΠΈΠ½Π½ΡΠΌ ΠΌΠ°Π½ΡΠ°Π»Π°ΠΌ), Π° Π²ΠΎΡ Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅, Π½ΠΎ ΠΈ Π½Π΅ Π±Π΅Π· ΠΈΠ·ΡΡΠ½Π°. Π§ΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΡΡ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈ Π±ΡΠ»Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ.
ΠΠΎΡΠΈΡΠ°Π² Π΄Π°Π½Π½ΡΡ ΡΡΠ°ΡΡΡ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ Π΄Π΅Π»Π°ΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ Π±Π΅ΠΊΠ°ΠΏΡ, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ (ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ Π±ΡΠΊΠ°ΠΏΠ°ΠΌΠΈ) ΠΈ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°
ΠΠ»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠ°Π½ΡΠ°Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π²Π° VPS. ΠΠ΅ΡΠ²ΡΠΉ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ (ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ Π»Π΅ΠΆΠ°Ρ Π±ΡΠΊΠ°ΠΏΡ), Π° Π²ΡΠΎΡΠΎΠΉ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΌ ΡΠ΅ΡΠ²Π΅Ρ Ρ postgres (Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ 11 Π²Π΅ΡΡΠΈΡ postgres).
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ρ postgres Ρ Π²Π°Ρ Π΅ΡΡΡ root, sudo ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ postgres ΠΈ ΡΠ°ΠΌ postgres ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ postgres ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ postgresql), Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π΅ΡΡΡ root ΠΈ 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. Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ pgbackrest:
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
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· passwordless 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 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ):
ΠΠ½Π΅ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ 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
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (pgbackrest ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ):
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° main:
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
Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ Π² Π²ΡΠ²ΠΎΠ΄Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΡΡΡΠΎΠΊΡ Β«check command end: completed successfullyΒ».
Π£ΡΡΠ°Π»ΠΈ? ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΌΡ.
ΠΠ΅Π»Π°Π΅ΠΌ Π±ΡΠΊΠ°ΠΏ
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (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
ΠΠ° ΡΡΠΎΠΌ Π²ΡΠ΅. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΡ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Ρ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΏΡΡΠ°ΡΡΡ ΡΡΡΠΎΠΈΡΡ ΠΈΠ· ΡΠ΅Π±Ρ senior dba ΠΈ ΠΏΡΠΈ ΠΌΠ°Π»Π΅ΠΉΡΠ΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΠΊΠ°. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°ΠΌ Π½Π°ΡΠΈΠ½Π°Ρ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΠΌΡ Π²ΡΠΎΠ΄Π΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ Ρ.ΠΏ. ΠΈ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ ΠΏΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΡΡΠ΅ΡΡ, Π΄Π°Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄Π»Ρ ΡΠ΅Π±Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΡΠ°ΡΡΡΡ
ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠΈΡΠ°Ρ
β Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠΈΡΡΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ, ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠΊΠ°ΠΏΠΎΠ² ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° S3, Π±ΡΠΊΠ°ΠΏΡ ΡΠ΅ΡΠ΅Π· rsync.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com