wal-g PostgreSQL แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜

แƒฃแƒแƒš-แƒฏแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ PostgreSQL แƒฆแƒ แƒฃแƒ‘แƒšแƒ”แƒ‘แƒจแƒ˜ แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒแƒกแƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“. แƒ›แƒ˜แƒกแƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ˜แƒก แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒ แƒฃแƒแƒš-แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ Go-แƒจแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ WAL-G-แƒจแƒ˜ - แƒ“แƒ”แƒšแƒขแƒ แƒแƒกแƒšแƒ”แƒ‘แƒ˜. แƒ“แƒ”แƒšแƒขแƒ แƒแƒกแƒšแƒ”แƒ‘แƒ˜ แƒฃแƒแƒš-แƒฏแƒ˜ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ— แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ แƒฌแƒ˜แƒœแƒ แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. WAL-G แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ‘แƒ”แƒ•แƒ  แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒแƒก แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒแƒกแƒšแƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. WAL-G แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ แƒ•แƒ˜แƒ“แƒ แƒ” WAL-E.

แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก wal-g, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜: แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒ— แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒแƒกแƒšแƒก. Yandex-แƒ˜แƒก แƒšแƒ”แƒฅแƒชแƒ˜แƒ

S3 แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜ แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒฎแƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. S3-แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ แƒแƒ แƒ˜แƒก API-แƒ˜แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ, แƒ แƒแƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒแƒแƒฌแƒงแƒแƒ— แƒ›แƒแƒฅแƒœแƒ˜แƒšแƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ แƒกแƒแƒชแƒแƒ•แƒ—แƒแƒœ, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒ—, แƒฎแƒแƒšแƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ .

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒฏแƒแƒ แƒ แƒ“แƒ แƒ™แƒ”แƒ แƒซแƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ S3 แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก. แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒš แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒแƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - Minio.

แƒ”แƒ แƒ—แƒ˜ PostgreSQL แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒ˜แƒ wal-g-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“, แƒฎแƒแƒšแƒ Minio แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ S3-แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ•แƒšแƒ”แƒšแƒแƒ“.

Minio แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜

แƒ›แƒ˜แƒœแƒ˜แƒแƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ

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

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— nginx-แƒก Minio-แƒ›แƒ“แƒ”, แƒ›แƒแƒจแƒ˜แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ—

--address 127.0.0.1:9000

--address 0.0.0.0:9000

Minio-แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ

systemctl start minio

แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— Minio แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ–แƒ” http://ip-ะฐะดั€ะตั-ัะตั€ะฒะตั€ะฐ-minio:9000 แƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— bucket (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, pg-backups).

DB แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜

WAL-G แƒ‘แƒ แƒฃแƒœแƒจแƒ˜ แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒฉแƒ”แƒ›แƒ˜ (แƒแƒœแƒขแƒแƒœ แƒคแƒแƒชแƒ”แƒ•แƒ˜). Github, Fedora 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

แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— walg.

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 แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”, แƒ›แƒแƒจแƒ˜แƒœ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— wal_level แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜, แƒ แƒแƒ—แƒ แƒ“แƒแƒแƒ แƒฅแƒ˜แƒ•แƒแƒ— PostgreSQL 10-แƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒกแƒšแƒ˜ PostgreSQL 10 แƒ“แƒ แƒฃแƒคแƒ แƒ แƒซแƒ•แƒ”แƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

wal_level = archive

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ WAL แƒแƒ แƒฅแƒ˜แƒ•แƒ”แƒ‘แƒ˜ แƒงแƒแƒ•แƒ”แƒš 60 แƒฌแƒแƒ›แƒจแƒ˜, แƒ—แƒแƒ•แƒแƒ“ PostgreSQL-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒžแƒ แƒแƒ“แƒ–แƒ” แƒ’แƒ”แƒฅแƒœแƒ”แƒ‘แƒแƒ— แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ 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 แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ˜แƒ“แƒแƒœ.

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— /usr/local/bin/backup-fetch.sh แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒแƒกแƒขแƒ’แƒ แƒ”แƒกแƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜.

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

แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒ›แƒแƒžแƒแƒ•แƒ”แƒ‘แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ.

แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— recovery.conf แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ /var/lib/pgsql/9.6/data แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒ—.

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

แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ

1 GB แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒแƒฅ https://gist.github.com/ololobus/5b25c432f208d7eb31051a5f238dffff

แƒ—แƒแƒ˜แƒ’แƒฃแƒšแƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ 1 แƒ’แƒ‘ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

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

s4cmd แƒแƒ แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒฃแƒคแƒแƒกแƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ Amazon S3 แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒแƒ–แƒ” แƒ“แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช 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

แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒ›แƒ˜แƒ”แƒชแƒ˜แƒ— แƒ•แƒแƒ แƒกแƒ™แƒ•แƒšแƒแƒ•แƒ˜ Github-แƒก, แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒฃแƒแƒš-แƒ’

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ