āĻā§āϞāĻžāĻāĻĄā§ PostgreSQL āĻŦā§āϝāĻžāĻ āĻāĻĒ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻŦāĻ āĻāĻžāϰā§āϝāĻāϰ āĻā§āϞāĨ¤ āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻžāϰ āĻĒāϰāĻŋāĻĒā§āϰā§āĻā§āώāĻŋāϤā§, āĻāĻāĻŋ āĻāύāĻĒā§āϰāĻŋāϝāĻŧ āĻā§āϞā§āϰ āĻāϤā§āϤāϰāĻžāϧāĻŋāĻāĻžāϰ⧠, āĻāĻŋāύā§āϤ⧠Go-āϤ⧠āĻāĻŦāĻžāϰ āϞā§āĻāĻžāĨ¤ āĻāĻŋāύā§āϤ⧠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/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 minioMinio āĻāϝāĻŧā§āĻŦ āĻāύā§āĻāĻžāϰāĻĢā§āϏ⧠āϝāĻžāύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦāĻžāϞāϤāĻŋ āϤā§āϰāĻŋ āĻāϰā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻĒāĻŋāĻāĻŋ-āĻŦā§āϝāĻžāĻāĻāĻĒ)āĨ¤
āĻĄāĻŋāĻŦāĻŋ āϏāĻžāϰā§āĻāĻžāϰ
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
psqlpsql āĻ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϤā§āϰāĻŋ āĻāϰā§āύ
āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āϏā§āĻ 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 āĻĄāĻžāĻāĻžāĻŦā§āϏ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāĻā§āĻā§
1GB āĻĄā§āĻāĻž āĻā§āύāĻžāϰā§āĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻŦāĻžāϞāϤāĻŋāϰ āĻāĻāĻžāϰā§āϰ āĻ āύā§āϰā§āϧ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
postgres=# SELECT pg_size_pretty(pg_database_size('test1'));
pg_size_pretty
----------------
1003 MBs4cmd â ĐąĐĩŅĐŋĐģаŅĐŊŅĐš иĐŊŅŅŅŅĐŧĐĩĐŊŅ ĐēĐžĐŧаĐŊĐ´ĐŊОК ŅŅŅĐžĐēи Đ´ĐģŅ ŅайОŅŅ Ņ Đ´Đ°ĐŊĐŊŅĐŧи, ŅаŅĐŋĐžĐģĐžĐļĐĩĐŊĐŊŅĐŧи в Ņ ŅаĐŊиĐģиŅĐĩ Amazon S3. ĐŖŅиĐģиŅа ĐŊаĐŋиŅаĐŊа ĐŊа ŅСŅĐēĐĩ ĐŋŅĐžĐŗŅаĐŧĐŧиŅОваĐŊĐ¸Ņ python, и ĐąĐģĐ°ĐŗĐžĐ´Đ°ŅŅ ŅŅĐžĐŧŅ ĐŧĐžĐļĐĩŅ Đ¸ŅĐŋĐžĐģŅСОваŅŅŅŅ Đ˛ ĐžĐŋĐĩŅаŅиОĐŊĐŊŅŅ ŅиŅŅĐĩĐŧĐ°Ņ Đ¸ WindowsāĻāĻŦāĻ Linux.
s4cmd āĻāύāϏā§āĻāϞ āĻāϰāĻž āĻšāĻā§āĻā§
pip install s4cmdLZ4
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 ĐŧĐą СаĐŊиĐŧаĐĩŅ ĐŋĐžĐģĐŊŅĐš ĐąĐĩĐēаĐŋ в ŅĐžŅĐŧаŅĐĩ lzmaBrotli
ĐĐžŅĐģĐĩ ĐŗĐĩĐŊĐĩŅаŅии 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
āĻāĻžāϰā§āĻā§ āĻĢāϞāĻžāĻĢāϞā§āϰ āϤā§āϞāύāĻžāĨ¤

āĻāĻĒāύāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻā§āύ, āĻŦā§āϰāĻāϞāĻŋ āĻāĻāĻžāϰ⧠LZMA āĻāϰ āϏāĻžāĻĨā§ āϤā§āϞāύā§āϝāĻŧ, āϤāĻŦā§ āĻŦā§āϝāĻžāĻāĻāĻĒāĻāĻŋ LZ4 āϏāĻŽāϝāĻŧā§ āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧāĨ¤
āϰāĻžāĻļāĻŋāϝāĻŧāĻžāύ-āĻāĻžāώ⧠PostgreSQL āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧā§āϰ āĻā§āϝāĻžāĻ:
āĻāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠Github āĻāĻāĻāĻŋ āϤāĻžāϰāĻāĻž āĻĻāĻŋāύ āĻĻāϝāĻŧāĻž āĻāϰā§
āĻāϤā§āϏ: www.habr.com
