wal-g PostgreSQL āĻŦā§āϝāĻžāĻ•āφāĻĒ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻĒāϰāĻŋāϚāĻŋāϤāĻŋ

āĻ“āϝāĻŧāĻžāϞ-āϜāĻŋ āĻ•ā§āϞāĻžāωāĻĄā§‡ PostgreSQL āĻŦā§āϝāĻžāĻ• āφāĻĒ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āϟ⧁āϞāĨ¤ āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻžāϰ āĻĒāϰāĻŋāĻĒā§āϰ⧇āĻ•ā§āώāĻŋāϤ⧇, āĻāϟāĻŋ āϜāύāĻĒā§āϰāĻŋāϝāĻŧ āϟ⧁āϞ⧇āϰ āωāĻ¤ā§āϤāϰāĻžāϧāĻŋāĻ•āĻžāϰ⧀ āĻ“āϝāĻŧāĻžāϞ-āχ, āĻ•āĻŋāĻ¨ā§āϤ⧁ Go-āϤ⧇ āφāĻŦāĻžāϰ āϞ⧇āĻ–āĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ WAL-G-āϤ⧇ āĻāĻ•āϟāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϰāϝāĻŧ⧇āϛ⧇ - āĻĄā§‡āĻ˛ā§āϟāĻž āĻ•āĻĒāĻŋāĨ¤ āĻĄā§‡āĻ˛ā§āϟāĻž āĻ•āĻĒāĻŋ āĻ“āϝāĻŧāĻžāϞ-āϜāĻŋ āφāϗ⧇āϰ āĻŦā§āϝāĻžāĻ•āφāĻĒ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĨ⧇āϕ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϰ āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ⧎ WAL-G āĻŦā§āϝāĻžāĻ•āφāĻĒ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦ⧇āĻļ āĻ…āύ⧇āĻ• āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇āĨ¤ WAL-G WAL-E āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻ…āύ⧇āĻ• āĻĻā§āϰ⧁āϤāĨ¤

āĻ“āϝāĻŧāĻžāϞ-āϜāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻžāϰ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇: āφāĻŽāϰāĻž āĻŦā§āϝāĻžāĻ•āφāĻĒ overclock. āχāϝāĻŧāĻžāύāĻĄā§‡āĻ•ā§āϏ āĻŦāĻ•ā§āϤ⧃āϤāĻž

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

/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 āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻŦāĻžāϞāϤāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻĒāĻŋāϜāĻŋ-āĻŦā§āϝāĻžāĻ•āφāĻĒ)āĨ¤

āĻĄāĻŋāĻŦāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ

rpm-āĻ WAL-G āφāĻŽāĻžāϰ (Anton Patsev) āĻĻā§āĻŦāĻžāϰāĻž āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ—āĻŋāϟāĻšāĻžāĻŦ, āĻĢ⧇āĻĄā§‹āϰāĻž āϏāĻŋāĻ“āĻĒāĻŋāφāϰ.

āϝāĻžāϰ 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 āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāϛ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϕ⧇ āĻĒā§‹āĻ¸ā§āϟāĻ—ā§āϰ⧇āĻāϏāĻ•āĻŋāωāĻāϞ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 10 āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻ•āĻŽ āĻāĻŦāĻ‚ āĻĒā§‹āĻ¸ā§āϟāĻ—ā§āϰ⧇āĻāϏāĻ•āĻŋāωāĻāϞ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 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;

āφāĻŽāϰāĻž āĻŸā§‡āĻŦāĻŋāϞ 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

āφāĻŽāϰāĻž āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻŸā§‡āĻ¸ā§āϟ⧧-āĻ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϰ⧇āĻ•āĻ°ā§āĻĄāϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻŋ

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 āϏāĻ‚āϰāĻ•ā§āώāĻŖāĻžāĻ—āĻžāϰāϭ⧁āĻ•ā§āϤ āĻ“āϝāĻŧāĻžāϞ āĻĨ⧇āϕ⧇ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻļ⧁āϰ⧁ āĻ•āϰāĻŦ⧇, āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻ–āύāχ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϖ⧁āϞāĻŦ⧇āĨ¤

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 āϏāĻ‚āϰāĻ•ā§āώāĻŖāĻžāĻ—āĻžāϰāϭ⧁āĻ•ā§āϤ āĻ“āϝāĻŧāĻžāϞ āĻĨ⧇āϕ⧇ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻļ⧁āϰ⧁ āĻ•āϰāĻŦ⧇, āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻ–āύāχ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϖ⧁āϞāĻŦ⧇āĨ¤

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

Brotli

ĐŸĐžŅĐģĐĩ ĐŗĐĩĐŊĐĩŅ€Đ°Ņ†Đ¸Đ¸ 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

āφāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ Github āĻāĻ•āϟāĻŋ āϤāĻžāϰāĻ•āĻž āĻĻāĻŋāύ āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ wal-g

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster