pgbackrest ಜೊತೆಗೆ ಹೆಚ್ಚುತ್ತಿರುವ postgresql ಬ್ಯಾಕಪ್‌ಗಳು - ಡೆವಲಪರ್‌ನಿಂದ ಯುವ ಹೋರಾಟಗಾರರಿಗೆ ಕೋರ್ಸ್

ಹಕ್ಕು ನಿರಾಕರಣೆ

ನಾನು ಡೆವಲಪರ್ ಆಗಿದ್ದೇನೆ. ನಾನು ಕೋಡ್ ಅನ್ನು ಬರೆಯುತ್ತೇನೆ ಮತ್ತು ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಬಳಕೆದಾರರಂತೆ ಮಾತ್ರ ಸಂವಹನ ನಡೆಸುತ್ತೇನೆ. ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ನಾನು ಸಿಸ್ಟಮ್ ಅಡ್ಮಿನಿಸ್ಟ್ರೇಟರ್ ಎಂದು ನಟಿಸುವುದಿಲ್ಲ, ಹೆಚ್ಚು ಕಡಿಮೆ ಡಿಬಿಎ. ಆದರೆ…

ನಾನು postgresql ಡೇಟಾಬೇಸ್‌ನ ಬ್ಯಾಕಪ್ ಅನ್ನು ಸಂಘಟಿಸುವ ಅಗತ್ಯವಿದೆ ಎಂದು ಅದು ಸಂಭವಿಸಿದೆ. ಯಾವುದೇ ಮೋಡಗಳಿಲ್ಲ - ಕೇವಲ SSH ಅನ್ನು ಬಳಸಿ ಮತ್ತು ಹಣವನ್ನು ಕೇಳದೆ ಎಲ್ಲವೂ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಅಂತಹ ಸಂದರ್ಭಗಳಲ್ಲಿ ನಾವು ಏನು ಮಾಡುತ್ತೇವೆ? ಅದು ಸರಿ, ನಾವು pgdump ಅನ್ನು ಕ್ರಾನ್‌ಗೆ ತಳ್ಳುತ್ತೇವೆ, ಪ್ರತಿದಿನ ಆರ್ಕೈವ್‌ಗೆ ಎಲ್ಲವನ್ನೂ ಬ್ಯಾಕಪ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ನಾವು ಸಂಪೂರ್ಣವಾಗಿ ಕಳೆದುಹೋದರೆ, ನಾವು ಈ ಆರ್ಕೈವ್ ಅನ್ನು ಎಲ್ಲೋ ದೂರಕ್ಕೆ ಕಳುಹಿಸುತ್ತೇವೆ.

ಈ ಬಾರಿ ತೊಂದರೆ ಏನೆಂದರೆ, ಯೋಜನೆಗಳ ಪ್ರಕಾರ, ಡೇಟಾಬೇಸ್ ದಿನಕ್ಕೆ ಸುಮಾರು +- 100 MB ಯಷ್ಟು ಬೆಳೆಯಬೇಕಿತ್ತು. ಸಹಜವಾಗಿ, ಒಂದೆರಡು ವಾರಗಳ ನಂತರ pgdump ನೊಂದಿಗೆ ಎಲ್ಲವನ್ನೂ ಬ್ಯಾಕಪ್ ಮಾಡುವ ಬಯಕೆ ಕಣ್ಮರೆಯಾಗುತ್ತದೆ. ಇಲ್ಲಿಯೇ ಹೆಚ್ಚುತ್ತಿರುವ ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳು ರಕ್ಷಣೆಗೆ ಬರುತ್ತವೆ.

ಆಸಕ್ತಿದಾಯಕ? ಬೆಕ್ಕಿಗೆ ಸ್ವಾಗತ.

ಎಲ್ಲಾ ಮೂಲ ಫೈಲ್‌ಗಳನ್ನು ನಕಲು ಮಾಡದಿದ್ದಾಗ ಇನ್‌ಕ್ರಿಮೆಂಟಲ್ ಬ್ಯಾಕ್‌ಅಪ್ ಒಂದು ರೀತಿಯ ಬ್ಯಾಕಪ್ ಆಗಿದೆ, ಆದರೆ ಹೊಸದನ್ನು ಮಾತ್ರ ಮತ್ತು ಹಿಂದಿನ ನಕಲನ್ನು ರಚಿಸಿದಾಗಿನಿಂದ ಬದಲಾಯಿಸಲಾಗಿದೆ.

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್‌ನ ಜಟಿಲತೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು (ಆ ಸಮಯದಲ್ಲಿ) ಸಂಪೂರ್ಣವಾಗಿ ಇಷ್ಟವಿಲ್ಲದ ಯಾವುದೇ ಡೆವಲಪರ್‌ನಂತೆ, ನಾನು ಹಸಿರು ಬಟನ್ ಅನ್ನು ಹುಡುಕಲು ಬಯಸುತ್ತೇನೆ. ಸರಿ, ನಿಮಗೆ ಗೊತ್ತಾ, AWS, DigitalOcean ನಲ್ಲಿರುವಂತೆ: ನೀವು ಒಂದು ಗುಂಡಿಯನ್ನು ಒತ್ತಿದಿರಿ - ನೀವು ಪ್ರತಿಕೃತಿಯನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೀರಿ, ನೀವು ಎರಡನೆಯದನ್ನು ಒತ್ತಿದಿರಿ - ನೀವು ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ, ಮೂರನೆಯದು - ನೀವು ಎಲ್ಲವನ್ನೂ ಒಂದೆರಡು ಗಂಟೆಗಳ ಹಿಂದೆ ಸುತ್ತಿಕೊಂಡಿದ್ದೀರಿ. ನನಗೆ ಬಟನ್ ಅಥವಾ ಸುಂದರವಾದ GUI ಟೂಲ್ ಕಂಡುಬಂದಿಲ್ಲ. ನಿಮಗೆ ಒಂದು (ಉಚಿತ ಅಥವಾ ಅಗ್ಗದ) ತಿಳಿದಿದ್ದರೆ, ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಅದರ ಬಗ್ಗೆ ಬರೆಯಿರಿ.

ಗೂಗ್ಲಿಂಗ್ ಮಾಡಿದ ನಂತರ ನಾನು ಎರಡು ಉಪಕರಣಗಳನ್ನು ಕಂಡುಕೊಂಡೆ pgbarman и pgbackrest. ನಾನು ಮೊದಲನೆಯದರೊಂದಿಗೆ ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ (ಬಹಳ ವಿರಳವಾದ ದಸ್ತಾವೇಜನ್ನು, ನಾನು ಹಳೆಯ ಕೈಪಿಡಿಗಳ ಪ್ರಕಾರ ಎಲ್ಲವನ್ನೂ ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದೆ), ಆದರೆ ಎರಡನೆಯದರೊಂದಿಗೆ ದಸ್ತಾವೇಜನ್ನು ಸಮನಾಗಿರುತ್ತದೆ, ಆದರೆ ನ್ಯೂನತೆಗಳಿಲ್ಲದೆ ಅಲ್ಲ. ಇದೇ ರೀತಿಯ ಕೆಲಸವನ್ನು ಎದುರಿಸುತ್ತಿರುವವರ ಕೆಲಸವನ್ನು ಸರಳೀಕರಿಸಲು, ಈ ಲೇಖನವನ್ನು ಬರೆಯಲಾಗಿದೆ.

ಈ ಲೇಖನವನ್ನು ಓದಿದ ನಂತರ, ಹೆಚ್ಚುತ್ತಿರುವ ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳನ್ನು ಹೇಗೆ ಮಾಡುವುದು, ಅವುಗಳನ್ನು ರಿಮೋಟ್ ಸರ್ವರ್‌ಗೆ (ಬ್ಯಾಕಪ್‌ಗಳೊಂದಿಗೆ ರೆಪೊಸಿಟರಿ) ಉಳಿಸುವುದು ಮತ್ತು ಡೇಟಾ ನಷ್ಟ ಅಥವಾ ಮುಖ್ಯ ಸರ್ವರ್‌ನಲ್ಲಿ ಇತರ ಸಮಸ್ಯೆಗಳ ಸಂದರ್ಭದಲ್ಲಿ ಅವುಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸುವುದು ಹೇಗೆ ಎಂದು ನೀವು ಕಲಿಯುವಿರಿ.

ತರಬೇತಿ

ಕೈಪಿಡಿಯನ್ನು ಪುನರುತ್ಪಾದಿಸಲು ನಿಮಗೆ ಎರಡು VPS ಅಗತ್ಯವಿದೆ. ಮೊದಲನೆಯದು ಶೇಖರಣೆಯಾಗಿದೆ (ಬ್ಯಾಕಪ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುವ ರೆಪೊಸಿಟರಿ), ಮತ್ತು ಎರಡನೆಯದು, ವಾಸ್ತವವಾಗಿ, ಪೋಸ್ಟ್‌ಗ್ರೆಸ್‌ನೊಂದಿಗೆ ಸರ್ವರ್ ಸ್ವತಃ (ನನ್ನ ಸಂದರ್ಭದಲ್ಲಿ, ಪೋಸ್ಟ್‌ಗ್ರೆಸ್‌ನ ಆವೃತ್ತಿ 11).

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಹೊಂದಿರುವ ಸರ್ವರ್‌ನಲ್ಲಿ ನೀವು ರೂಟ್, ಸುಡೋ ಬಳಕೆದಾರ, ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಬಳಕೆದಾರರನ್ನು ಹೊಂದಿದ್ದೀರಿ ಮತ್ತು ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಅನ್ನು ಸ್ವತಃ ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಎಂದು ಭಾವಿಸಲಾಗಿದೆ (ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ಕ್ಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವಾಗ ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಬಳಕೆದಾರರನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾಗುತ್ತದೆ), ಮತ್ತು ರೆಪೊಸಿಟರಿ ಸರ್ವರ್‌ನಲ್ಲಿ ರೂಟ್ ಮತ್ತು ಸುಡೋ ಬಳಕೆದಾರ (ಕೈಪಿಡಿಯಲ್ಲಿ) ಬಳಕೆದಾರ ಹೆಸರು 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 ಗೆ ಪರ್ಲ್ ಅಗತ್ಯವಿದೆ. ಸ್ಥಾಪಿಸು:

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

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ (ಸುಡೋ ಬಳಕೆದಾರ ಅಥವಾ ರೂಟ್):

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್‌ನೊಂದಿಗೆ ಸರ್ವರ್‌ನಲ್ಲಿ pgbackrest ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಪ್ರಕ್ರಿಯೆಯು ರೆಪೊಸಿಟರಿಯಲ್ಲಿನ ಅನುಸ್ಥಾಪನಾ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹೋಲುತ್ತದೆ (ಹೌದು, 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 ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡಲು, ಕೀ ಫೈಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ ಮತ್ತು ರೆಪೊಸಿಟರಿಯ ನಡುವಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಅವಶ್ಯಕ.

ರೆಪೊಸಿಟರಿ (ಬಳಕೆದಾರ pgbackrest):

ಪ್ರಮುಖ ಜೋಡಿಯನ್ನು ರಚಿಸಿ:

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

ಎಚ್ಚರಿಕೆ ನಾವು ಮೇಲಿನ ಆಜ್ಞೆಗಳನ್ನು 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 ""

ರೆಪೊಸಿಟರಿ (ಸುಡೋ ಬಳಕೆದಾರ):

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್‌ನ ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ರೆಪೊಸಿಟರಿ ಸರ್ವರ್‌ಗೆ ನಕಲಿಸಿ:

(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

ಈ ಹಂತದಲ್ಲಿ ರೂಟ್ ಬಳಕೆದಾರರಿಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಾಗಿ ನಿಮ್ಮನ್ನು ಕೇಳಲಾಗುತ್ತದೆ. ನೀವು ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್‌ನ ಮೂಲ ಬಳಕೆದಾರರ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಬೇಕಾಗಿದೆ!

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ (ಸುಡೋ ಬಳಕೆದಾರ):

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್‌ನೊಂದಿಗೆ ಸರ್ವರ್‌ಗೆ ರೆಪೊಸಿಟರಿ ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ನಕಲಿಸಿ:

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

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ (ಮೂಲ ಬಳಕೆದಾರ, ಪ್ರಯೋಗದ ಶುದ್ಧತೆಗಾಗಿ):

sudo -u postgres ssh pgbackrest@<repository_server_ip>

ಸಮಸ್ಯೆಗಳಿಲ್ಲದೆ ನಾವು ಪ್ರವೇಶವನ್ನು ಪಡೆಯುತ್ತೇವೆ ಎಂದು ನಾವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುತ್ತೇವೆ.

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ (ಸುಡೋ ಬಳಕೆದಾರ ಅಥವಾ ರೂಟ್):

1. ಬಾಹ್ಯ 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 # Параметр, указывающий сколько хранить полных бэкапов. Т.е. если у вас есть два полных бэкапа и вы создаете третий, то самый старый бэкап будет удален. Можно произносить как "хранить не более двух бэкапов" - по аналогии с ротациями логов. Спасибо @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

ತಪಾಸಣೆ

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ (ಸುಡೋ ಬಳಕೆದಾರ ಅಥವಾ ರೂಟ್):

ನಾವು ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್‌ನಲ್ಲಿ ಪರಿಶೀಲಿಸುತ್ತೇವೆ:

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

ಬ್ಯಾಕಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಸರ್ವರ್ (ಸುಡೋ ಬಳಕೆದಾರ ಅಥವಾ ರೂಟ್):

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

ಪ್ರಮುಖ! ಚೇತರಿಕೆಯ ನಂತರ, ಡೇಟಾಬೇಸ್ ಮರುಪ್ರಾಪ್ತಿ ಮೋಡ್‌ನಲ್ಲಿ ಸಿಲುಕಿಕೊಳ್ಳಬಹುದು (ದೋಷಗಳಂತಹ ದೋಷಗಳಿವೆ: ಓದಲು-ಮಾತ್ರ ವಹಿವಾಟಿನಲ್ಲಿ ಡ್ರಾಪ್ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ). ನಿಜ ಹೇಳಬೇಕೆಂದರೆ, ಇದು ಯಾವುದಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ ಎಂದು ನನಗೆ ಇನ್ನೂ ಅರ್ಥವಾಗಿಲ್ಲ. ಪರಿಹಾರವು ಈ ಕೆಳಗಿನಂತಿರುತ್ತದೆ (ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ ನೀವು ಸ್ವಲ್ಪ ಕಾಯಬೇಕಾಗುತ್ತದೆ):

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

ಅಷ್ಟೇ. ಕೊನೆಯಲ್ಲಿ, ನಾನು ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಹಿರಿಯ ಡಿಬಿಎ ಎಂದು ನಟಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿಲ್ಲ ಮತ್ತು ಸಣ್ಣದೊಂದು ಅವಕಾಶದಲ್ಲಿ ಮೋಡಗಳನ್ನು ಬಳಸುತ್ತೇನೆ ಎಂದು ನಾನು ನಿಮಗೆ ನೆನಪಿಸಲು ಬಯಸುತ್ತೇನೆ. ಪ್ರಸ್ತುತ, ನಾನು ಬ್ಯಾಕ್ಅಪ್, ಪುನರಾವರ್ತನೆ, ಮೇಲ್ವಿಚಾರಣೆ ಇತ್ಯಾದಿಗಳಂತಹ ವಿವಿಧ ವಿಷಯಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡಲು ಪ್ರಾರಂಭಿಸುತ್ತಿದ್ದೇನೆ. ಮತ್ತು ಸಮುದಾಯಕ್ಕೆ ಸಣ್ಣ ಕೊಡುಗೆ ನೀಡಲು ಮತ್ತು ನನಗಾಗಿ ಸಣ್ಣ ಚೀಟ್ ಶೀಟ್‌ಗಳನ್ನು ಬಿಡಲು ನಾನು ಫಲಿತಾಂಶಗಳ ಬಗ್ಗೆ ಸಣ್ಣ ವರದಿಗಳನ್ನು ಬರೆಯುತ್ತೇನೆ.

ಮುಂದಿನ ಲೇಖನಗಳಲ್ಲಿ ನಾನು ಹೆಚ್ಚುವರಿ ವೈಶಿಷ್ಟ್ಯಗಳ ಬಗ್ಗೆ ಮಾತನಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ - ಕ್ಲೀನ್ ಕ್ಲಸ್ಟರ್‌ಗೆ ಡೇಟಾ ಮರುಪಡೆಯುವಿಕೆ, ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಮತ್ತು S3 ಗೆ ಪ್ರಕಟಿಸುವುದು, rsync ಮೂಲಕ ಬ್ಯಾಕಪ್‌ಗಳು.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ