рд╡реЙрд▓-рдЬреА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП S3 рд╕реНрдЯреЛрд░реЗрдЬ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рд╣реИред S3 рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рд▓рдЪреАрд▓реЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реАрдб рдПрдХреНрд╕реЗрд╕ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрдмрдХрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХреГрдд рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣реЛрддрд╛ рд╣реИред
рдРрд╕реЗ рдХрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рднрдВрдбрд╛рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ рдЬреЛ S3 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЬ рд╣рдо рдЫреЛрдЯреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рди - рдорд┐рдирд┐рдпреЛ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗред
рд╡реЙрд▓-рдЬреА рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ PostgreSQL рд╕рд░реНрд╡рд░ рдареАрдХ рд╣реИ, рдФрд░ 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
рдорд┐рдирд┐рдпреЛ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЬрд╛рдПрдБ
рдбреАрдмреА рд╕рд░реНрд╡рд░
рдЖрд░рдкреАрдПрдо рдореЗрдВ рд╡рд╛рд▓-рдЬреА рдореЗрд░реЗ (рдПрдВрдЯреЛрди рдкрд╛рдЯрд╕реЗрд╡) рджреНрд╡рд╛рд░рд╛ рдЕрд╕реЗрдВрдмрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЖрд░рдкреАрдПрдо-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рд╡реЙрд▓-рдЬреА рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рд╛рде, рдЖрд░рдкреАрдПрдо рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ /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 рд╕реЗ рдХрдо рдХреЗ PostgreSQL рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ PostgreSQL рд╕рдВрд╕реНрдХрд░рдг 10 рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП wal_level рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
wal_level = archive
рдЖрдЗрдП PostgreSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд░ 60 рд╕реЗрдХрдВрдб рдореЗрдВ WAL рдЖрд░реНрдХрд╛рдЗрд╡ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдВред рдЙрддреНрдкрд╛рдж рдкрд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ 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;
рд╣рдо рдЯреЗрдмрд▓ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ_рдЯреЗрдмрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред
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
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдкрд░реАрдХреНрд╖рдг
рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╡рд╛рд▓ рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ред
рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реНрдХреНрд▓ рдмрдВрдж рдХрд░реЛ.
/var/lib/pgsql/9.6/рдбреЗрдЯрд╛ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВред
рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ /usr/local/bin/backup-fetch.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБред
su - postgres
/usr/local/bin/backup-fetch.sh
рдмреИрдХрдЕрдк рдирд┐рд╖реНрдХрд░реНрд╖рдг рдкреВрд░реНрдг.
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде /var/lib/pgsql/9.6/data рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐.conf рдЬреЛрдбрд╝реЗрдВред
restore_command = '/usr/local/bin/wal-fetch.sh "%f" "%p"'
рд╣рдо PostgreSQL рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред PostgreSQL рд╕рдВрдЧреНрд░рд╣реАрдд WALs рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреБрд▓реЗрдЧрд╛ред
systemctl start postgresql-9.6
tail -fn100 /var/lib/pgsql/9.6/data/pg_log/postgresql-Wed.log
рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐.
рдпрджрд┐ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд┐рдирдЯ рддрдХ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐_target_time рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐.conf рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХрд┐рд╕ рд╕рдордп рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред
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 рд╕рдВрдЧреНрд░рд╣реАрдд WALs рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреБрд▓реЗрдЧрд╛ред
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 MB
s4cmd рдЕрдореЗрдЬрд╝рди S3 рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдореМрдЬреВрдж рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдГрд╢реБрд▓реНрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рджреЛрдиреЛрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
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
рдЪрд╛рд░реНрдЯ рдкрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛.
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмреНрд░реЙрдЯрд▓реА рдЖрдХрд╛рд░ рдореЗрдВ LZMA рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдмреИрдХрдЕрдк LZ4 рд╕рдордп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░реВрд╕реА рднрд╛рд╖реА PostgreSQL рд╕рдореБрджрд╛рдп рдХреА рдЪреИрдЯ:
рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдЬреАрдердм рдХреЛ рдПрдХ рд╕реНрдЯрд╛рд░ рджреЗрдВ
рд╕реНрд░реЛрдд: www.habr.com