wal-g PostgreSQL ๋ฐฑ์—… ์‹œ์Šคํ…œ ์†Œ๊ฐœ

์›”์ง€ PostgreSQL์„ ํด๋ผ์šฐ๋“œ์— ๋ฐฑ์—…ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ ์ธก๋ฉด์—์„œ ์ธ๊ธฐ ์žˆ๋Š” ๋„๊ตฌ์˜ ์ƒ์†์ž์ž…๋‹ˆ๋‹ค. ์›จ์ผ์ด์ง€๋งŒ Go๋กœ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ WAL-G์—๋Š” ๋ธํƒ€ ๋ณต์‚ฌ๋ผ๋Š” ์ค‘์š”ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธํƒ€ ๋ณต์‚ฌ๋ณธ ์›”์ง€ ์ด์ „ ๋ฒ„์ „์˜ ๋ฐฑ์—… ์ดํ›„ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ํŽ˜์ด์ง€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. WAL-G๋Š” ๋ฐฑ์—… ๋ณ‘๋ ฌํ™”๋ฅผ ์œ„ํ•ด ์ƒ๋‹นํžˆ ๋งŽ์€ ๊ธฐ์ˆ ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. WAL-G๋Š” WAL-E๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

wal-g์˜ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๊ธฐ์‚ฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—…์„ ๊ฐ€์†ํ™”ํ•ฉ๋‹ˆ๋‹ค. Yandex ๊ฐ•์˜

S3 ์Šคํ† ๋ฆฌ์ง€ ํ”„๋กœํ† ์ฝœ์€ ๋ฐ์ดํ„ฐ ์ €์žฅ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. S3์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” API๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณต๊ฐœ ์ฝ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€์™€์˜ ์œ ์—ฐํ•œ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์Šคํ† ๋ฆฌ์ง€์˜ ์ •๋ณด ์—…๋ฐ์ดํŠธ๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์‚ฌ๋žŒ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

S3 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ณต์šฉ ๋ฐ ๊ฐœ์ธ ์ €์žฅ์†Œ ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์†Œ๊ทœ๋ชจ ์Šคํ† ๋ฆฌ์ง€ ์ •๋ฆฌ๋ฅผ ์œ„ํ•œ ์ธ๊ธฐ ์žˆ๋Š” ์†”๋ฃจ์…˜์ธ Minio๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

wal-g ํ…Œ์ŠคํŠธ์—๋Š” ๋‹จ์ผ PostgreSQL ์„œ๋ฒ„๊ฐ€ ์ ํ•ฉํ•˜๋ฉฐ S3 ๋Œ€์‹  Minio๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฏธ๋‹ˆ์˜ค ์„œ๋ฒ„

๋ฏธ๋‹ˆ์˜ค ์„ค์น˜

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

/etc/minio/minio.conf์—์„œ AccessKey ๋ฐ SecretKey๋ฅผ ํŽธ์ง‘ํ•˜์„ธ์š”.

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)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

DB ์„œ๋ฒ„

rpm ๋‹จ์œ„์˜ WAL-G๋Š” ๋‚˜(Anton Patsev)๊ฐ€ ์กฐ๋ฆฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๊นƒํ—ˆ๋ธŒ, ํŽ˜๋„๋ผ 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 ๋ฒ„์ „์„ ํ™•์ธํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

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๊ฐœ์˜ ์„œ๋ฒ„์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒฝ์šฐ ๋ฒ„์ „ 10 ๋ฏธ๋งŒ์˜ PostgreSQL์— ๋Œ€ํ•ด ์•„์นด์ด๋ธŒํ•˜๊ณ  PostgreSQL ๋ฒ„์ „ 10 ์ดํ•˜์— ๋Œ€ํ•œ ๋ณต์ œ๋ณธ์„ ๋ณด๊ด€ํ•˜๋„๋ก wal_level ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

wal_level = archive

PostgreSQL ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 60์ดˆ๋งˆ๋‹ค WAL ์•„์นด์ด๋ธŒ๋ฅผ ๋ฐฑ์—…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. prod์—์„œ๋Š” ๋‹ค๋ฅธ archive_timeout ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค test1์— ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

create database test1;

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

postgres=# c test1;

indexing_table ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

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

test1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ํ•ญ๋ชฉ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

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 ํด๋”์—์„œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

postgres ์‚ฌ์šฉ์ž๋กœ /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.conf์— Recovery_target_time ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต์›ํ•  ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

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

๋ณต๊ตฌ ํ›„ indexing_table ํ…Œ์ด๋ธ”์„ ์‚ดํŽด๋ณด์„ธ์š”.

 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 ๋ฐฑ์—… ์‹œ์Šคํ…œ ์†Œ๊ฐœ

๋ณด์‹œ๋‹ค์‹œํ”ผ Brotli๋Š” ํฌ๊ธฐ๊ฐ€ LZMA์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฐฑ์—…์€ LZ4 ์‹œ๊ฐ„์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋Ÿฌ์‹œ์•„์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” PostgreSQL ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฑ„ํŒ…: https://t.me/pgsql

์‚ฌ์šฉํ•˜์‹œ๋Š” ๊ฒฝ์šฐ Github์— ๋ณ„ํ‘œ๋ฅผ ๋‚จ๊ฒจ์ฃผ์„ธ์š” ์›”-์ง€

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster