เจเจน เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจคเฉเจ เจเจพเจฃเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจเจฟ SQL เจกเฉฐเจชเจพเจ เจตเจฟเฉฑเจ เจฌเฉเจเจ เฉฑเจช เจฌเจฃเจพเจเจฃเจพ (เจตเจฐเจคเฉเจ pg_dump เจ pg_dumpall) เจเฉฑเจ เจเฉฐเจเจพ เจตเจฟเจเจพเจฐ เจจเจนเฉเจ เจนเฉเฅค PostgreSQL DBMS เจฆเจพ เจฌเฉเจเจ เฉฑเจช เจฒเฉเจฃ เจฒเจ, เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ pg_basebackup, เจเฉ WAL เจฒเฉเจเจธ เจฆเฉ เจฌเจพเจเจจเจฐเฉ เจเจพเจชเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค เจชเจฐ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเฉฑเจ เจเจพเจชเฉ เจฌเจฃเจพเจเจฃ เจ เจคเฉ เจฐเฉเจธเจเฉเจฐ เจเจฐเจจ เจฆเฉ เจชเฉเจฐเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเจพ เจ เจงเจฟเจเจจ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจธเจฎเจเฉเจเฉ เจเจฟ เจคเฉเจนเจพเจจเฉเฉฐ เจเจธ เจฆเฉ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจเฉฑเจเฉ-เจเฉฑเจ เจฆเฉ เจเฉเจฐเจพเจเจธเจพเจเจเจฒ เจฒเจฟเจเจฃ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ เจ เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจชเจฐ เจ เจคเฉ เจนเฉเจ เจพเจ เจฆเฉเจตเจพเจ เจตเจฟเฉฑเจ เจฆเจฐเจฆ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพ. เจฆเฉเฉฑเจเจพเจ เจจเฉเฉฐ เจฆเฉเจฐ เจเจฐเจจ เจฒเจ, WAL-G เจตเจฟเจเจธเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค
เจเจน เจฒเฉเจ เจฎเฉเฉฑเจ เจคเฉเจฐ 'เจคเฉ เจฎเฉเจฐเฉ เจเจฟเจเจจ เจจเฉเฉฐ เจตเจฟเจตเจธเจฅเจฟเจค เจเจฐเจจ เจฒเจ เจฒเจฟเจเจฟเจ เจเจฟเจ เจธเฉเฅค เจฎเฉเจ เจเฉฑเจ DBA เจจเจนเฉเจ เจนเจพเจ เจ
เจคเฉ เจฎเฉเจ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจเจฟเจคเฉ เจตเฉ เจเจฎ เจเจฆเจฎเฉ เจฆเฉ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ เจชเฉเจฐเจเจ เจเจฐ เจธเจเจฆเจพ/เจธเจเจฆเฉ เจนเจพเจ, เจเจธ เจฒเจ เจเจฟเจธเฉ เจตเฉ เจธเฉเจงเจพเจฐ เจฆเจพ เจธเจตเจพเจเจค เจนเฉ!
เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ, เจฎเฉเจ เจจเฉเจ เจเจฐเจฆเจพ เจนเจพเจ เจเจฟ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจนเจฐ เจเฉเจเจผ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจนเฉ เจ เจคเฉ เจเจฌเฉฐเจเฉ 12.3 'เจคเฉ PostgreSQL 18.04 เจฒเจ เจเฉเจธเจ เจเฉเจคเฉ เจเจ เจนเฉ, เจธเจพเจฐเฉเจเจ เจเจฎเจพเจเจกเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐ เจชเฉเจฐเจพเจชเจค เจเจชเจญเฉเจเจคเจพ เจตเจเฉเจ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจธเฉเจเจฟเฉฐเจ
เจเจธ เจฒเฉเจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, WAL-G เจฆเจพ เจธเจฅเจฟเจฐ เจธเฉฐเจธเจเจฐเจฃ เจนเฉ
#!/bin/bash
curl -L "https://github.com/wal-g/wal-g/releases/download/v0.2.15/wal-g.linux-amd64.tar.gz" -o "wal-g.linux-amd64.tar.gz"
tar -xzf wal-g.linux-amd64.tar.gz
mv wal-g /usr/local/bin/
เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ, เจคเฉเจนเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ WAL-G, เจ เจคเฉ เจซเจฟเจฐ PostgreSQL เจจเฉเฉฐ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
WAL-G เจธเฉเฉฑเจเจ เฉฑเจช เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ
เจฌเฉเจเจ เฉฑเจช เจธเจเฉเจฐ เจเจฐเจจ เจฆเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจจ เจฒเจ, Amazon S3 เจตเจฐเจคเจฟเจ เจเจพเจตเฉเจเจพ (เจเจฟเจเจเจเจฟ เจเจน เจฎเฉเจฐเฉ เจธเจฐเจตเจฐเจพเจ เจฆเฉ เจจเฉเฉเฉ เจนเฉ เจ เจคเฉ เจเจธเจฆเฉ เจตเจฐเจคเฉเจ เจฌเจนเฉเจค เจธเจธเจคเฉ เจนเฉ). เจเจธเจฆเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ "s3 เจฌเจพเจฒเจเฉ" เจ เจคเฉ เจเจเจธเฉเจธ เจเฉเฉฐเจเฉเจเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
WAL-G เจฌเจพเจฐเฉ เจธเจพเจฐเฉ เจชเจฟเจเจฒเฉ เจฒเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจธเฉฐเจฐเจเจจเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจจ, เจชเจฐ เจเจธ เจฐเฉเจฒเฉเจเจผ เจฆเฉ เจจเจพเจฒ เจธเฉเจเจฟเฉฐเจเจพเจ เจตเจฟเฉฑเจ เจธเจฅเจฟเจค เจนเฉ เจธเจเจฆเฉเจเจ เจนเจจ
#!/bin/bash
cat > /var/lib/postgresql/.walg.json << EOF
{
"WALG_S3_PREFIX": "s3://your_bucket/path",
"AWS_ACCESS_KEY_ID": "key_id",
"AWS_SECRET_ACCESS_KEY": "secret_key",
"WALG_COMPRESSION_METHOD": "brotli",
"WALG_DELTA_MAX_STEPS": "5",
"PGDATA": "/var/lib/postgresql/12/main",
"PGHOST": "/var/run/postgresql/.s.PGSQL.5432"
}
EOF
# ะพะฑัะทะฐัะตะปัะฝะพ ะผะตะฝัะตะผ ะฒะปะฐะดะตะปััะฐ ัะฐะนะปะฐ:
chown postgres: /var/lib/postgresql/.walg.json
เจฎเฉเจจเฉเฉฐ เจธเจพเจฐเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฌเจพเจฐเฉ เจฅเฉเฉเจพ เจเจฟเจนเจพ เจธเจฎเจเจพเจเจฃ เจฆเจฟเจ:
- WALG_S3_PREFIX - เจคเฉเจนเจพเจกเฉ S3 เจฌเจพเจฒเจเฉ เจฆเจพ เจฎเจพเจฐเจ เจเจฟเฉฑเจฅเฉ เจฌเฉเจเจ เฉฑเจช เจ เฉฑเจชเจฒเฉเจก เจเฉเจคเฉ เจเจพเจฃเจเฉ (เจคเฉเจธเฉเจ เจเจพเจ เจคเจพเจ เจฐเฉเจ เจเจพเจ เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ เจเจพ เจธเจเจฆเฉ เจนเฉ);
- AWS_ACCESS_KEY_ID - S3 เจตเจฟเฉฑเจ เจชเจนเฉเฉฐเจ เจเฉเฉฐเจเฉ (เจเฉฑเจ เจเฉเจธเจ เจธเจฐเจตเจฐ 'เจคเฉ เจฐเจฟเจเจตเจฐเฉ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจเจนเจจเจพเจ เจเฉเฉฐเจเฉเจเจ เจตเจฟเฉฑเจ เจฐเฉเจกเจเจจเจฒเฉ เจจเฉเจคเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ! เจเจน เจฐเจฟเจเจตเจฐเฉ 'เจคเฉ เจญเจพเจ เจตเจฟเฉฑเจ เจนเฉเจฐ เจตเฉเจฐเจตเฉ เจตเจฟเฉฑเจ เจฆเฉฑเจธเจฟเจ เจเจฟเจ เจนเฉ.);
- AWS_SECRET_ACCESS_KEY - S3 เจธเจเฉเจฐเฉเจเจผ เจตเจฟเฉฑเจ เจเฉเจชเจค เจเฉเฉฐเจเฉ;
- WALG_COMPRESSION_METHOD - เจเฉฐเจชเจฐเฉเจธเจผเจจ เจตเจฟเจงเฉ, เจฌเฉเจฐเฉเจเจฒเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ (เจเจฟเจเจเจเจฟ เจเจน เจ เฉฐเจคเจฎ เจเจเจพเจฐ เจ เจคเฉ เจเฉฐเจชเจฐเฉเจธเจผเจจ/เจกเฉเจเฉฐเจชเฉเจฐเฉเจธเจผเจจ เจธเจชเฉเจก เจตเจฟเจเจเจพเจฐ เจธเฉเจจเจนเจฟเจฐเฉ เจฎเฉฑเจงเจฎเจพเจจ เจนเฉ);
- WALG_DELTA_MAX_STEPS - เจชเฉเจฐเจพ เจฌเฉเจเจ เฉฑเจช เจฌเจฃเจพเจเจฃ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ "เจกเฉเจฒเจเจพ" เจฆเฉ เจเจฟเจฃเจคเฉ (เจเจน เจกเจพเจเจจเจฒเฉเจก เจเฉเจคเฉ เจกเฉเจเจพ เจฆเฉ เจธเจฎเฉเจ เจ เจคเฉ เจเจเจพเจฐ เจฆเฉ เจฌเจเจค เจเจฐเจฆเฉ เจนเจจ, เจชเจฐ เจฐเจฟเจเจตเจฐเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฅเฉเฉเฉเจนเจพ เจนเฉเจฒเฉ เจเจฐ เจธเจเจฆเฉ เจนเจจ, เจเจธ เจฒเจ เจตเฉฑเจกเฉ เจฎเฉเฉฑเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจธเจฒเจพเจน เจจเจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจเจพเจเจฆเฉ);
- PGDATA - เจคเฉเจนเจพเจกเฉ เจกเฉเจเจพเจฌเฉเจธ เจกเฉเจเจพ เจจเจพเจฒ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฆเจพ เจฎเจพเจฐเจ (เจคเฉเจธเฉเจ เจเจฎเจพเจเจก เจเจฒเจพ เจเฉ เจชเจคเจพ เจฒเจเจพ เจธเจเจฆเฉ เจนเฉ pg_lscluster);
- PGHOST - เจกเฉเจเจพเจฌเฉเจธ เจจเจพเจฒ เจเฉเฉเจจเจพ, เจธเจฅเจพเจจเจ เจฌเฉเจเจ เฉฑเจช เจฆเฉ เจจเจพเจฒ เจเจธ เจจเฉเฉฐ เจฏเฉเจจเจฟเจเจธ-เจธเจพเจเจ เจฆเฉเจเจฐเจพ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ เจเจฟเจตเฉเจ เจเจฟ เจเจธ เจเจฆเจพเจนเจฐเจฃ เจตเจฟเฉฑเจ เจนเฉเฅค
เจนเฉเจฐ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฆเจธเจคเจพเจตเฉเจเจผ เจตเจฟเฉฑเจ เจฒเฉฑเจญเฉ เจเจพ เจธเจเจฆเฉ เจนเจจ:
PostgreSQL เจธเฉเจ เจ เจช เจเจฐเจจเจพ
เจกเจพเจเจพเจฌเฉเจธ เจฆเฉ เจ เฉฐเจฆเจฐ เจเจฐเจเจพเจเจตเจฐ เจจเฉเฉฐ เจเจฒเจพเจเจก 'เจคเฉ WAL เจฒเฉเจเจธ เจ เฉฑเจชเจฒเฉเจก เจเจฐเจจ เจ เจคเฉ เจเจนเจจเจพเจ เจคเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฎเฉเฉ เจฌเจนเจพเจฒ เจเจฐเจจ เจฒเจ (เจเฉ เจฒเฉเฉ เจนเฉเจตเฉ), เจคเฉเจนเจพเจจเฉเฉฐ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจเจ เจฎเจพเจชเจฆเฉฐเจก เจธเฉเฉฑเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค /etc/postgresql/12/main/postgresql.conf. เจธเจฟเจฐเจซเจผ เจธเจผเฉเจฐเฉเจเจค เจเจฐเจจ เจตเจพเจฒเจฟเจเจ เจฒเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเจเจฟ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉเจเจ เจธเฉเจเจฟเฉฐเจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉเจ เจตเฉ เจเจฟเจธเฉ เจนเฉเจฐ เจฎเฉเฉฑเจฒ 'เจคเฉ เจธเฉเฉฑเจ เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจนเฉ, เจคเจพเจ เจเฉ เจเจฆเฉเจ เจธเฉฐเจฐเจเจจเจพ เจฎเฉเฉ เจฒเฉเจก เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจคเจพเจ DBMS เจเจฐเฉเจธเจผ เจจเจพ เจนเฉเจตเฉเฅค เจคเฉเจธเฉเจ เจเจนเจจเจพเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเฉ เจธเจเจฆเฉ เจนเฉ:
#!/bin/bash
echo "wal_level=replica" >> /etc/postgresql/12/main/postgresql.conf
echo "archive_mode=on" >> /etc/postgresql/12/main/postgresql.conf
echo "archive_command='/usr/local/bin/wal-g wal-push "%p" >> /var/log/postgresql/archive_command.log 2>&1' " >> /etc/postgresql/12/main/postgresql.conf
echo โarchive_timeout=60โ >> /etc/postgresql/12/main/postgresql.conf
echo "restore_command='/usr/local/bin/wal-g wal-fetch "%f" "%p" >> /var/log/postgresql/restore_command.log 2>&1' " >> /etc/postgresql/12/main/postgresql.conf
# ะฟะตัะตะทะฐะณััะถะฐะตะผ ะบะพะฝัะธะณ ัะตัะตะท ะพัะฟัะฐะฒะบั SIGHUP ัะธะณะฝะฐะปะฐ ะฒัะตะผ ะฟัะพัะตััะฐะผ ะะ
killall -s HUP postgres
เจธเฉเฉฑเจ เจเฉเจคเฉ เจเจพเจฃ เจตเจพเจฒเฉ เจฎเจพเจชเจฆเฉฐเจกเจพเจ เจฆเจพ เจตเฉเจฐเจตเจพ:
- wal_level - WAL เจฒเฉเจเจธ เจตเจฟเฉฑเจ เจเจฟเฉฐเจจเฉ เจเจพเจฃเจเจพเจฐเฉ เจฒเจฟเจเจฃเฉ เจนเฉ, "เจฐเจฟเจชเจฒเฉเจเจพ" - เจธเจญ เจเฉเจ เจฒเจฟเจเฉ;
- เจชเฉเจฐเจพเจฒเฉเจ_เจฎเฉเจก - เจชเฉเจฐเจพเจฎเฉเจเจฐ เจคเฉเจ เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ WAL เจฒเฉเจเจธ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ archive_command;
- archive_command - เจเฉฑเจ เจฎเฉเจเฉฐเจฎเจฒ WAL เจฒเฉเจ เจจเฉเฉฐ เจเจฐเจเจพเจเจต เจเจฐเจจ เจฒเจ เจเจฎเจพเจเจก;
- archive_timeout - เจฒเฉเจเจธ เจฆเจพ เจชเฉเจฐเจพเจฒเฉเจ เจเจฆเฉเจ เจนเฉ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ เจเจฆเฉเจ เจเจน เจชเฉเจฐเจพ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ, เจชเจฐ เจเฉเจเจฐ เจคเฉเจนเจพเจกเจพ เจธเจฐเจตเจฐ เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจฅเฉเฉเฉเจนเจพ เจเจฟเจนเจพ เจกเฉเจเจพ เจฌเจฆเจฒเจฆเจพ/เจเฉเฉเจฆเจพ เจนเฉ, เจคเจพเจ เจเฉฑเจฅเฉ เจธเจเจฟเฉฐเจเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเฉเจฎเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจเจพ เจธเจฎเจเจฆเจพเจฐเฉ เจฐเฉฑเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจเจฐเจเจพเจเจตเจฟเฉฐเจ เจเจฎเจพเจเจก เจจเฉเฉฐ เจเจผเจฌเจฐเจฆเจธเจคเฉ เจฌเฉเจฒเจพเจเจ เจเจพเจตเฉเจเจพ (เจฎเฉเจ เจนเจฐ เจธเจเจฟเฉฐเจ เจกเฉเจเจพเจฌเฉเจธ เจจเฉเฉฐ เจคเฉเจฌเจฐเจคเจพ เจจเจพเจฒ เจฒเจฟเจเจฆเจพ เจนเจพเจ, เจเจธเจฒเจ เจฎเฉเจ เจเจธ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจจเฉเฉฐ เจเจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจ เจธเฉเจ เจจเจพ เจเจฐเจจ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ);
- เจฐเฉเจธเจเฉเจฐ_เจเจฎเจพเจเจก - เจฌเฉเจเจ เฉฑเจช เจคเฉเจ WAL เจฒเฉเจ เจจเฉเฉฐ เจฐเฉเจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจเจพเจตเฉเจเฉ เจเฉเจเจฐ "เจชเฉเจฐเจพ เจฌเฉเจเจ เฉฑเจช" (เจฌเฉเจธ เจฌเฉเจเจ เฉฑเจช) เจกเจพเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจจเจตเฉเจจเจคเจฎ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเฉ เจเจพเจ เจนเฉเฅค
เจคเฉเจธเฉเจ เจ
เจงเจฟเจเจพเจฐเจค เจฆเจธเจคเจพเจตเฉเจเจผเจพเจ เจฆเฉ เจ
เจจเฉเจตเจพเจฆ เจตเจฟเฉฑเจ เจเจนเจจเจพเจ เจธเจพเจฐเฉ เจฎเจพเจชเจฆเฉฐเจกเจพเจ เจฌเจพเจฐเฉ เจนเฉเจฐ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเฉ:
เจเฉฑเจ เจฌเฉเจเจ เฉฑเจช เจธเจฎเจพเจ-เจธเจพเจฐเจฃเฉ เจธเฉเจ เจ เจช เจเจฐ เจฐเจฟเจนเจพ เจนเฉ
เจเฉเจ เจเฉ เจตเฉ เจเจนเฉ, เจเจธ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฆเจพ เจธเจญ เจคเฉเจ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจคเจฐเฉเจเจพ เจนเฉ เจเจฐเฉเจจเฅค เจเจน เจเจน เจนเฉ เจเฉ เจ เจธเฉเจ เจฌเฉเจเจ เฉฑเจช เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉเจเจซเจฟเจเจฐ เจเจฐเจพเจเจเฉเฅค เจเจ เจเฉฑเจ เจชเฉเจฐเจพ เจฌเฉเจเจ เฉฑเจช เจฌเจฃเจพเจเจฃ เจฒเจ เจเจฎเจพเจเจก เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ: wal-g เจตเจฟเฉฑเจ เจเจน เจฒเจพเจเจ เจเจฐเจเฉเจฎเฉเจเจ เจนเฉ เจฌเฉเจเจ เฉฑเจช-เจชเฉเจธเจผ. เจชเจฐ เจชเจนเจฟเจฒเจพเจ, เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจฟ เจธเจญ เจเฉเจ เจ เฉเจ เจนเฉ (เจ เจคเฉ เจเฉฑเจฅเฉ เจเฉเจ เจเจเจธเฉเจธ เจเจฒเจคเฉเจเจ เจจเจนเฉเจ เจนเจจ) เจฒเจ เจชเฉเจธเจเจเฉเจฐเฉเจธ เจเจชเจญเฉเจเจคเจพ เจคเฉเจ เจเจธ เจเจฎเจพเจเจก เจจเฉเฉฐ เจนเฉฑเจฅเฉเจ เจเจฒเจพเจเจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ:
#!/bin/bash
su - postgres -c '/usr/local/bin/wal-g backup-push /var/lib/postgresql/12/main'
เจฒเจพเจเจ เจเจฐเจเฉเจฎเฉเจเจเจธ เจกเฉเจเจพ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฆเฉ เจฎเจพเจฐเจ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเจจ - เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเจพ เจนเจพเจ เจเจฟ เจคเฉเจธเฉเจ เจเจธเจจเฉเฉฐ เจเจฒเจพ เจเฉ เจฒเฉฑเจญ เจธเจเจฆเฉ เจนเฉ pg_lscluster.
เจเฉ เจธเจญ เจเฉเจ เจเจฒเจคเฉเจเจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจนเฉ เจเจฟเจ เจ เจคเฉ เจกเฉเจเจพ เจจเฉเฉฐ S3 เจธเจเฉเจฐเฉเจ เจตเจฟเฉฑเจ เจฒเฉเจก เจเฉเจคเจพ เจเจฟเจ, เจคเจพเจ เจคเฉเจธเฉเจ เจซเจฟเจฐ เจเฉเจฐเฉเจจเจเฉเจฌ เจตเจฟเฉฑเจ เจธเจฎเฉเจ-เจธเจฎเฉเจ เจคเฉ เจฒเจพเจเจ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ:
#!/bin/bash
echo "15 4 * * * /usr/local/bin/wal-g backup-push /var/lib/postgresql/12/main >> /var/log/postgresql/walg_backup.log 2>&1" >> /var/spool/cron/crontabs/postgres
# ะทะฐะดะฐะตะผ ะฒะปะฐะดะตะปััะฐ ะธ ะฒัััะฐะฒะปัะตะผ ะฟัะฐะฒะธะปัะฝัะต ะฟัะฐะฒะฐ ัะฐะนะปั
chown postgres: /var/spool/cron/crontabs/postgres
chmod 600 /var/spool/cron/crontabs/postgres
เจเจธ เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, เจฌเฉเจเจ เฉฑเจช เจชเฉเจฐเจเจฟเจฐเจฟเจ เจนเจฐ เจฐเฉเจเจผ เจธเจตเฉเจฐเฉ 4:15 เจตเจเฉ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค
เจชเฉเจฐเจพเจฃเฉ เจฌเฉเจเจ เฉฑเจช เจฎเจฟเจเจพเจ เจเจพ เจฐเจนเฉ เจนเจจ
เจเจผเจฟเจเจฆเจพเจคเจฐ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉ, เจคเฉเจนเจพเจจเฉเฉฐ เจฎเฉเจธเฉเจเจผเฉเจเจ เจฏเฉเฉฑเจ เจคเฉเจ เจฌเจฟเจฒเจเฉเจฒ เจธเจพเจฐเฉ เจฌเฉเจเจ เฉฑเจช เจฐเฉฑเจเจฃ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ, เจเจธเจฒเจ เจธเจฎเฉเจ-เจธเจฎเฉเจ 'เจคเฉ เจคเฉเจนเจพเจกเฉ เจธเจเฉเจฐเฉเจ ("เจชเฉเจฐเฉ เจฌเฉเจเจ เฉฑเจช" เจ เจคเฉ WAL เจฒเฉเจเจธ) เจจเฉเฉฐ "เจธเจซเจพเจ" เจเจฐเจจเจพ เจฒเจพเจญเจฆเจพเจเจ เจนเฉเจตเฉเจเจพเฅค เจ เจธเฉเจ เจเจน เจธเจญ เจเฉฑเจ เจเฉเจฐเฉเจจ เจเจพเจธเจ เจฆเฉเจเจฐเจพ เจเจฐเจพเจเจเฉ:
#!/bin/bash
echo "30 6 * * * /usr/local/bin/wal-g delete before FIND_FULL $(date -d '-10 days' '+%FT%TZ') --confirm >> /var/log/postgresql/walg_delete.log 2>&1" >> /var/spool/cron/crontabs/postgres
# ะตัั ัะฐะท ะทะฐะดะฐะตะผ ะฒะปะฐะดะตะปััะฐ ะธ ะฒัััะฐะฒะปัะตะผ ะฟัะฐะฒะธะปัะฝัะต ะฟัะฐะฒะฐ ัะฐะนะปั (ั
ะพัั ััะพ ะพะฑััะฝะพ ััะพ ะธ ะฝะต ะฝัะถะฝะพ ะฟะพะฒัะพัะฝะพ ะดะตะปะฐัั)
chown postgres: /var/spool/cron/crontabs/postgres
chmod 600 /var/spool/cron/crontabs/postgres
เจเฉเจฐเฉเจจ เจเจธ เจเฉฐเจฎ เจจเฉเฉฐ เจนเจฐ เจฐเฉเจเจผ เจธเจตเฉเจฐเฉ 6:30 เจตเจเฉ เจเจฒเจพเจเจเจพ, เจชเจฟเจเจฒเฉ 10 เจฆเจฟเจจเจพเจ เจฆเฉเจเจ เจเจพเจชเฉเจเจ เจจเฉเฉฐ เจเฉฑเจก เจเฉ เจธเจญ เจเฉเจ (เจชเฉเจฐเจพ เจฌเฉเจเจ เฉฑเจช, เจกเฉเจฒเจเจพ เจ เจคเฉ WAL) เจฎเจฟเจเจพเจเจเจฆเจพ เจนเฉ, เจชเจฐ เจเฉฑเจเฉ-เจเฉฑเจ เจเฉฑเจ เจฌเฉเจเจ เฉฑเจช เจเฉฑเจกเจฆเจพ เจนเฉเฅค เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจฎเจฟเจคเฉ เจคเจพเจ เจเจฟ เจเฉเจ เจตเฉ เจฌเจฟเฉฐเจฆเฉ ะฟะพัะปะต เจฎเจฟเจคเฉเจเจ เจจเฉเฉฐ PITR เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค
เจฌเฉเจเจ เฉฑเจช เจคเฉเจ เจฐเฉเจธเจเฉเจฐ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ
เจเจน เจเฉเจ เจญเฉเจค เจจเจนเฉเจ เจนเฉ เจเจฟ เจเฉฑเจ เจธเจฟเจนเจคเจฎเฉฐเจฆ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจเฉเฉฐเจเฉ เจธเจฎเฉเจ-เจธเจฎเฉเจ 'เจคเฉ เจฌเจนเจพเจฒเฉ เจ เจคเฉ เจ เฉฐเจฆเจฐเจฒเฉ เจกเฉเจเจพ เจฆเฉ เจเจเจธเจพเจฐเจคเจพ เจฆเฉ เจคเจธเจฆเฉเจ เจนเฉ. เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจธ เจญเจพเจ เจตเจฟเฉฑเจ WAL-G เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฆเฉ เจคเจฐเฉเจเฉ เจฌเจพเจฐเฉ เจฆเฉฑเจธเจพเจเจเจพ, เจ เจคเฉ เจ เจธเฉเจ เจฌเจพเจ เจฆ เจตเจฟเฉฑเจ เจเจพเจเจเจพเจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจพเจเจเฉเฅค
เจเจน เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ เจเฉ เจเจฟ เจเฉฑเจ เจเฉเจธเจ เจตเจพเจคเจพเจตเจฐเจจ เจตเจฟเฉฑเจ เจฌเจนเจพเจฒ เจเจฐเจจ เจฒเจ (เจนเจฐ เจเฉเจเจผ เจเฉ เจเจคเจชเจพเจฆเจจ เจจเจนเฉเจ เจนเฉ) เจคเฉเจนเจพเจจเฉเฉฐ S3 เจตเจฟเฉฑเจ เจธเจฟเจฐเจซเจผ เจฐเฉเจก เจเจจเจฒเฉ เจเจพเจคเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจคเจพเจ เจเฉ เจเจฒเจคเฉ เจจเจพเจฒ เจฌเฉเจเจ เฉฑเจช เจจเฉเฉฐ เจเจตเจฐเจฐเจพเจเจ เจจเจพ เจเฉเจคเจพ เจเจพ เจธเจเฉเฅค WAL-G เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจฐเฉเฉฑเจช เจชเจพเจฒเจฟเจธเฉ เจตเจฟเฉฑเจ S3 เจเจชเจญเฉเจเจคเจพ เจฒเจ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจ เจงเจฟเจเจพเจฐเจพเจ เจจเฉเฉฐ เจธเฉเฉฑเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ (เจชเฉเจฐเจญเจพเจต: เจเจเจฟเจ เจฆเจฟเจ): s3: GetObject, s3:ListBucket, s3:GetBucketLocation. เจ เจคเฉ, เจฌเฉเจธเจผเจ, เจธเฉเฉฑเจ เจเจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ archive_mode=off เจธเฉเจเจฟเฉฐเจเจเจผ เจซเจพเจเจฒ เจตเจฟเฉฑเจ postgresql.conf, เจคเจพเจ เจเฉ เจคเฉเจนเจพเจกเจพ เจเฉเจธเจ เจกเฉเจเจพเจฌเฉเจธ เจเฉเฉฑเจชเจเจพเจช เจฌเฉเจเจ เฉฑเจช เจจเจนเฉเจ เจฒเฉเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพเฅค
เจฌเจนเจพเจฒเฉ เจนเฉฑเจฅ เจฆเฉ เจเฉฑเจ เจฎเจพเจฎเฉเจฒเฉ เจ เฉฐเจฆเฉเจฒเจจ เจจเจพเจฒ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจธเจพเจฐเฉ PostgreSQL เจกเฉเจเจพ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃเจพ (เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจธเจฎเฉเจค), เจเจธ เจฒเจ เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจนเฉเจ เจฒเจฟเจเฉเจเจ เจเจฎเจพเจเจกเจพเจ เจเจฒเจพเจเจเจฆเฉ เจนเฉ เจคเจพเจ เจฌเจนเฉเจค เจธเจพเจตเจงเจพเจจ เจฐเจนเฉเฅค
#!/bin/bash
# ะตัะปะธ ะตััั ะฑะฐะปะฐะฝัะธัะพะฒัะธะบ ะฟะพะดะบะปััะตะฝะธะน (ะฝะฐะฟัะธะผะตั, pgbouncer), ัะพ ะฒะฝะฐัะฐะปะต ะพัะบะปััะฐะตะผ ะตะณะพ, ััะพะฑั ะพะฝ ะฝะต ะฝะฐััะณะฐะป ะพัะธะฑะพะบ ะฒ ะปะพะณ
service pgbouncer stop
# ะตัะปะธ ะตััั ะดะตะผะพะฝ, ะบะพัะพััะน ะฟะตัะตะทะฐะฟััะบะฐะตั ัะฟะฐะฒัะธะต ะฟัะพัะตััั (ะฝะฐะฟัะธะผะตั, monit), ัะพ ะพััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฒ ะฝัะผ ะฟัะพัะตัั ะผะพะฝะธัะพัะธะฝะณะฐ ะฑะฐะทั (ั ะผะตะฝั ััะพ pgsql12)
monit stop pgsql12
# ะธะปะธ ะพััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะผะพะฝะธัะพัะธะฝะณ ะฟะพะปะฝะพัััั
service monit stop
# ะพััะฐะฝะฐะฒะปะธะฒะฐะตะผ ัะฐะผั ะฑะฐะทั ะดะฐะฝะฝัั
service postgresql stop
# ัะดะฐะปัะตะผ ะฒัะต ะดะฐะฝะฝัะต ะธะท ัะตะบััะตะน ะฑะฐะทั (!!!); ะปัััะต ะฟัะตะดะฒะฐัะธัะตะปัะฝะพ ัะดะตะปะฐัั ะธั
ะบะพะฟะธั, ะตัะปะธ ะตััั ัะฒะพะฑะพะดะฝะพะต ะผะตััะพ ะฝะฐ ะดะธัะบะต
rm -rf /var/lib/postgresql/12/main
# ัะบะฐัะธะฒะฐะตะผ ัะตะทะตัะฒะฝัั ะบะพะฟะธั ะธ ัะฐะทะฐัั
ะธะฒะธััะตะผ ะตั
su - postgres -c '/usr/local/bin/wal-g backup-fetch /var/lib/postgresql/12/main LATEST'
# ะฟะพะผะตัะฐะตะผ ััะดะพะผ ั ะฑะฐะทะพะน ัะฟะตัะธะฐะปัะฝัะน ัะฐะนะป-ัะธะณะฝะฐะป ะดะปั ะฒะพัััะฐะฝะพะฒะปะตะฝะธั (ัะผ. https://postgrespro.ru/docs/postgresql/12/runtime-config-wal#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY ), ะพะฝ ะพะฑัะทะฐัะตะปัะฝะพ ะดะพะปะถะตะฝ ะฑััั ัะพะทะดะฐะฝ ะพั ะฟะพะปัะทะพะฒะฐัะตะปั postgres
su - postgres -c 'touch /var/lib/postgresql/12/main/recovery.signal'
# ะทะฐะฟััะบะฐะตะผ ะฑะฐะทั ะดะฐะฝะฝัั
, ััะพะฑั ะพะฝะฐ ะธะฝะธัะธะธัะพะฒะฐะปะฐ ะฟัะพัะตัั ะฒะพัััะฐะฝะพะฒะปะตะฝะธั
service postgresql start
เจเจนเจจเจพเจ เจฒเจ เจเฉ เจฐเจฟเจเจตเจฐเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจจ, เจนเฉเจ เจพเจ เจฌเฉเจธเจผ เจฎเฉเจเจฟเจ เจฆเจพ เจเฉฑเจ เจเฉเจเจพ เจเจฟเจนเจพ เจเฉเจเฉเจพ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจคเจพเจ เจเฉ เจฐเจฟเจเจตเจฐเฉ เจตเจฟเฉฑเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจนเฉเจฃ เจฆเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจธเจเฉเจฐเจฟเจชเจ เจเฉฑเจ เจเฉเจฐ-เจเจผเฉเจฐเฉ เจเจเจเจผเจฟเจ เจเฉเจก เจจเจพเจฒ เจเฉเจฐเฉเจธเจผ เจนเฉ เจเจพเจตเฉเจเฉเฅค เจเจธ เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, เจเจน เจชเจคเจพ เจฒเจเจพเจเจฃ เจฒเจ เจเจฟ เจเฉ เจธเจฟเจเจจเจฒ เจซเจพเจเจฒ เจฎเจฟเจเจพเจ เจเจ เจธเฉ (เจเจธเจฆเจพ เจฎเจคเจฒเจฌ เจเจน เจนเฉเจตเฉเจเจพ เจเจฟ เจฐเจฟเจเจตเจฐเฉ เจธเจซเจฒ เจฐเจนเฉ เจธเฉ) 120 เจธเจเจฟเฉฐเจเจพเจ (เจฐเจฟเจเจตเจฐเฉ เจฒเจ เจเฉเฉฑเจฒ 5 เจฎเจฟเฉฐเจ) เจฆเฉ เจฎเจฟเจเจฆ เจฆเฉ เจจเจพเจฒ 10 เจเจพเจเจเจพเจ เจเฉเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจ:
#!/bin/bash
CHECK_RECOVERY_SIGNAL_ITER=0
while [ ${CHECK_RECOVERY_SIGNAL_ITER} -le 120 ]
do
if [ ! -f "/var/lib/postgresql/12/main/recovery.signal" ]
then
echo "recovery.signal removed"
break
fi
sleep 5
((CHECK_RECOVERY_SIGNAL_ITER+1))
done
# ะตัะปะธ ะฟะพัะปะต ะฒัะตั
ะฟัะพะฒะตัะพะบ ัะฐะนะป ะฒัั ัะฐะฒะฝะพ ัััะตััะฒัะตั, ัะพ ะฟะฐะดะฐะตะผ ั ะพัะธะฑะบะพะน
if [ -f "/var/lib/postgresql/12/main/recovery.signal" ]
then
echo "recovery.signal still exists!"
exit 17
fi
เจธเจซเจฒ เจฐเจฟเจเจตเจฐเฉ เจคเฉเจ เจฌเจพเจ เจฆ, เจธเจพเจฐเฉเจเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจจเฉเฉฐ เจตเจพเจชเจธ เจธเจผเฉเจฐเฉ เจเจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ (pgbouncer/monit, เจเจฆเจฟ)เฅค
เจฐเจฟเจเจตเจฐเฉ เจคเฉเจ เจฌเจพเจ เจฆ เจกเฉเจเจพ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจเจพ เจฐเจนเฉ เจนเฉ
เจฌเจนเจพเจฒเฉ เจคเฉเจ เจฌเจพเจ เจฆ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจเจเจธเจพเจฐเจคเจพ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจฒเจพเจเจผเจฎเฉ เจนเฉ, เจคเจพเจ เจเฉ เจเฉเฉฑเจเฉ/เจเฉเจขเฉ เจฌเฉเจเจ เฉฑเจช เจตเจพเจฒเฉ เจธเจฅเจฟเจคเฉ เจชเฉเจฆเจพ เจจเจพ เจนเฉเจตเฉเฅค เจ เจคเฉ เจนเจฐเฉเจ เจฌเจฃเจพเจ เจเจ เจชเฉเจฐเจพเจฒเฉเจ เจจเจพเจฒ เจ เจเจฟเจนเจพ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ, เจชเจฐ เจเจฟเฉฑเจฅเฉ เจ เจคเฉ เจเจฟเจตเฉเจ เจธเจฟเจฐเจซ เจคเฉเจนเจพเจกเฉ เจเจฒเจชเจจเจพ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉ (เจคเฉเจธเฉเจ เจเฉฑเจ เจเฉฐเจเฉ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจตเจฟเจ เจเจคเฉเจเจค เจธเจฐเจตเจฐเจพเจ เจจเฉเฉฐ เจตเจงเจพ เจธเจเจฆเฉ เจนเฉ เจเจพเจ เจธเฉเจเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจ เจเจฒเจพ เจธเจเจฆเฉ เจนเฉ)เฅค เจชเจฐ เจเฉฑเจเฉ เจเฉฑเจ, เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจ เจคเฉ เจธเฉเจเจเจพเจเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจเจผเจฐเฉเจฐเฉ เจนเฉ.
เจกเฉเจเจพ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ, เจเจธเจจเฉเฉฐ เจกเฉฐเจช เจฆเฉเจเจฐเจพ เจเจฒเจพเจเจฃเจพ เจเจพเจซเจผเฉ เจนเฉ, เจชเจฐ เจเจน เจฌเจฟเจนเจคเจฐ เจนเฉ เจเจฟ เจกเฉเจเจพเจฌเฉเจธ เจฌเจฃเจพเจเจเจฆเฉ เจธเจฎเฉเจ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจเฉเฉฑเจเจธเจฎ เจธเจฎเจฐเจฅเจฟเจค เจนเจจ (
#!/bin/bash
if ! su - postgres -c 'pg_dumpall > /dev/null'
then
echo 'pg_dumpall failed'
exit 125
fi
เจธเฉเจเจเจพเจเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ - เจฎเฉเจเฉเจฆ เจนเฉ
#!/bin/bash
# ะดะพะฑะฐะฒะปัะตะผ sql-ะทะฐะฟัะพั ะดะปั ะฟัะพะฒะตัะบะธ ะฒ ัะฐะนะป ะฒะพ ะฒัะตะผะตะฝะฝะพะน ะดะธัะตะบัะพัะธะธ
cat > /tmp/amcheck.sql << EOF
CREATE EXTENSION IF NOT EXISTS amcheck;
SELECT bt_index_check(c.oid), c.relname, c.relpages
FROM pg_index i
JOIN pg_opclass op ON i.indclass[0] = op.oid
JOIN pg_am am ON op.opcmethod = am.oid
JOIN pg_class c ON i.indexrelid = c.oid
JOIN pg_namespace n ON c.relnamespace = n.oid
WHERE am.amname = 'btree'
AND c.relpersistence != 't'
AND i.indisready AND i.indisvalid;
EOF
chown postgres: /tmp/amcheck.sql
# ะดะพะฑะฐะฒะปัะตะผ ัะบัะธะฟั ะดะปั ะทะฐะฟััะบะฐ ะฟัะพะฒะตัะพะบ ะฒัะตั
ะดะพัััะฟะฝัั
ะฑะฐะท ะฒ ะบะปะฐััะตัะต
# (ะพะฑัะฐัะธัะต ะฒะฝะธะผะฐะฝะธะต ััะพ ะฟะตัะตะผะตะฝะฝัะต ะธ ะทะฐะฟััะบ ะบะพะผะฐะฝะด โ ัะบัะฐะฝะธัะพะฒะฐะฝั)
cat > /tmp/run_amcheck.sh << EOF
for DBNAME in $(su - postgres -c 'psql -q -A -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;" ')
do
echo "Database: ${DBNAME}"
su - postgres -c "psql -f /tmp/amcheck.sql -v 'ON_ERROR_STOP=1' ${DBNAME}" && EXIT_STATUS=$? || EXIT_STATUS=$?
if [ "${EXIT_STATUS}" -ne 0 ]
then
echo "amcheck failed on DB: ${DBNAME}"
exit 125
fi
done
EOF
chmod +x /tmp/run_amcheck.sh
# ะทะฐะฟััะบะฐะตะผ ัะบัะธะฟั
/tmp/run_amcheck.sh > /tmp/amcheck.log
# ะดะปั ะฟัะพะฒะตัะบะธ ััะพ ะฒัั ะฟัะพัะปะพ ััะฟะตัะฝะพ ะผะพะถะฝะพ ะฟัะพะฒะตัะธัั exit code ะธะปะธ grepโะฝััั ะพัะธะฑะบั
if grep 'amcheck failed' "/tmp/amcheck.log"
then
echo 'amcheck failed: '
cat /tmp/amcheck.log
exit 125
fi
เจธเฉฐเจเฉเจช เจเจฐเจจ เจฒเจ
เจฎเฉเจ เจชเฉเจฐเจเจพเจธเจผเจจ เจจเฉเฉฐ เจคเจฟเจเจฐ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจฒเจ เจเจเจกเจฐเฉ เจฌเฉเจฐเฉเจกเจฟเจจ เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ เจ เจคเฉ WAL-G เจฆเฉ เจตเจฟเจเจพเจธ เจตเจฟเฉฑเจ เจเจธเจฆเฉ เจฏเฉเจเจฆเจพเจจ เจฒเจ เจตเจฟเจธเจผเฉเจธเจผ เจงเฉฐเจจเจตเจพเจฆ!
เจเจน เจเจธ เจจเฉเจ เจจเฉเฉฐ เจธเจฎเจพเจชเจค เจเจฐเจฆเจพ เจนเฉ. เจฎเฉเจจเฉเฉฐ เจเจฎเฉเจฆ เจนเฉ เจเจฟ เจฎเฉเจ เจธเฉเฉฑเจเจ เฉฑเจช เจฆเฉ เจธเฉเจ เจ เจคเฉ เจคเฉเจนเจพเจกเฉ เจเฉฐเจชเจจเฉ เจตเจฟเฉฑเจ เจเจธ เจเฉเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจตเฉฑเจกเฉ เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉเฉฐ เจฆเฉฑเจธเจฃ เจฆเฉ เจฏเฉเจ เจธเฉเฅค เจฎเฉเจ WAL-G เจฌเจพเจฐเฉ เจฌเจนเฉเจค เจเฉเจ เจธเฉเจฃเจฟเจ เจนเฉ, เจชเจฐ เจเจฆเฉ เจตเฉ เจฌเฉเจ เจฃ เจ เจคเฉ เจเจธเจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจฃ เจฒเจ เจเฉฐเจจเจพ เจธเจฎเจพเจ เจจเจนเฉเจ เจธเฉ. เจ เจคเฉ เจฎเฉเจ เจเจธเจจเฉเฉฐ เจเจฐ เจตเจฟเฉฑเจ เจฒเจพเจเฉ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจน เจฒเฉเจ เจฎเฉเจฐเฉ เจคเฉเจ เจฌเจพเจนเจฐ เจเจเจ.
เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ, เจเจน เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ เจเจฟ WAL-G เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ DBMS เจจเจพเจฒ เจตเฉ เจเฉฐเจฎ เจเจฐ เจธเจเจฆเจพ เจนเฉ:
MySQL / เจฎเจพเจฐเฉเจเจกเจพเจฌเฉ ;MongoDB ;เจซเจพเจเจเจกเฉเจธเจผเจจ เจกเฉ.เจฌเฉ ;- เจ เจคเฉ เจเจฎเจฟเจเจพเจ เจฆเฉเจเจฐเจพ เจจเจฟเจฐเจฃเจพ เจเจฐเจฆเฉ เจนเฉเจ, เจเจ เจนเฉเจฐ เจเจฎเฉเจฆ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ!
เจธเจฐเฉเจค: www.habr.com