เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ postgresql เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบเบฑเบš pgbackrest - เบซเบผเบฑเบเบชเบนเบ”เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบชเบนเป‰เป„เบงเบซเบ™เบธเปˆเบกเบˆเบฒเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ

เบ›เบฐเบ•เบดเป€เบชเบ”เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบš

เบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ‚เป‰เบญเบเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰. เปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ‚เป‰เบญเบเบˆเบฐเบ—เปเบฒเบ—เปˆเบฒเป€เบ›เบฑเบ™เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบš, เบซเบ™เป‰เบญเบเบเบงเปˆเบฒ dba. เปเบ•เปˆโ€ฆ

เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบฑเบ”เปเบˆเบ‡เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ postgresql. เบšเปเปˆเบกเบตเป€เบกเบ„ - เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰ SSH เปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบฎเป‰เบญเบ‡เบ‚เปเป€เบ‡เบดเบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰? เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบนเป‰ pgdump เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ cron, เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™เปเบŸเป‰เบกเบˆเบฑเบ”เป€เบเบฑเบšเบ—เบธเบเป†เบกเบทเป‰, เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบนเบ™เป€เบชเบเบซเบกเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เปเบŸเป‰เบกเป€เบเบฑเบšเบกเป‰เบฝเบ™เบ™เบตเป‰เบขเบนเปˆเบšเปˆเบญเบ™เป„เบ.

เป€เบงเบฅเบฒเบ™เบตเป‰เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปเบกเปˆเบ™เบงเปˆเบฒเบญเบตเบ‡เบ•เบฒเบกเปเบœเบ™เบเบฒเบ™, เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเป€เบ•เบตเบšเป‚เบ•เบ›เบฐเบกเบฒเบ™ +- 100 MB เบ•เปเปˆเบกเบทเป‰. เปเบ™เปˆเบ™เบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบญเบ‡เบชเบฒเบกเบญเบฒเบ—เบดเบ”เบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเบฑเบš pgdump เบˆเบฐเบซเบฒเบเป„เบ›. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™โ€‹เบกเบฒโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบนเป‰โ€‹เป„เบžโ€‹.

เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ? เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบš cat.

Incremental backup เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเบ„เบฑเบ”เบฅเบญเบ, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบญเบฑเบ™เปƒเบซเบกเปˆเปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเป€เบ•เบฑเบกเปƒเบˆเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡ (เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™) เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡ postgres, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบญเบเบซเบฒเบ›เบธเปˆเบกเบชเบตเบ‚เบฝเบง. เบ”เบต, เบ—เปˆเบฒเบ™เบฎเบนเป‰, เป€เบŠเบฑเปˆเบ™เปƒเบ™ AWS, DigitalOcean: เบ—เปˆเบฒเบ™เป„เบ”เป‰เบเบปเบ”เบ›เบธเปˆเบกเบซเบ™เบถเปˆเบ‡ - เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบš replication, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบเบปเบ”เบ—เบตเบชเบญเบ‡ - เบ—เปˆเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบ—เบตเบชเบฒเบก - เบ—เปˆเบฒเบ™เบกเป‰เบงเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบชเบญเบ‡เบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡. เบ‚เป‰เบญเบเบšเปเปˆเบžเบปเบšเบ›เบธเปˆเบกเบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡เบกเบท GUI เบ—เบตเปˆเบชเบงเบเบ‡เบฒเบก. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฎเบนเป‰เบˆเบฑเบเบซเบ™เบถเปˆเบ‡ (เบŸเบฃเบตเบซเบผเบทเบฅเบฒเบ„เบฒเบ–เบทเบ), เบ‚เบฝเบ™เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™.

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบนโ€‹เป‚เบโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™โ€‹เบชเบญเบ‡โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹ pgbarman ะธ pgbackrest. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบเบฑเบšเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ” (เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเบซเบผเบฒเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบ„เบดเบ”เป„เบฅเปˆเบ—เบธเบเบขเปˆเบฒเบ‡เบ•เบฒเบกเบ„เบนเปˆเบกเบทเป€เบเบปเปˆเบฒ), เปเบ•เปˆเบเบฑเบšเบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เป€เบญเบเบฐเบชเบฒเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš, เปเบ•เปˆเบšเปเปˆเบกเบตเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เบ—เบตเปˆเบ›เบฐเป€เบŠเบตเบ™เบซเบ™เป‰เบฒเบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ–เบทเบเบ‚เบฝเบ™เบ‚เบทเป‰เบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ (repository เบเบฑเบš backups) เปเบฅเบฐเบŸเบทเป‰เบ™เบŸเบนเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เบซเบผเบทเบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เป†เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ•เบปเป‰เบ™เบ•เป.

เบเบฒเบ™โ€‹เบเบถเบโ€‹เบญเบปเบšโ€‹เบฎเบปเบก

เป€เบžเบทเปˆเบญเบœเบฐเบฅเบดเบ”เบ›เบทเป‰เบกเบ„เบนเปˆเบกเบทเปƒเบซเบกเปˆ, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบชเบญเบ‡ VPS. เบ—เปเบฒเบญเบดเบ”เบˆเบฐเป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ (เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ—เบตเปˆเบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰), เปเบฅเบฐเบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบเบฑเบš postgres (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบฎเบธเปˆเบ™ 11 เบ‚เบญเบ‡ postgres).

เบกเบฑเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบต postgres เบ—เปˆเบฒเบ™เบกเบตเบฎเบฒเบ, เบœเบนเป‰เปƒเบŠเป‰ sudo, เบœเบนเป‰เปƒเบŠเป‰ postgres เปเบฅเบฐ postgres เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡ (เบœเบนเป‰เปƒเบŠเป‰ postgres เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบกเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡ postgresql), เปเบฅเบฐเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ repository เบกเบตเบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบเปเบฅเบฐ sudo (เปƒเบ™เบ„เบนเปˆเบกเบท. เบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰ pgbackrest เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰).

เป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบกเบตเบšเบฑเบ™เบซเบฒเปœเป‰เบญเบเบฅเบปเบ‡เปƒเบ™เป€เบงเบฅเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เปเบ™เบฐเบ™เบณเบ„เบทเบ™เปƒเปเปˆ, เบ‚เป‰เบญเบเบ‚เบฝเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเบญเบฝเบ‡ เบšเปˆเบญเบ™เบ—เบตเปˆ, เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เปƒเบ”เปเบฅเบฐเบ”เป‰เบงเบเบชเบดเบ”เบ—เบดเบญเบฑเบ™เปƒเบ”เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เบฝเบ™เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบšเบปเบ”เบ„เบงเบฒเบก.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ pgbackrest

เบ„เบฑเบ‡เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ (pgbackrest เบœเบนเป‰เปƒเบŠเป‰):

1. เบ”เบฒเบงเป‚เบซเบผเบ”เปเบŸเป‰เบกเบˆเบฑเบ”เป€เบเบฑเบšเบˆเบฒเบ pgbackrest เปเบฅเบฐเป‚เบญเบ™เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบต /build:

sudo mkdir /build
sudo wget -q -O - 
       https://github.com/pgbackrest/pgbackrest/archive/release/2.18.tar.gz | 
       sudo tar zx -C /build

2. เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹:

sudo apt-get update
sudo apt-get install build-essential libssl-dev libxml2-dev libperl-dev zlib1g-dev 
       libpq-dev

3. เบเบฒเบ™เบ›เบฐเบเบญเบš pgbackrest:

cd /build/pgbackrest-release-2.18/src && sudo ./configure
sudo make -s -C /build/pgbackrest-release-2.18/src

4. เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต /usr/bin:

sudo cp /build/pgbackrest-release-2.18/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

5. Pgbackrest เบ•เป‰เบญเบ‡เบเบฒเบ™ perl. เบ•เบดเบ”เบ•เบฑเป‰เบ‡:

sudo apt-get install perl

6. เบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบ—เบถเบ, เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบชเบดเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™:

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf

7. เบเบงเบ”เบชเบญเบš:

pgbackrest version

เป€เบŠเบตเบšเป€เบงเบต Postgres (เบœเบนเป‰เปƒเบŠเป‰ sudo เบซเบผเบทเบฎเบฒเบ):

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ pgbackrest เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบต postgres เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ (เปเบกเปˆเบ™เปเบฅเป‰เบง, pgbackrest เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบฑเบ‡เบชเบญเบ‡), เปเบ•เปˆเปƒเบ™เบงเบฑเบเบ—เบต 6 เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเบชเบญเบ‡เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ:

sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf

เปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ:

sudo chown postgres:postgres /var/log/pgbackrest
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบŠเบตเบšเป€เบงเบตเบœเปˆเบฒเบ™ SSH เบ—เบตเปˆเบšเปเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™

เป€เบžเบทเปˆเบญเปƒเบซเป‰ pgbackrest เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ postgres เปเบฅเบฐเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เป‚เบ”เบเปƒเบŠเป‰เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

เบ„เบฑเบ‡เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ (pgbackrest เบœเบนเป‰เปƒเบŠเป‰):

เบชเป‰เบฒเบ‡เบ„เบนเปˆเบ„เบต:

mkdir -m 750 /home/pgbackrest/.ssh
ssh-keygen -f /home/pgbackrest/.ssh/id_rsa 
       -t rsa -b 4096 -N ""

เบฅเบฐโ€‹เบกเบฑเบ”โ€‹เบฅเบฐโ€‹เบงเบฑเบ‡ เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ sudo.

เป€เบŠเบตเบšเป€เบงเบต Postgres (เบœเบนเป‰เปƒเบŠเป‰ sudo เบซเบผเบทเบฎเบฒเบ):

เบชเป‰เบฒเบ‡เบ„เบนเปˆเบ„เบต:

sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa 
       -t rsa -b 4096 -N ""

Repository (เบœเบนเป‰เปƒเบŠเป‰ sudo):

เบชเบณเป€เบ™เบปเบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต postgres เป„เบ›เปƒเบชเปˆเป€เบŠเบตเบšเป€เบงเบตเบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™:

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && 
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && 
       sudo ssh root@<postgres_server_ip> cat /var/lib/postgresql/.ssh/id_rsa.pub) | 
       sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบˆเบฐเบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบตเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบ. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ postgres!

เป€เบŠเบตเบšเป€เบงเบต Postgres (เบœเบนเป‰เปƒเบŠเป‰ sudo):

เบชเบณเป€เบ™เบปเบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เปƒเบชเปˆเป€เบŠเบตเบšเป€เบงเบตเบ”เป‰เบงเบ postgres:

(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && 
       echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && 
       sudo ssh root@<repository_server_ip> cat /home/pgbackrest/.ssh/id_rsa.pub) | 
       sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบˆเบฐเบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบตเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบ. เบ—เปˆเบฒเบ™โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เปƒเบชเปˆโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™โ€‹เปเบ—เป‰โ€‹เบ‚เบญเบ‡โ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบฎเบฒเบโ€‹เบ‚เบญเบ‡ repository เป„เบ”เป‰โ€‹!

เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡:

Repository (เบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบ, เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบšเปเบฅเบดเบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡):

sudo -u pgbackrest ssh postgres@<postgres_server_ip>

เป€เบŠเบตเบšเป€เบงเบต Postgres (เบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบ, เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบšเปเบฅเบดเบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡):

sudo -u postgres ssh pgbackrest@<repository_server_ip>

เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ postgres

เป€เบŠเบตเบšเป€เบงเบต Postgres (เบœเบนเป‰เปƒเบŠเป‰ sudo เบซเบผเบทเบฎเบฒเบ):

1. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ„เบฒเบฐเป€เบŠเบตเบšเป€เบงเบต postgres เบˆเบฒเบ IP เบžเบฒเบเบ™เบญเบ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ postgresql.conf (เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ /etc/postgresql/11/main folder), เป€เบžเบตเปˆเบกเปเบ–เบงเปƒเบชเปˆเบกเบฑเบ™:

listen_addresses = '*'

เบ–เป‰เบฒเป€เบชเบฑเป‰เบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบšเปเปˆเบ‚เบฝเบ™เบ„เบณเป€เบซเบฑเบ™ เบซเบผเบทเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบžเบฒเบฃเบฒเบกเบดเป€เบ•เบตเป€เบ›เบฑเบ™ '*'.

เปƒเบ™เป„เบŸเบฅเปŒ pg_hbaconf (เบเบฑเบ‡เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต /etc/postgresql/11/main) เป€เบžเบตเปˆเบกโ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

hostssl  all  all  0.0.0.0/0  md5
host  all  all  0.0.0.0/0  md5

เบšเปˆเบญเบ™เบ—เบตเปˆ:

hostssl/host - ะฟะพะดะบะปัŽั‡ะฐะตะผัั ั‡ะตั€ะตะท SSL (ะธะปะธ ะฝะตั‚)
all - ั€ะฐะทั€ะตัˆะฐะตะผ ะฟะพะดะบะปัŽั‡ะตะฝะธะต ะบะพ ะฒัะตะผ ะฑะฐะทะฐะผ
all - ะธะผั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั, ะบะพั‚ะพั€ะพะผัƒ ั€ะฐะทั€ะตัˆะฐะตะผ ะฟะพะดะบะปัŽั‡ะตะฝะธะต (ะฒัะตะผ)
0.0.0.0/0 - ะผะฐัะบะฐ ัะตั‚ะธ ั ะบะพั‚ะพั€ะพะน ะผะพะถะฝะพ ะฟะพะดะบะปัŽั‡ะฐั‚ัŒัั
md5 - ัะฟะพัะพะฑ ัˆะธั„ั€ะพะฒะฐะฝะธั ะฟะฐั€ะพะปั

2. เปƒเบซเป‰โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เปƒเบ™โ€‹ postgresql.conf (เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต /etc/postgresql/11/main) เบชเปเบฒเบฅเบฑเบš pgbackrest เป€เบฎเบฑเบ”เบงเบฝเบ:

archive_command = 'pgbackrest --stanza=main archive-push %p' # ะ“ะดะต main - ะฝะฐะทะฒะฐะฝะธะต ะบะปะฐัั‚ะตั€ะฐ. ะŸั€ะธ ัƒัั‚ะฐะฝะพะฒะบะต postgres ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ัะพะทะดะฐะตั‚ ะบะปะฐัั‚ะตั€ main.
archive_mode = on
max_wal_senders = 3
wal_level = replica

3. เบกเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ pgbackrest (/etc/pgbackrest/pgbackrest.conf):

[main]
pg1-path=/var/lib/postgresql/11/main

[global]
log-level-file=detail
repo1-host=<repository_server_ip>

4. เป‚เบซเบผเบ” postgresql เบ„เบทเบ™เปƒเปเปˆ:

sudo service postgresql restart

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ repository

Repository (เบœเบนเป‰เปƒเบŠเป‰ pgbackrest):

เปƒเบซเป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ pgbackrest
(/etc/pgbackrest/pgbackrest.conf):

[main]
pg1-host=<postgres_server_ip>
pg1-path=/var/lib/postgresql/11/main

[global]
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2 # ะŸะฐั€ะฐะผะตั‚ั€, ัƒะบะฐะทั‹ะฒะฐัŽั‰ะธะน ัะบะพะปัŒะบะพ ั…ั€ะฐะฝะธั‚ัŒ ะฟะพะปะฝั‹ั… ะฑัะบะฐะฟะพะฒ. ะข.ะต. ะตัะปะธ ัƒ ะฒะฐั ะตัั‚ัŒ ะดะฒะฐ ะฟะพะปะฝั‹ั… ะฑัะบะฐะฟะฐ ะธ ะฒั‹ ัะพะทะดะฐะตั‚ะต ั‚ั€ะตั‚ะธะน, ั‚ะพ ัะฐะผั‹ะน ัั‚ะฐั€ั‹ะน ะฑัะบะฐะฟ ะฑัƒะดะตั‚ ัƒะดะฐะปะตะฝ. ะœะพะถะฝะพ ะฟั€ะพะธะทะฝะพัะธั‚ัŒ ะบะฐะบ "ั…ั€ะฐะฝะธั‚ัŒ ะฝะต ะฑะพะปะตะต ะดะฒัƒั… ะฑัะบะฐะฟะพะฒ" - ะฟะพ ะฐะฝะฐะปะพะณะธะธ ั ั€ะพั‚ะฐั†ะธัะผะธ ะปะพะณะพะฒ. ะกะฟะฐัะธะฑะพ @Aytuar ะทะฐ ะธัะฟั€ะฐะฒะปะตะฝะธะต ะพัˆะธะฑะบะธ.
start-fast=y # ะะฐั‡ะธะฝะฐะตั‚ ั€ะตะทะตั€ะฒะฝะพะต ะบะพะฟะธั€ะพะฒะฐะฝะธะต ะฝะตะผะตะดะปะตะฝะฝะพ, ะฟั€ะพั‡ะธั‚ะฐั‚ัŒ ะฟั€ะพ ัั‚ะพั‚ ะฟะฐั€ะฐะผะตั‚ั€ ะผะพะถะฝะพ ั‚ัƒั‚ https://postgrespro.ru/docs/postgrespro/9.5/continuous-archiving

เบเบฒเบ™เบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™

Repository (เบœเบนเป‰เปƒเบŠเป‰ pgbackrest):

เบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเปเปˆเบชเบณเบฅเบฑเบšเบเบธเปˆเบก เบ•เบปเป‰เบ™เบ•เป:

sudo mkdir -m 770 /var/lib/pgbackrest
sudo chown -R pgbackrest /var/lib/pgbackrest/
sudo -u pgbackrest pgbackrest --stanza=main stanza-create

เบเบฒเบ™เบเบงเบ”เบเบฒ

เป€เบŠเบตเบšเป€เบงเบต Postgres (เบœเบนเป‰เปƒเบŠเป‰ sudo เบซเบผเบทเบฎเบฒเบ):

เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ postgres:

sudo -u postgres pgbackrest --stanza=main --log-level-console=info check

Repository (เบœเบนเป‰เปƒเบŠเป‰ pgbackrest):

เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ repository:

sudo -u pgbackrest pgbackrest --stanza=main --log-level-console=info check

เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเปƒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เป€เบชเบฑเป‰เบ™ "เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบดเป‰เบ™เบชเบธเบ”: เบชเปเบฒเป€เบฅเบฑเบ”เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”".

เป€เบกเบทเปˆเบญเบ? เบ‚เปเปƒเบซเป‰เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบชเปˆเบงเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบชเบธเบ”.

เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡

Repository (เบœเบนเป‰เปƒเบŠเป‰ pgbackrest):

1. เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡:

sudo -u pgbackrest pgbackrest --stanza=main backup

2. เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™:

ls /var/lib/pgbackrest/backup/main/

Pgbackrest เบˆเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบšเบ—เปเบฒเบญเบดเบ”. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบฅเบฐเบšเบปเบšเบชเป‰เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เบฅเบฐเบšเบธเบ—เบธเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก:

sudo -u pgbackrest pgbackrest --stanza=main --type=full backup

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ” console เบฅเบฐเบญเบฝเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เบฅเบฐเบšเบธ:

sudo -u pgbackrest pgbackrest --stanza=main --type=full --log-level-console=info backup

เบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™

เป€เบŠเบตเบšเป€เบงเบต Postgres (เบœเบนเป‰เปƒเบŠเป‰ sudo เบซเบผเบทเบฎเบฒเบ):

1. เบขเบธเบ”เบเบธเปˆเบกเปเบฅเปˆเบ™:

sudo pg_ctlcluster 11 main stop

2. เบเบฒเบ™โ€‹เบŸเบทเป‰เบ™โ€‹เบŸเบนโ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹:

sudo -u postgres pgbackrest --stanza=main --log-level-console=info --delta --recovery-option=recovery_target=immediate restore

ะงั‚ะพะฑั‹ ะฒะพััั‚ะฐะฝะพะฒะธั‚ัŒ ะฑะฐะทัƒ ะฒ ัะพัั‚ะพัะฝะธะต ะฟะพัะปะตะดะฝะตะณะพ ะŸะžะ›ะะžะ“ะž ะฑัะบะฐะฟะฐ ะธัะฟะพะปัŒะทัƒะนั‚ะต ะบะพะผะฐะฝะดัƒ ะฑะตะท ัƒะบะฐะทะฐะฝะธั recovery_target:

sudo -u postgres pgbackrest --stanza=main --log-level-console=info --delta restore

ะ’ะฐะถะฝะพ! ะŸะพัะปะต ะฒะพััั‚ะฐะฝะพะฒะปะตะฝะธั ะผะพะถะตั‚ ะพะบะฐะทะฐั‚ัŒัั ั‚ะฐะบ, ั‡ั‚ะพ ะฑะฐะทะฐ ะทะฐะฒะธัะฝะตั‚ ะฒ ั€ะตะถะธะผะต ะฒะพััั‚ะฐะฝะพะฒะปะตะฝะธั (ะฑัƒะดัƒั‚ ะพัˆะธะฑะบะธ ะฒ ะดัƒั…ะต ERROR: cannot execute DROP DATABASE in a read-only transaction). ะงะตัั‚ะฝะพ ะณะพะฒะพั€ั, ั ะตั‰ะต ะฝะต ะฟะพะฝัะป, ั ั‡ะตะผ ัั‚ะพ ัะฒัะทะฐะฝะพ. ะ ะตัˆะฐะตั‚ัั ัะปะตะดัƒัŽั‰ะธะผ ะพะฑั€ะฐะทะพะผ (ะฝัƒะถะฝะพ ะฑัƒะดะตั‚ ะผะฐะปะพัั‚ัŒ ะฟะพะดะพะถะดะฐั‚ัŒ ะฟะพัะปะต ะธัะฟะพะปะฝะตะฝะธั ะบะพะผะฐะฝะดั‹):

sudo -u postgres psql -c "select pg_wal_replay_resume()"

ะะฐ ัะฐะผะพะผ ะดะตะปะต, ะตัั‚ัŒ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฒะพััั‚ะฐะฝะพะฒะธั‚ัŒ ะบะพะฝะบั€ะตั‚ะฝั‹ะน ะฑัะบะฐะฟ ะฟะพ ะตะณะพ ะธะผะตะฝะธ. ะ—ะดะตััŒ ั ะปะธัˆัŒ ัƒะบะฐะถัƒ ััั‹ะปะบัƒ ะฝะฐ ะพะฟะธัะฐะฝะธะต ะดะฐะฝะฝะพะน ั„ะธั‡ะธ ะฒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ. ะ ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะธ ัะพะฒะตั‚ัƒัŽั‚ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะดะฐะฝะฝั‹ะน ะฟะฐั€ะฐะผะตั‚ั€ ั ะพัั‚ะพั€ะพะถะฝะพัั‚ัŒัŽ ะธ ะพะฑัŠััะฝััŽั‚ ะฟะพั‡ะตะผัƒ. ะžั‚ ัะตะฑั ะผะพะณัƒ ะดะพะฑะฐะฒะธั‚ัŒ, ั‡ั‚ะพ ั ะตะณะพ ะธัะฟะพะปัŒะทะพะฒะฐะป. ะ•ัะปะธ ะพั‡ะตะฝัŒ ะฝัƒะถะฝะพ โ€” ัƒะฑะตะดะธั‚ะตััŒ, ั‡ั‚ะพ ะฟะพัะปะต ะฒะพััั‚ะฐะฝะพะฒะปะตะฝะธั ะฑะฐะทะฐ ะฒั‹ัˆะปะฐ ะธะท recovery mode (select pg_is_in_recovery() ะดะพะปะถะตะฝ ะฟะพะบะฐะทะฐั‚ัŒ ยซfยป) ะธ ะฝะฐ ะฒััะบะธะน ัะปัƒั‡ะฐะน ัะดะตะปะฐะนั‚ะต ะฟะพะปะฝั‹ะน ะฑัะบะฐะฟ ะฟะพัะปะต ะฒะพััั‚ะฐะฝะพะฒะปะตะฝะธั.

3. เป€เบฅเบตเปˆเบกเบเบธเปˆเบก:

sudo pg_ctlcluster 11 main start

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเบชเบญเบ‡:

Repository (เบœเบนเป‰เปƒเบŠเป‰ pgbackrest):

sudo pgbackrest --stanza=main backup

เบซเบกเบปเบ”โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ™เบตเป‰. เบชเบฐเบซเบฅเบธเบšเบฅเบงเบกเปเบฅเป‰เบง, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบงเปˆเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบ—เปเบฒเบ—เปˆเบฒเป€เบ›เบฑเบ™ dba เบŠเบฑเป‰เบ™เบชเบนเบ‡เปเบฅเบฐเบˆเบฐเปƒเบŠเป‰เป€เบกเบ„เปƒเบ™เป‚เบญเบเบฒเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบ. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบญเบ‡เบเปเบฒเบฅเบฑเบ‡เป€เบฅเบตเปˆเบกเบชเบถเบเบชเบฒเบซเบปเบงเบ‚เปเป‰เบ•เปˆเบฒเบ‡เป†เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เบฝเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบ•เปเปˆเบŠเบธเบกเบŠเบปเบ™เปเบฅเบฐเบญเบญเบเบˆเบฒเบเปเบœเปˆเบ™ cheat เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบชเปเบฒเบฅเบฑเบšเบ•เบปเบ™เป€เบญเบ‡.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ‚เป‰เบญเบเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเป€เบžเบตเปˆเบกเป€เบ•เบตเบก - เบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเบ‚เปเป‰เบกเบนเบ™เปƒเบซเป‰เบเบฑเบšเบเบธเปˆเบกเบ—เบตเปˆเบชเบฐเบญเบฒเบ”, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบเบฑเบš S3, เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบœเปˆเบฒเบ™ rsync.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™