wal-g PostgreSQL ಬ್ಯಾಕಪ್ ವ್ಯವಸ್ಥೆಗೆ ಪರಿಚಯ

WAL-G PostgreSQL ಅನ್ನು ಮೋಡಗಳಿಗೆ ಬ್ಯಾಕಪ್ ಮಾಡಲು ಸರಳ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ಸಾಧನವಾಗಿದೆ. ಅದರ ಮುಖ್ಯ ಕಾರ್ಯಚಟುವಟಿಕೆಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಇದು ಜನಪ್ರಿಯ ಸಾಧನದ ಉತ್ತರಾಧಿಕಾರಿಯಾಗಿದೆ ವಾಲ್-ಇ, ಆದರೆ ಗೋ ನಲ್ಲಿ ಪುನಃ ಬರೆಯಲಾಗಿದೆ. ಆದರೆ WAL-G - ಡೆಲ್ಟಾ ಪ್ರತಿಗಳಲ್ಲಿ ಒಂದು ಪ್ರಮುಖ ಹೊಸ ವೈಶಿಷ್ಟ್ಯವಿದೆ. ಡೆಲ್ಟಾ ಪ್ರತಿಗಳು WAL-G ಹಿಂದಿನ ಬ್ಯಾಕಪ್ ಆವೃತ್ತಿಯಿಂದ ಬದಲಾಗಿರುವ ಫೈಲ್‌ಗಳ ಪುಟಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ. ಬ್ಯಾಕಪ್‌ಗಳನ್ನು ಸಮಾನಾಂತರಗೊಳಿಸಲು WAL-G ಸಾಕಷ್ಟು ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಅಳವಡಿಸುತ್ತದೆ. WAL-G WAL-E ಗಿಂತ ಹೆಚ್ಚು ವೇಗವಾಗಿದೆ.

ವಾಲ್-ಗ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ವಿವರಗಳನ್ನು ಲೇಖನದಲ್ಲಿ ಕಾಣಬಹುದು: ನಾವು ಬ್ಯಾಕ್ಅಪ್ ಅನ್ನು ಓವರ್ಲಾಕ್ ಮಾಡುತ್ತೇವೆ. ಯಾಂಡೆಕ್ಸ್ ಉಪನ್ಯಾಸ

S3 ಶೇಖರಣಾ ಪ್ರೋಟೋಕಾಲ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಜನಪ್ರಿಯವಾಗಿದೆ. S3 ನ ಅನುಕೂಲವೆಂದರೆ API ಮೂಲಕ ಪ್ರವೇಶಿಸುವ ಸಾಮರ್ಥ್ಯ, ಇದು ಸಾರ್ವಜನಿಕ ಓದುವ ಪ್ರವೇಶವನ್ನು ಒಳಗೊಂಡಂತೆ ಸಂಗ್ರಹಣೆಯೊಂದಿಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಸಂವಹನವನ್ನು ಸಂಘಟಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಸಂಗ್ರಹಣೆಯಲ್ಲಿ ಮಾಹಿತಿಯನ್ನು ನವೀಕರಿಸುವುದು ಅಧಿಕೃತ ವ್ಯಕ್ತಿಗಳಿಂದ ಮಾತ್ರ ಸಂಭವಿಸುತ್ತದೆ.

S3 ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸುವ ಹಲವಾರು ಸಾರ್ವಜನಿಕ ಮತ್ತು ಖಾಸಗಿ ಶೇಖರಣಾ ಅಳವಡಿಕೆಗಳಿವೆ. ಇಂದು ನಾವು ಸಣ್ಣ ಸಂಗ್ರಹಣೆಯನ್ನು ಆಯೋಜಿಸಲು ಜನಪ್ರಿಯ ಪರಿಹಾರವನ್ನು ನೋಡುತ್ತೇವೆ - ಮಿನಿಯೊ.

ಒಂದೇ PostgreSQL ಸರ್ವರ್ wal-g ಅನ್ನು ಪರೀಕ್ಷಿಸಲು ಉತ್ತಮವಾಗಿದೆ ಮತ್ತು Minio ಅನ್ನು S3 ಗೆ ಬದಲಿಯಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.

ಮಿನಿಯೋ ಸರ್ವರ್

ಮಿನಿಯೊ ಸ್ಥಾಪನೆ

yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio

AccessKey ಮತ್ತು SecretKey ಅನ್ನು /etc/minio/minio.conf ನಲ್ಲಿ ಸಂಪಾದಿಸಿ

vi /etc/minio/minio.conf

Minio ಮೊದಲು ನೀವು nginx ಅನ್ನು ಬಳಸದಿದ್ದರೆ, ನೀವು ಬದಲಾಯಿಸಬೇಕಾಗಿದೆ

--address 127.0.0.1:9000

--address 0.0.0.0:9000

ಮಿನಿಯೊವನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ

systemctl start minio

Minio ವೆಬ್ ಇಂಟರ್ಫೇಸ್‌ಗೆ ಹೋಗಿ http://ip-адрес-сервера-minio:9000 ಮತ್ತು ಬಕೆಟ್ ಅನ್ನು ರಚಿಸಿ (ಉದಾಹರಣೆಗೆ, pg-backups).

ಡಿಬಿ ಸರ್ವರ್

rpm ನಲ್ಲಿ WAL-G ಅನ್ನು ನನ್ನಿಂದ ಜೋಡಿಸಲಾಗಿದೆ (ಆಂಟನ್ ಪಾಟ್ಸೆವ್). github, ಫೆಡೋರಾ COPR.

ಯಾರು RPM-ಆಧಾರಿತ ವ್ಯವಸ್ಥೆಯನ್ನು ಹೊಂದಿಲ್ಲ, ಅಧಿಕೃತವನ್ನು ಬಳಸಿ ಸೂಚನೆ ಅನುಸ್ಥಾಪನೆಯ ಮೂಲಕ.

wal-g ಬೈನರಿ ಜೊತೆಗೆ, rpm /etc/wal-gd/server-s3.conf ಫೈಲ್‌ನಿಂದ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

backup-fetch.sh
backup-list.sh
backup-push.sh
wal-fetch.sh
wal-g-run.sh
wal-push.sh

ವಾಲ್ಗ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ.

yum -y install yum-plugin-copr
yum copr enable -y antonpatsev/wal-g
yum install -y wal-g

ವಾಲ್-ಜಿ ಆವೃತ್ತಿಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ.

wal-g --version
wal-g version v0.2.14

ನಿಮ್ಮ ಅಗತ್ಯಗಳಿಗೆ /etc/wal-gd/server-s3.conf ಸಂಪಾದಿಸಿ.

ಡೇಟಾಬೇಸ್ ಕ್ಲಸ್ಟರ್ ಬಳಸುವ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ಗಳು ಮತ್ತು ಡೇಟಾ ಫೈಲ್‌ಗಳನ್ನು ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ ಕ್ಲಸ್ಟರ್ ಡೇಟಾ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಒಟ್ಟಿಗೆ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತದೆ PGDATA

#!/bin/bash

export PG_VER="9.6"

export WALE_S3_PREFIX="s3://pg-backups" # бакет, который мы создали в S3
export AWS_ACCESS_KEY_ID="xxxx" # AccessKey из /etc/minio/minio.conf 
export AWS_ENDPOINT="http://ip-адрес-сервера-minio:9000"
export AWS_S3_FORCE_PATH_STYLE="true"
export AWS_SECRET_ACCESS_KEY="yyyy" # SecretKey из /etc/minio/minio.conf

export PGDATA=/var/lib/pgsql/$PG_VER/data/
export PGHOST=/var/run/postgresql/.s.PGSQL.5432 # Сокет для подключения к PostgreSQL

export WALG_UPLOAD_CONCURRENCY=2 # Кол-во потоков для закачки 
export WALG_DOWNLOAD_CONCURRENCY=2 # Кол-во потоков для скачивания
export WALG_UPLOAD_DISK_CONCURRENCY=2 # Кол-во потоков на диске для закачки
export WALG_DELTA_MAX_STEPS=7
export WALG_COMPRESSION_METHOD=brotli # Какой метод сжатия использовать.

WAL-G ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವಾಗ, ನೀವು WALG_DELTA_MAX_STEPS ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೀರಿ - ಮೂಲ ಬ್ಯಾಕಪ್‌ನಿಂದ ಡೆಲ್ಟಾ ಬ್ಯಾಕಪ್ ಗರಿಷ್ಠವಾಗಿರುವ ಹಂತಗಳ ಸಂಖ್ಯೆ ಮತ್ತು ಡೆಲ್ಟಾ ನಕಲು ನೀತಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ. ಒಂದೋ ನೀವು ಕೊನೆಯ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಡೆಲ್ಟಾದಿಂದ ನಕಲು ಮಾಡುತ್ತೀರಿ ಅಥವಾ ಮೂಲ ಪೂರ್ಣ ಬ್ಯಾಕಪ್‌ನಿಂದ ನೀವು ಡೆಲ್ಟಾವನ್ನು ಮಾಡುತ್ತೀರಿ. ನಿಮ್ಮ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಡೇಟಾಬೇಸ್‌ನ ಒಂದೇ ಘಟಕವು ಯಾವಾಗಲೂ ಬದಲಾಗುತ್ತಿರುವಾಗ, ಅದೇ ಡೇಟಾ ನಿರಂತರವಾಗಿ ಬದಲಾಗುತ್ತಿರುವ ಸಂದರ್ಭದಲ್ಲಿ ಇದು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ.

ಡೇಟಾಬೇಸ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ.

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.
noarch.rpm
yum install -y postgresql96 postgresql96-server mc

ನಾವು ಡೇಟಾಬೇಸ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ.

/usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK

ನೀವು 1 ಸರ್ವರ್‌ನಲ್ಲಿ ಪರೀಕ್ಷಿಸುತ್ತಿದ್ದರೆ, ನಂತರ ನೀವು PostgreSQL ಆವೃತ್ತಿ 10 ಕ್ಕಿಂತ ಕಡಿಮೆ ಮತ್ತು PostgreSQL ಆವೃತ್ತಿ 10 ಮತ್ತು ಹಳೆಯದಕ್ಕಾಗಿ ಪ್ರತಿಕೃತಿಗಾಗಿ ಆರ್ಕೈವ್ ಮಾಡಲು wal_level ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು ಮರುಸಂರಚಿಸುವ ಅಗತ್ಯವಿದೆ.

wal_level = archive

PostgreSQL ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರತಿ 60 ಸೆಕೆಂಡುಗಳಿಗೊಮ್ಮೆ WAL ಆರ್ಕೈವ್‌ಗಳನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡೋಣ. ಉತ್ಪನ್ನದಲ್ಲಿ, ನೀವು ವಿಭಿನ್ನ ಆರ್ಕೈವ್_ಟೈಮ್‌ಔಟ್ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರುತ್ತೀರಿ.

archive_mode = on
archive_command = '/usr/local/bin/wal-push.sh %p'
archive_timeout = 60 # Каждые 60 секунд будет выполнятся команда archive_command.

PostgreSQL ಅನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ

systemctl start postgresql-9.6

ಪ್ರತ್ಯೇಕ ಕನ್ಸೋಲ್‌ನಲ್ಲಿ, ದೋಷಗಳಿಗಾಗಿ ನಾವು PostgreSQL ಲಾಗ್‌ಗಳನ್ನು ನೋಡುತ್ತೇವೆ: (postgresql-Wed.log ಅನ್ನು ಪ್ರಸ್ತುತದಕ್ಕೆ ಬದಲಾಯಿಸಿ).

tail -fn100 /var/lib/pgsql/9.6/data/pg_log/postgresql-Wed.log

psql ಗೆ ಹೋಗೋಣ.

su - postgres
psql

psql ನಲ್ಲಿ ಡೇಟಾಬೇಸ್ ರಚಿಸಿ

ಡೇಟಾಬೇಸ್ ಪರೀಕ್ಷೆ 1 ರಲ್ಲಿ ಕೋಷ್ಟಕವನ್ನು ರಚಿಸಿ.

create database test1;

ಡೇಟಾಬೇಸ್ ಪರೀಕ್ಷೆಗೆ ಬದಲಿಸಿ.

postgres=# c test1;

ನಾವು ಟೇಬಲ್ ಇಂಡೆಕ್ಸಿಂಗ್_ಟೇಬಲ್ ಅನ್ನು ರಚಿಸುತ್ತೇವೆ.

test1=# CREATE TABLE indexing_table(created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW());

ಡೇಟಾವನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ.

ನಾವು ಡೇಟಾವನ್ನು ಸೇರಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ. ನಾವು 10-20 ನಿಮಿಷಗಳ ಕಾಲ ಕಾಯುತ್ತಿದ್ದೇವೆ.

#!/bin/bash
# postgres
while true; do
psql -U postgres -d test1 -c "INSERT INTO indexing_table(created_at) VALUES (CURRENT_TIMESTAMP);"
sleep 60;
done

ಪೂರ್ಣ ಬ್ಯಾಕಪ್ ಮಾಡಲು ಮರೆಯದಿರಿ.

su - postgres
/usr/local/bin/backup-push.sh

ನಾವು ಡೇಟಾಬೇಸ್ ಪರೀಕ್ಷೆ 1 ರಲ್ಲಿ ಕೋಷ್ಟಕದಲ್ಲಿನ ದಾಖಲೆಗಳನ್ನು ನೋಡುತ್ತೇವೆ

select * from indexing_table;
2020-01-29 09:41:25.226198+
2020-01-29 09:42:25.336989+
2020-01-29 09:43:25.356069+
2020-01-29 09:44:25.37381+
2020-01-29 09:45:25.392944+
2020-01-29 09:46:25.412327+
2020-01-29 09:47:25.432564+
2020-01-29 09:48:25.451985+
2020-01-29 09:49:25.472653+
2020-01-29 09:50:25.491974+
2020-01-29 09:51:25.510178+

ಸ್ಟ್ರಿಂಗ್ ಪ್ರಸ್ತುತ ಸಮಯ.

ಸಂಪೂರ್ಣ ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ನೋಡಿ

/usr/local/bin/backup-list.sh

ಚೇತರಿಕೆ ಪರೀಕ್ಷೆ

ಲಭ್ಯವಿರುವ ಎಲ್ಲಾ WAL ಅನ್ನು ರೋಲಿಂಗ್ ಮಾಡುವ ಮೂಲಕ ಪೂರ್ಣ ಚೇತರಿಕೆ.

Postgresql ನಿಲ್ಲಿಸಿ.

/var/lib/pgsql/9.6/data ಫೋಲ್ಡರ್‌ನಿಂದ ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ.

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಬಳಕೆದಾರರಂತೆ /usr/local/bin/backup-fetch.sh ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿ.

su - postgres
/usr/local/bin/backup-fetch.sh

ಬ್ಯಾಕಪ್ ಹೊರತೆಗೆಯುವಿಕೆ ಪೂರ್ಣಗೊಂಡಿದೆ.

ಈ ಕೆಳಗಿನ ವಿಷಯದೊಂದಿಗೆ /var/lib/pgsql/9.6/data ಫೋಲ್ಡರ್‌ಗೆ recovery.conf ಸೇರಿಸಿ.

restore_command = '/usr/local/bin/wal-fetch.sh "%f" "%p"'

ನಾವು PostgreSQL ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ. PostgreSQL ಆರ್ಕೈವ್ ಮಾಡಲಾದ WAL ಗಳಿಂದ ಮರುಪ್ರಾಪ್ತಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಮಾತ್ರ ಡೇಟಾಬೇಸ್ ತೆರೆಯುತ್ತದೆ.

systemctl start postgresql-9.6
tail -fn100 /var/lib/pgsql/9.6/data/pg_log/postgresql-Wed.log

ನಿರ್ದಿಷ್ಟ ಸಮಯದವರೆಗೆ ಚೇತರಿಕೆ.

ನಾವು ನಿರ್ದಿಷ್ಟ ನಿಮಿಷದವರೆಗೆ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ಬಯಸಿದರೆ, ನಂತರ ನಾವು recovery_target_time ನಿಯತಾಂಕವನ್ನು recovery.conf ಗೆ ಸೇರಿಸುತ್ತೇವೆ - ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ಯಾವ ಸಮಯದಲ್ಲಿ ನಾವು ಸೂಚಿಸುತ್ತೇವೆ.

restore_command = '/usr/local/bin/wal-fetch.sh "%f" "%p"'
recovery_target_time = '2020-01-29 09:46:25'

ಚೇತರಿಕೆಯ ನಂತರ, ಟೇಬಲ್ ಇಂಡೆಕ್ಸಿಂಗ್_ಟೇಬಲ್ ಅನ್ನು ನೋಡಿ

 2020-01-29 09:41:25.226198+00
 2020-01-29 09:42:25.336989+00
 2020-01-29 09:43:25.356069+00
 2020-01-29 09:44:25.37381+00
 2020-01-29 09:45:25.392944+00

ನಾವು PostgreSQL ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ. PostgreSQL ಆರ್ಕೈವ್ ಮಾಡಲಾದ WAL ಗಳಿಂದ ಮರುಪ್ರಾಪ್ತಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಮಾತ್ರ ಡೇಟಾಬೇಸ್ ತೆರೆಯುತ್ತದೆ.

systemctl start postgresql-9.6
tail -fn100 /var/lib/pgsql/9.6/data/pg_log/postgresql-Wed.log

ಪರೀಕ್ಷೆ

ಇಲ್ಲಿ ವಿವರಿಸಿದಂತೆ 1GB ಡೇಟಾಬೇಸ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ https://gist.github.com/ololobus/5b25c432f208d7eb31051a5f238dffff

1GB ಡೇಟಾವನ್ನು ರಚಿಸಿದ ನಂತರ ಬಕೆಟ್ ಗಾತ್ರವನ್ನು ವಿನಂತಿಸಲಾಗುತ್ತಿದೆ.

postgres=# SELECT pg_size_pretty(pg_database_size('test1'));
pg_size_pretty
----------------
1003 MB

s4cmd — бесплатный инструмент командной строки для работы с данными, расположенными в хранилище Amazon S3. Утилита написана на языке программирования python, и благодаря этому может использоваться в операционных системах и Windowsಮತ್ತು Linux.

s4cmd ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ

pip install s4cmd

LZ4

s4cmd --endpoint-url=http://ip-адрес-сервера-minio:9000 --access-key=xxxx --secret-key=yyyy du -r s3://pg-backups
840540822       s3://pg-backups/wal_005/
840 МБ в формате lz4 только WAL логов

Полный бекап с lz4 - 1GB данных
time backup_push.sh
real 0m18.582s

Размер S3 бакета после полного бекапа

581480085       s3://pg-backups/basebackups_005/
842374424   s3://pg-backups/wal_005
581 МБ занимает полный бекап

LZMA

После генерации 1ГБ данных
338413694       s3://pg-backups/wal_005/
338 мб логов в формате lzma

Время генерации полного бекапа
time backup_push.sh
real    5m25.054s

Размер бакета в S3
270310495       s3://pg-backups/basebackups_005/
433485092   s3://pg-backups/wal_005/

270 мб занимает полный бекап в формате lzma

ಬ್ರೊಟ್ಲಿ

После генерации 1ГБ данных
459229886       s3://pg-backups/wal_005/
459 мб логов в формате brotli

Время генерации полного бекапа
real    0m23.408s

Размер бакета в S3
312960942       s3://pg-backups/basebackups_005/
459309262   s3://pg-backups/wal_005/

312 мб занимает полный бекап в формате brotli

ಚಾರ್ಟ್ನಲ್ಲಿ ಫಲಿತಾಂಶಗಳ ಹೋಲಿಕೆ.

wal-g PostgreSQL ಬ್ಯಾಕಪ್ ವ್ಯವಸ್ಥೆಗೆ ಪರಿಚಯ

ನೀವು ನೋಡುವಂತೆ, ಬ್ರೋಟ್ಲಿಯನ್ನು LZMA ಗೆ ಹೋಲಿಸಬಹುದು, ಆದರೆ ಬ್ಯಾಕಪ್ ಅನ್ನು LZ4 ಸಮಯದಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ.

ರಷ್ಯನ್-ಮಾತನಾಡುವ PostgreSQL ಸಮುದಾಯದ ಚಾಟ್: https://t.me/pgsql

ನೀವು ಬಳಸಿದರೆ ದಯವಿಟ್ಟು ಗಿಥಬ್‌ಗೆ ನಕ್ಷತ್ರವನ್ನು ನೀಡಿ ವಾಲ್-ಜಿ

ಮೂಲ: www.habr.com

DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ಸೈಟ್‌ಗಳಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ 🔥 DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ವೆಬ್‌ಸೈಟ್ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ | ProHoster