pgbackrest เด‰เดณเตเดณ เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ postgresql เดฌเดพเด•เตเด•เดชเตเดชเตเด•เตพ - เดกเดตเดฒเดชเตเดชเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดฏเตเดต เดชเต‹เดฐเดพเดณเดฟเด•เตเด•เตเดณเตเดณ เด•เต‹เดดเตโ€Œเดธเต

เดŽ

เดžเดพเดจเตŠเดฐเต เดกเต†เดตเดฒเดชเตเดชเดฑเดพเดฃเต. เดžเดพเตป เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฏเดฟ เดฎเดพเดคเตเดฐเด‚ เด•เต‹เดกเต เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด’เดฐเต เดตเดฟเดงเดคเตเดคเดฟเดฒเตเด‚ เดžเดพเตป เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดกเตโ€Œเดฎเดฟเดจเดฟเดธเตโ€ŒเดŸเตเดฐเต‡เดฑเตเดฑเดฑเดพเดฏเดฟ เดจเดŸเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดตเดณเดฐเต† เด•เตเดฑเดตเต เด’เดฐเต dba. เดชเด•เตเดทเต‡โ€ฆ

postgresql เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต† เด’เดฐเต เดฌเดพเด•เตเด•เดชเตเดชเต เดŽเดจเดฟเด•เตเด•เต เด“เตผเด—เดจเตˆเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดพเดฏเดฟ เดตเดจเตเดจเต. เดฎเต‡เด˜เด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ - SSH เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•, เดชเดฃเด‚ เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเดพเดคเต† เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•. เด…เดคเตเดคเดฐเด‚ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เดจเดฎเตเดฎเตพ เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต? เด…เดคเต เดถเดฐเดฟเดฏเดพเดฃเต, เดžเด™เตเด™เตพ pgdump เด•เตเดฐเต‹เดฃเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเตเดจเตเดจเต, เดŽเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด‚ เด†เตผเด•เตเด•เตˆเดตเดฟเดฒเต‡เด•เตเด•เต เดฌเดพเด•เตเด•เดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเดพเตฝ, เดžเด™เตเด™เตพ เดˆ เด†เตผเด•เตเด•เตˆเดตเต เดŽเดตเดฟเดŸเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฒเดพเดจเตเด•เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเตเดฐเดคเดฟเดฆเดฟเดจเด‚ +- 100 MB เดตเดฐเต† เดตเดณเดฐเต‡เดฃเตเดŸเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เด‡เดคเตเดคเดตเดฃ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดฐเดฃเตเดŸเดพเดดเตเดšเดฏเตเด•เตเด•เต เดถเต‡เดทเด‚ pgdump เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดฒเตเดฒเดพเด‚ เดฌเดพเด•เตเด•เดชเตเดชเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด†เด—เตเดฐเดนเด‚ เด…เดชเตเดฐเดคเตเดฏเด•เตเดทเดฎเดพเด•เตเด‚. เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ เดฌเดพเด•เตเด•เดชเตเดชเตเด•เตพ เดฐเด•เตเดทเดพเดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดฐเตเดจเตเดจเดคเต.

เดฐเดธเด•เดฐเดฎเดพเดฃเต‹? เดชเต‚เดšเตเดšเดฏเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดพเด—เดคเด‚.

เดŽเดฒเตเดฒเดพ เดธเต‹เดดเตโ€Œเดธเต เดซเดฏเดฒเตเด•เดณเตเด‚ เดชเด•เตผเดคเตเดคเดพเดคเตเดค เด’เดฐเต เดคเดฐเด‚ เดฌเดพเด•เตเด•เดชเตเดชเดพเดฃเต เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ เดฌเดพเด•เตเด•เดชเตเดชเต, เดŽเดจเตเดจเดพเตฝ เดชเตเดคเดฟเดฏเดตเดฏเตเด‚ เดฎเตเดฎเตเดชเดคเตเดคเต† เดชเด•เตผเดชเตเดชเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดฎเดพเดฑเดฟเดฏเดตเดฏเตเด‚ เดฎเดพเดคเตเดฐเด‚.

เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต‡เดธเดฟเดจเตเดฑเต† เดธเด™เตเด•เต€เตผเดฃเดคเด•เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป (เด…เด•เตเด•เดพเดฒเดคเตเดคเต) เดคเต€เตผเดคเตเดคเตเด‚ เด‡เดทเตเดŸเดชเตเดชเต†เดŸเดพเดคเตเดค เดเดคเตŠเดฐเต เดกเดตเดฒเดชเตเดชเดฑเต†เดฏเตเด‚ เดชเต‹เดฒเต†, เดชเดšเตเดš เดฌเดŸเตเดŸเตบ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต. AWS, DigitalOcean เดชเต‹เดฒเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเด‚: เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดฌเดŸเตเดŸเตบ เด…เดฎเตผเดคเตเดคเดฟ - เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเด•เตผเดชเตเดชเต เดฒเดญเดฟเดšเตเดšเต, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เด…เดฎเตผเดคเตเดคเดฟ - เดจเดฟเด™เตเด™เตพ เดฌเดพเด•เตเด•เดชเตเดชเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเต, เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต‡เดคเต - เดจเดฟเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เด•เตเดฑเดšเตเดšเต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเตเด•เตพ เดชเดฟเดจเตเดจเต‹เดŸเตเดŸเต เดฎเดพเดฑเตเดฑเดฟ. เด’เดฐเต เดฌเดŸเตเดŸเดฃเต‹ เดฎเดจเต‹เดนเดฐเดฎเดพเดฏ GUI เดŸเต‚เดณเต‹ โ€‹โ€‹เดžเดพเตป เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต†เดฃเตเดฃเด‚ (เดธเตŒเดœเดจเตเดฏเดฎเต‹ เดตเดฟเดฒเด•เตเดฑเดžเตเดžเดคเต‹) เด…เดฑเดฟเดฏเดพเดฎเต†เด™เตเด•เดฟเตฝ, เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเตเด•.

เด—เต‚เด—เดฟเตพ เดšเต†เดฏเตเดคเดคเดฟเดจเต เดถเต‡เดทเด‚ เดฐเดฃเตเดŸเต เดŸเต‚เดณเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ pgbarman ะธ pgbackrest. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเดฟเตฝ เดžเดพเตป เดตเดฟเดœเดฏเดฟเดšเตเดšเดฟเดฒเตเดฒ (เดตเดณเดฐเต† เดตเดฟเดฐเดณเดฎเดพเดฏ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป, เดชเดดเดฏ เดฎเดพเดจเตเดตเดฒเตเด•เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดŽเดฒเตเดฒเดพเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเต), เดŽเดจเตเดจเดพเตฝ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเดฟเตฝ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดคเตเดฒเตเดฏเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟ, เดชเด•เตเดทเต‡ เด•เตเดฑเดตเตเด•เดณเดฟเดฒเตเดฒ. เดธเดฎเดพเดจเดฎเดพเดฏ เดšเตเดฎเดคเดฒ เดจเต‡เดฐเดฟเดŸเตเดจเตเดจเดตเดฐเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เดพเตป, เดˆ เดฒเต‡เด–เดจเด‚ เดŽเดดเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต.

เดˆ เดฒเต‡เด–เดจเด‚ เดตเดพเดฏเดฟเดšเตเดšเดคเดฟเดจเตเดถเต‡เดทเด‚, เด‡เตปเด•เตเดฐเดฟเดฎเต†เดจเตเดฑเตฝ เดฌเดพเด•เตเด•เดชเตเดชเตเด•เตพ เดŽเด™เตเด™เดจเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด…เดต เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต (เดฌเดพเด•เตเด•เดชเตเดชเตเด•เดณเตเดณเตเดณ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ) เดธเต‡เดตเต เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเตเด‚ เดชเตเดฐเดงเดพเดจ เดธเต†เตผเดตเดฑเดฟเดฒเต† เดกเดพเดฑเตเดฑ เดจเดทเตโ€ŒเดŸเดฎเต‹ เดฎเดฑเตเดฑเต เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเต‹ เด‰เดฃเตเดŸเดพเดฏเดพเตฝ เด…เดต เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เตพ เดชเด เดฟเด•เตเด•เตเด‚.

เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตฝ

เดฎเดพเดจเตเดตเตฝ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต VPS เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เดธเด‚เดญเดฐเดฃเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ (เดฌเดพเด•เตเด•เดชเตเดชเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจ เดถเต‡เด–เดฐเด‚), เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดธเตเดณเตเดณ เดธเต†เตผเดตเตผ เดคเดจเตเดจเต† (เดŽเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต‡เดธเดฟเดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเต 11).

เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดธเต เด‰เดณเตเดณ เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฑเต‚เดŸเตเดŸเต, เดธเตเดกเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต, เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดธเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต, เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดธเต เดŽเดจเตเดจเดฟเดต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต (postgresql เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดธเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดธเตเดตเดฏเดฎเต‡เดต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚), เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดธเต†เตผเดตเดฑเดฟเตฝ เดฑเต‚เดŸเตเดŸเตเด‚ เดธเตเดกเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเตเด‚ เด‰เดฃเตเดŸเต (เดฎเดพเดจเตเดตเดฒเดฟเตฝ 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 เด‰เดณเตเดณ เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเตฝ pgbackrest เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต† เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฃเต (เด…เดคเต†, เดฐเดฃเตเดŸเต เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเตเด‚ pgbackrest เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เดฃเด‚), เดŽเดจเตเดจเดพเตฝ เด†เดฑเดพเดฎเดคเตเดคเต† เด–เดฃเตเดกเดฟเด•เดฏเดฟเตฝ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต†เดฏเตเด‚ เด…เดตเดธเดพเดจเดคเตเดคเต†เดฏเตเด‚ เด•เดฎเดพเตปเดกเตเด•เตพ:

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 -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 ""

เดถเต‡เด–เดฐเด‚ (เดธเตเดกเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต):

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดชเตŠเดคเต เด•เต€ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเตเด•:

(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

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดฑเต‚เดŸเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดณเตเดณ เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเด‚. เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดฑเต‚เดŸเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเดฟเด™เตเด™เตพ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต!

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเตผ (เดธเตเดกเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต):

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดชเดฌเตเดฒเดฟเด•เต เด•เต€ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเตเด•:

(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

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดฑเต‚เดŸเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดณเตเดณ เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเด‚. เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดฑเต‚เดŸเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเดฟเด™เตเด™เตพ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต!

เดžเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต:

เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ (เดฑเต‚เดŸเตเดŸเต เดฏเต‚เดธเตผ, เดชเดฐเต€เด•เตเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดถเตเดฆเตเดงเดฟเด•เตเด•เดพเดฏเดฟ):

sudo -u pgbackrest ssh postgres@<postgres_server_ip>

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเตผ (เดฑเต‚เดŸเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต, เดชเดฐเต€เด•เตเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดถเตเดฆเตเดงเดฟเด•เตเด•เดพเดฏเดฟ):

sudo -u postgres ssh pgbackrest@<repository_server_ip>

เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดจเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเตผ (เดธเตเดกเต‹ เดฏเต‚เดธเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเต‚เดŸเตเดŸเต):

1. เดฌเดพเดนเตเดฏ เดเดชเดฟเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเดฑเดฟเตฝ เดฎเตเดŸเตเดŸเตเดจเตเดจเดคเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเด• postgresql.conf (/etc/postgresql/11/main เดซเต‹เตพเดกเดฑเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต), เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดฒเตˆเตป เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต:

listen_addresses = '*'

เด…เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดฒเตˆเตป เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด’เดจเตเดจเตเด•เดฟเตฝ เด…เดญเดฟเดชเตเดฐเดพเดฏเดฎเดฟเดŸเตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดฎเต‚เดฒเตเดฏเด‚ '*' เด†เดฏเดฟ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•.

เดซเดฏเดฒเดฟเตฝ pg_hba.conf (เดซเต‹เตพเดกเดฑเดฟเดฒเตเด‚ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต /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

เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดธเต†เตผเดตเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดถเต‡เด–เดฐเด‚ (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

เด’เดฐเต เดถเต‡เด–เดฐเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดถเต‡เด–เดฐเด‚ (pgbackrest เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต):

เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเด‚เดญเดฐเดฃเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด• เดชเตเดฐเดงเดพเดจ:

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

เดชเดฐเดฟเดถเต‡เดพเดงเดจ

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเตผ (เดธเตเดกเต‹ เดฏเต‚เดธเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเต‚เดŸเตเดŸเต):

เดžเด™เตเด™เตพ เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเดฑเดฟเตฝ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต:

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

เดถเต‡เด–เดฐเด‚ (pgbackrest เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต):

เดžเด™เตเด™เตพ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดธเต†เตผเดตเดฑเดฟเตฝ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต:

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

เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเตฝ "เดšเต†เด•เตเด•เต เด•เดฎเดพเตปเดกเต เดŽเตปเดกเต: เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ" เดŽเดจเตเดจ เดฒเตˆเตป เด•เดพเดฃเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต.

เดฎเดŸเตเดคเตเดคเต‹? เดจเดฎเตเด•เตเด•เต เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เดญเดพเด—เดคเตเดคเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚.

เด’เดฐเต เดฌเดพเด•เตเด•เดชเตเดชเต เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเต

เดถเต‡เด–เดฐเด‚ (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

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดฟเดถเดฆเดฎเดพเดฏ เด•เตบเดธเต‹เตพ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดตเต‡เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เด‡เดคเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•:

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

เด’เดฐเต เดฌเดพเด•เตเด•เดชเตเดชเต เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดธเต†เตผเดตเตผ (เดธเตเดกเต‹ เดฏเต‚เดธเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเต‚เดŸเตเดŸเต):

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

เดชเตเดฐเดงเดพเดจเด‚! เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เดฒเดฟเดจเตเดถเต‡เดทเด‚, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ เดฎเต‹เดกเดฟเตฝ เด•เตเดŸเตเด™เตเด™เดฟเดชเตเดชเต‹เดฏเต‡เด•เตเด•เดพเด‚ (เดชเดฟเดถเด•เต เดชเต‹เดฒเตเดณเตเดณ เดชเดฟเดถเด•เตเด•เตพ เด‰เดฃเตเดŸเดพเด•เตเด‚: เดตเดพเดฏเดจ-เดฎเดพเดคเตเดฐเด‚ เด‡เดŸเดชเดพเดŸเดฟเตฝ DROP DATABASE เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ). เดธเดคเตเดฏเด‚ เดชเดฑเดžเตเดžเดพเตฝ, เด‡เดคเต เดŽเดจเตเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‡เดคเตเดตเดฐเต† เดฎเดจเดธเตเดธเดฟเดฒเดพเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดชเดฐเดฟเดนเดพเดฐเด‚ เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต (เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดคเดคเดฟเดจเต เดถเต‡เดทเด‚ เดจเดฟเด™เตเด™เตพ เด…เตฝเดชเตเดชเด‚ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต):

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

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดฌเดพเด•เตเด•เดชเตเดชเต เด…เดคเดฟเดจเตเดฑเต† เดชเต‡เดฐเดฟเตฝ เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เดธเดพเดงเดฟเด•เตเด•เตเด‚. เด‡เดตเดฟเดŸเต† เดžเดพเตป เดฎเดพเดคเตเดฐเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ เดˆ เดธเดตเดฟเดถเต‡เดทเดคเดฏเตเดŸเต† เดตเดฟเดตเดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดฒเดฟเด™เตเด•เต เดžเดพเตป เดจเตฝเด•เตเด‚. เดˆ เด“เดชเตเดทเตป เดœเดพเด—เตเดฐเดคเดฏเต‹เดŸเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต†เดจเตเดจเต เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด‰เดชเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต. เดžเดพเตป เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดคเต เดŽเดจเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดจเตเดจเต† เดšเต‡เตผเด•เตเด•เดพเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดถเดฐเดฟเด•เตเด•เตเด‚ เด†เดตเดถเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เดฒเดฟเดจเตเดถเต‡เดทเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ เดฎเต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฑเดคเตเดคเตเด•เดŸเด•เตเด•เตเดจเตเดจเต (pg_is_in_recovery() เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด• "f" เด•เดพเดฃเดฟเด•เตเด•เดฃเด‚) เด•เต‚เดŸเดพเดคเต†, เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เดฒเดฟเดจเตเดถเต‡เดทเด‚ เด’เดฐเต เดชเต‚เตผเดฃเตเดฃ เดฌเดพเด•เตเด•เดชเตเดชเต เด‰เดฃเตเดŸเดพเด•เตเด•เตเด•.

3. เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•:

sudo pg_ctlcluster 11 main start

เดฌเดพเด•เตเด•เดชเตเดชเต เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดžเด™เตเด™เตพ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดฌเดพเด•เตเด•เดชเตเดชเต เดจเดŸเดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

เดถเต‡เด–เดฐเด‚ (pgbackrest เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต):

sudo pgbackrest --stanza=main backup

เด…เดคเตเดฐเดฏเต‡เดฏเตเดณเตเดณเต‚. เด‰เดชเดธเด‚เดนเดพเดฐเดฎเดพเดฏเดฟ, เดžเดพเตป เด’เดฐเต เดธเต€เดจเดฟเดฏเตผ เดกเดฟเดฌเดฟเดŽ เด†เดฏเดฟ เด…เดญเดฟเดจเดฏเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เดšเต†เดฑเดฟเดฏ เด…เดตเดธเดฐเดคเตเดคเดฟเตฝ เดฎเต‡เด˜เด™เตเด™เดณเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเต†เดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเดฒเดตเดฟเตฝ, เดžเดพเตป เดคเดจเตเดจเต† เดฌเดพเด•เตเด•เดชเตเดชเต, เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป, เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚ เดคเตเดŸเด™เตเด™เดฟเดฏ เดตเดฟเดตเดฟเดง เดตเดฟเดทเดฏเด™เตเด™เตพ เดชเด เดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเด•เตเด•เต เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดธเด‚เดญเดพเดตเดจ เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดšเต†เดฑเดฟเดฏ เดšเต€เดฑเตเดฑเต เดทเต€เดฑเตเดฑเตเด•เตพ เดŽเดจเดฟเด•เตเด•เดพเดฏเดฟ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดžเดพเตป เดซเดฒเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเต†เดฑเดฟเดฏ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดŽเดดเตเดคเตเดจเตเดจเต.

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเตฝ เดžเดพเตป เด…เดงเดฟเด• เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚ - เด’เดฐเต เด•เตเดฒเต€เตป เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ, เดฌเดพเด•เตเด•เดชเตเดชเตเด•เดณเตเดŸเต† เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป, เดŽเดธเต 3 เดฒเต‡เด•เตเด•เต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตฝ, rsync เดตเดดเดฟเดฏเตเดณเตเดณ เดฌเดพเด•เตเด•เดชเตเดชเตเด•เตพ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•