Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ Patroni เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบžเป‰เบญเบกเบชเบนเบ‡เบชเปเบฒเบฅเบฑเบš PostgreSQL. เปเบ•เปˆ Patroni เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเปเบกเปˆเปเบšเบš, เบšเปเปˆเปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก (เป€เบŠเบดเปˆเบ‡เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง, เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบญเบเบฐเบชเบฒเบ™เป€เบงเบปเป‰เบฒ). เบขเบนเปˆ glance เบ—เปเบฒเบญเบดเบ”, เป‚เบ”เบเป„เบ”เป‰ configure Patroni เปƒเบ™เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบเบญเบ”เบขเป‰เบฝเบกเปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เบกเบฑเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเบ—เปเบฒเบฅเบฒเบเบเบธเปˆเบก. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบชเบฐเป€เบซเบกเบตเป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบงเบเบ‡เบฒเบกเปเบฅเบฐเบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เปเบฅเบฐเปƒเบ™เบ—เป‰เบฒเบเบ›เบต 2018, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเปƒเบŠเป‰ Patroni เบŠเป‰เบฒเป†. เปเบฅเบฐเบšเบฒเบ‡เบ›เบฐเบชเบปเบšเบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเป„เบ”เป‰เบ–เบทเบเบชเบฐเบชเบปเบก. เบžเบงเบเป€เบฎเบปเบฒเบงเบดเบ™เบดเบ”เป„เบชเบกเบฑเบ™, เบ›เบฑเบšเปเบ•เปˆเบ‡เบกเบฑเบ™, เปเบฅเบฐเบกเบฒเบฎเบญเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปเบฅเบฐเปƒเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ.

เบ™เบญเบเบˆเบฒเบ Postgres, เบ‚เป‰เบญเบเบฎเบฑเบ Linux. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบกเบฑเบ poking เปเบฅเบฐโ€‹เบชเปเบฒโ€‹เบซเบผเบงเบ”โ€‹เบกเบฑเบ™โ€‹, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบกเบฑเบโ€‹เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบซเบผเบฑเบโ€‹. เบ‚เป‰เบญเบเบกเบฑเบ virtualization, containers, Docker, Kubernetes. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบชเบปเบ™เปƒเบˆเบ‚เป‰เบญเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบ™เบดเป„เบชเบ‚เบญเบ‡ admin เป€เบเบปเปˆเบฒเปเบกเปˆเบ™เป€เบญเบปเบฒเบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบ‚เป‰เบญเบเบฎเบฑเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆ. เปเบฅเบฐเบ‚เป‰เบญเบเบฎเบฑเบ postgres เบชเบดเปˆเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบซเบฒเบ™, i.e. replication, backup. เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบซเบงเปˆเบฒเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ‚เป‰เบญเบเบ‚เบฝเบ™เปƒเบ™ Go. เบ‚เป‰เบญเบเบšเปเปˆเปเบกเปˆเบ™เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบŠเบญเบšเปเบง, เบ‚เป‰เบญเบเบžเบฝเบ‡เปเบ•เปˆเบ‚เบฝเบ™เปƒเบ™ Go เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบญเบ‡. เปเบฅเบฐเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเบกเบตเบ„เบงเบฒเบกเบชเบธเบ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

  • เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบซเบผเบฒเบเป†เบ—เปˆเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒ Postgres เบšเปเปˆเบกเบต HA (High Availability) เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡. เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบš HA, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™, เบžเบฐเบเบฒเบเบฒเบกเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ™.
  • เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เปเบฅเบฐ Patroni เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบžเบงเบเบกเบฑเบ™, เป€เบŠเบดเปˆเบ‡เปเบเป‰เป„เบ‚ HA เบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบขเบฑเบ™เปเบฅเบฐเบ”เบตเบซเบผเบฒเบ. เปเบ•เปˆเป‚เบ”เบเบเบฒเบ™เบงเบฒเบ‡เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡เปเบฅเบฐเปเบฅเปˆเบ™เบกเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ‡เบซเบกเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบœเบฐเบฅเบดเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเบšเบฒเบ‡เบšเบฑเบ™เบซเบฒ, เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ Patroni เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบžเบงเบเป€เบ‚เบปเบฒเปเบ™เบงเปƒเบ”. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆ.
  • เปเบ•เปˆเปƒเบ™เบžเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบžเบงเบเป€เบฎเบปเบฒเบžเบปเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปเบฅเบฐเบ‚เป‰เบญเบเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.
  • เบ‚เป‰เบญเบเบˆเบฐเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบงเบดเบ™เบดเบ”เป„เบชเบกเบฑเบ™เปเบ™เบงเปƒเบ”, เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡ - เบšเปเปˆเบงเปˆเบฒเบˆเบฐเบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบซเบผเบทเบšเปเปˆเบŠเปˆเบงเบ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

  • เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เบšเบญเบโ€‹เบ—เปˆเบฒเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡ Patroniโ€‹, เป€เบžเบฒเบฐโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ” google เบกเบฑเบ™โ€‹เปƒเบ™โ€‹เบญเบดเบ™โ€‹เป€เบ•เบตโ€‹เป€เบ™เบฑเบ”โ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบšเบดเปˆเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเปเบœเบ™เบงเบฒเบ”เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเป‚เบ”เบเบเบฒเบ™เบŠเบญเบเบซเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”.
  • เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ„เบปเบ™เบญเบทเปˆเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเป€เบŠเบตเบ™.
  • เปเบฅเบฐเบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ™เบญเบ Patroni เปเบฅเบฐ PostgreSQL. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบธเปˆเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบฅเบปเป‰เบกเบฅเบปเบ‡, เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบš, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ 6-7-8 เป€เบ”เบทเบญเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™. เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบฎเบญเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡. เปเบฅเบฐเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบซเบฒเบเป„เบ›. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡เบกเบฒเบ›เบฐเบกเบฒเบ™เบซเบปเบเป€เบ”เบทเบญเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบชเบปเบ”เบขเบนเปˆเปƒเบ™เบซเบปเบงเบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบฅเบฐเบ‚เป‰เบญเบเบˆเบทเปˆเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

Patroni เปเบกเปˆเบ™เบซเบเบฑเบ‡?

  • เบ™เบตเป‰เปเบกเปˆเบ™เปเบกเปˆเปเบšเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ HA. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เป€เบงเบปเป‰เบฒเบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™. เปเบฅเบฐเบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบเบฐเบˆเปˆเบฒเบ‡เปเบˆเป‰เบ‡เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบฒเบ. Patroni เบšเปเปˆเปเบกเปˆเบ™เบฅเบนเบเบ›เบทเบ™เป€เบ‡เบดเบ™เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, i.e. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบžเบฐเบเบฒเบเบฒเบกเปƒเบซเป‰เบกเบฑเบ™เป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”.
  • เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบงเปเบ—เบ™เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เปเบ•เปˆเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš init เบชเปเบฒเบฅเบฑเบš Postgres เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบกเบฑเบ™เป€เบฅเบตเปˆเบก Postgres, เบขเบธเบ”เบกเบฑเบ™, restarts เบกเบฑเบ™, เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบ›เปˆเบฝเบ™ topology เบ‚เบญเบ‡ cluster เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
  • เบ•เบฒเบกเบ™เบฑเป‰เบ™เปเบฅเป‰เบง, เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบก, เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™, เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเปเบ™เบงเปƒเบ”, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบšเบฒเบ‡เบŠเบฐเบ™เบดเบ”เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™. เปเบฅเบฐเบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ™เบตเป‰, Patroni เป„เบ”เป‰เป€เบญเบปเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฑเบ”เปƒเบ™เบฅเบฐเบšเบปเบšเบžเบฒเบเบ™เบญเบ. เบกเบฑเบ™เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบˆเบเบขเบฒเบ. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ Etcd, Consul, ZooKeeper, เบซเบผเบท kubernetes Etcd, i.e., เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.
  • เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡ Patroni เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบš autofileover เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡, เบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒ Repmgr เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš, filer เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบ”เป‰เบงเบ Repmgr เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบผเบฑเบš, เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ autofileover, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบทเปˆเบกเบญเบตเบ. Patroni เบกเบต autofileover เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เปเบฅเป‰เบง.
  • เปเบฅเบฐโ€‹เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบชเบดเปˆเบ‡โ€‹เบญเบทเปˆเบ™เป†โ€‹เบญเบตเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เป€เบžเบตเปˆเบกเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปƒเบซเบกเปˆ, เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบฅเบฑเบเบ™เป‰เบญเบเปเบกเปˆเบ™เบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ Patroni เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ” autofileover เป„เบ”เป‰เบ”เบตเปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบธเปˆเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ„เบปเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡ topology เบ‚เบญเบ‡เบเบธเปˆเบก.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบ•เปˆเป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเปƒเบŠเป‰ Patroni, เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ. เบ–เป‰เบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบต Postgres, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰ Patroni เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš Patroni เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš DCS, เบšเปˆเบญเบ™เบ—เบตเปˆเบฅเบฑเบ”เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰. เปเบฅเบฐเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ somehow. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ—เปเบฒเบฅเบฒเบ?

เบญเบฒเบ”เบˆเบฐเปเบ•เบ:

  • Postgres เบญเบฒเบ”เบˆเบฐเปเบ•เบ. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เปเบกเปˆเบšเบปเบ”เบซเบผเบทเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡, เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เบญเบฒเบ”เบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบง.
  • Patroni เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบญเบฒเบ”เบˆเบฐเปเบ•เบ.
  • DCS, เบšเปˆเบญเบ™เบ—เบตเปˆเบฅเบฑเบ”เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰, เบญเบฒเบ”เบˆเบฐเปเบ•เบ.
  • เปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบญเบฒเบ”เบˆเบฐเปเบ•เบ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบˆเบธเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเปเบฅเบฐเบ™เบตเบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ, เบšเปเปˆเปเบกเปˆเบ™เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบงเปˆเบฒเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบซเบผเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบš. เปเบฅเบฐเบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบ subjective, เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐ disassemble ... เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเปเบกเปˆเบ™เป€เบšเบปเบฒเปเบฅเบฐเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐ disassemble.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเบเปเบฅเบฐเบ™เบตเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบเบธเปˆเบกเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ DCS เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™เบเบธเปˆเบกเบ”เบฝเบงเบเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ, i.e. เบเบฒเบ™เบฅเบงเบกเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบง.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, filer เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เปƒเบซเป‰เป€เบฎเบปเบฒเป„เบ›เบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ filer เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

เปเบ•เปˆ filer เปเบกเปˆเบ™เบšเปเปˆเบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”, i.e. เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบ™เปˆเบงเบเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡, เบกเบฑเบ™เบชเบฒเบกเบฒเบ” drag เบชเบธเบ”. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ—เบปเบ™เบ—เบฒเบ™เป„เบ”เป‰เบ”เบปเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบกเบตเป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเป€เบงเบฅเบฒเบชเบดเป‰เบ™เบชเบธเบ”, i.e. เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบซเบ”เบเบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เป€เบซเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบญเบญเบเป€เบ›เบฑเบ™เบชเบฒเบกเป„เบฅเบเบฐ: เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบงเบฅเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ filer, เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ filer เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบ filer. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบซเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบชเบฑเป‰เบ™เป€เบงเบฅเบฒเบ™เบตเป‰.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ filer เป€เบเบตเบ”เบ‚เบถเป‰เบ™, i.e. เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบšเบปเบ”เบšเบฒเบ”เปเบกเปˆเบšเบปเบ”เบเป‰เบฒเบเบˆเบฒเบเป‚เบซเบ™เบ”เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบตเบ. เปเบฅเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ. เปเบกเปˆเบšเบปเบ”เบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเบฅเบฒเบงเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš DCS เป„เบ”เป‰, i.e. เบกเบตเบšเบฑเบ™เบซเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš. เปเบฅเบฐเบฅเบฒเบงเบšเบญเบเบงเปˆเบฒเบฅเบฒเบงเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ™เบฒเบ เปเบฅเบฐเบฅเบฒเบญเบญเบเป„เบ”เป‰. เป€เบชเบฑเป‰เบ™เบ™เบตเป‰ "เบซเบผเบธเบ”เป‚เบ—เบ”เบ•เบปเบ™เป€เบญเบ‡" เป€เบงเบปเป‰เบฒเปเบ—เป‰.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบ Patroni, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบซเบผเบฒเบเปเบฅเบฐเบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒ, เป€เบŠเบฑเปˆเบ™: เบ•เบปเบงเปเบ—เบ™ Patroni เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš DCS เป„เบ”เป‰. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเปเบ—เบ™ Consul, เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเบนเปˆเปƒเบ™เบ—เปˆเบฒเป€เบฎเบทเบญ 8500.

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡, เป€เบกเบทเปˆเบญเบเบฒเบ™เป‚เบซเบผเบ”เบซเบผเบธเบ”เบฅเบปเบ‡, Patroni เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆเบเบฑเบšเบ•เบปเบงเปเบ—เบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบงเบฝเบเบ›เบปเบเบเบฐเบ•เบดเป„เบ”เป‰เบชเบทเบšเบ•เปเปˆ. เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Pgdb-2 เบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบตเบเบฒเบ™เบšเบดเบ”เป€เบšเบทเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบเป‰เบญเบ™เบงเปˆเบฒ node เป„เบ”เป‰เบ›เบปเบ”เบญเปเบฒเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบ›เบฑเบ™เปเบกเปˆเบšเบปเบ”, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบญเบปเบฒเบžเบงเบเบกเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, i.e. , เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเบฑเบšเบ„เบทเบ™เบกเบฒเบ•เบฒเบกเบ—เบตเปˆเบกเบฑเบ™เป€เบ›เบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบซเบผเบทเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบงเปˆเบฒ Patroni เป€เบฎเบฑเบ”เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบฅเบฒเบงเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเบฅเบฒเบงเบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบฑเบเบชเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบกเปเบฅเบฐเบ–เบญเบ™เบชเบดเบ”เบญเปเบฒเบ™เบฒเบ”เบ‚เบญเบ‡เบฅเบฒเบง.

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เบขเบนเปˆเบฎเปˆเบงเบกเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบˆเบฑเบ”เบชเบฑเบ™เบเบธเปˆเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบปเบ‡เบชเบธเบ™. เปเบฅเบฐ Patroni เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Consul เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, i.e. เบกเบตเบเบธเปˆเบก Postgres เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบเบธเปˆเบก Consul เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบ™เบตเป‰เปเบกเปˆเบ™ เบ„เบณ เปเบ™เบฐ เบ™เบณ เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เปเบเบเปเบฅเบฐเบเบถเบ”เป€เบญเบปเบฒเบชเบดเปˆเบ‡เบ—เบฑเบ‡ เปเบปเบ” เบ™เบตเป‰เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบขเบนเปˆ เบ™เบณ เบเบฑเบ™.

เบญเบตเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ ttl, loop_wait, retry_timeout, i.e. เบžเบฐเบเบฒเบเบฒเบกเบขเบนเปˆเบฅเบญเบ”เบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบธเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เป‚เบซเบผเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ—เบปเบ™เบ—เบฒเบ™เป„เบ”เป‰เบ”เบปเบ™. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเป„เบ›เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบฅเบฐเบ™เบฑเป‰เบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบŠเปˆเบงเบเป„เบ”เป‰เปเบ—เป‰เป†.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเบเบฒเบเป€เบ›เบฑเบ™เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡, เบ—เบตเปˆเบ™เบตเป‰ Patroni เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบกเบฑเบ™เบ„เบงเบ™. เบกเบฑเบ™เปเบฅเปˆเบ™ pg_rewind เป€เบžเบทเปˆเบญ rewind เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเปเบกเปˆเปเบšเบšเปƒเบซเบกเปˆ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเบฑเบšเบเบฑเบšเปเบกเปˆเปเบšเบšเปƒเบซเบกเปˆ. เบ—เบตเปˆเบ™เบตเป‰ Patroni เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบเปˆเบญเบ™ filer, i.e. เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰ filer เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปเบฅเบฐเปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เป„เบกเป‰เบ—เปˆเบญเบ™ Patroni เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš. เบฅเบฒเบงเบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเป€เบฅเบทเปˆเบญเบ™เบœเปˆเบฒเบ™เป„เบกเป‰เบ—เปˆเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เบˆเบฒเบเป„เบกเป‰เบ—เปˆเบญเบ™เบ—เบตเปˆเป„เบกเป‰เบ—เปˆเบญเบ™เป„เบ”เป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบ™เบตเป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เบงเปˆเบญเบ‡โ€‹เป„เบงโ€‹เปเบฅเบฐโ€‹เป€เบšเบดเปˆเบ‡โ€‹เบงเปˆเบฒโ€‹เบกเบตโ€‹เบซเบเบฑเบ‡โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹.

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบกเบตเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบชเบฑเป‰เบ™เบ•เบฒเบ, RPC เบซเบผเบธเบ”เบฅเบปเบ‡, i.e. เบกเบตเบšเบฑเบ™เบซเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบชเบฐเบกเบฒเบŠเบดเบเบเบธเปˆเบก Consul เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เปเบ•เปˆเบขเบทเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เป€เบงเบ—เบต, เบกเบฑเบ™เบ‡เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบเบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. เปเบ•เปˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปเบกเปˆเบ™เป€เบŠเบฑเปˆเบ™เบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบˆเบฐเบชเป‰เบญเบกเปเบ›เบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเป„เบ”เป‰เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ. เบฅเบฒเบงเบญเบฒเบ”เบˆเบฐเบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™ DC เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบชเป‰เบญเบกเปเบ›เบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบซเบผเบทเบกเบตเบญเบดเบ”เบ—เบดเบžเบปเบ™เบ•เปเปˆเบญเบธเบ›เบฐเบเบญเบ™. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเบฒเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบ:

  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”, เป€เบŠเบดเปˆเบ‡เบ‚เบฝเบ™, เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™, เปเบกเปˆเบ™เบเบฒเบ™เบ›เบดเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบš Consul, i.e. เบžเบฝเบ‡เปเบ•เปˆเบœเปˆเบฒเบ™ array เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเบญเบเบ•เบปเบงเปเบ—เบ™ Consul เบšเปเปˆเปƒเบซเป‰เปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบ”เป†. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบšเบžเบฐเบเบธเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบšเปเปˆเบฅเบดเป€เบฅเบตเปˆเบกเบเบฒเบ™เบเบทเปˆเบ™.
  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เปเบกเปˆเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบญเบ‡เบ„เบฑเป‰เบ‡ raft_multiplier. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Consul เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™เบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 5. เบ„เปˆเบฒเบ™เบตเป‰เบ–เบทเบเปเบ™เบฐเบ™เบณเปƒเบซเป‰เบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™เบชเบณเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบฑเป‰เบ™เบ•เบญเบ™. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบกเบฒเบŠเบดเบเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ Consul. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบกเบฒเบŠเบดเบเบ‚เบญเบ‡เบเบธเปˆเบกเบเบปเบ‡เบชเบธเบ™. เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเปเบ™เบฐเบ™เปเบฒเปเบฅเป‰เบงเป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบกเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ‚เปเป‰เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบฅเบทเป‰เบญเบเป†.
  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ™เปเบฒเปƒเบŠเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ—เบฐเบงเบตเบเบฒเบ™เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ Consul เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง "เบ‡เบฒเบก", เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบเปเบฒเบ™เบปเบ”เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป‚เบ”เบเบœเบนเป‰เบˆเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ OS เปƒเบ™เป€เบงเบฅเบฒเบงเบฒเบ‡เปเบœเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ”เบตเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ—เบ™ Consul, i.e. เป€เบžเบตเปˆเบกเบ—เบฐเบงเบตเบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปƒเบซเป‰ Consul เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบซเบผเบฒเบเบ‚เบถเป‰เบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ™เบตเป‰เป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.
  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เปเบกเปˆเบ™เบเบฒเบ™เบšเปเปˆเปƒเบŠเป‰ Consul. เบ‚เป‰เบญเบเบกเบตเบซเบกเบนเปˆเบ—เบตเปˆเป€เบ›เบฑเบ™เบœเบนเป‰เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡ Etcd. เปเบฅเบฐเบฅเบฒเบงเปเบฅเบฐเบ‚เป‰เบญเบเป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบ™เป€เบฅเบทเป‰เบญเบเป†เบงเปˆเบฒเบญเบฑเบ™เปƒเบ”เบ”เบตเบเบงเปˆเบฒ, Etcd เบซเบผเบท Consul. เปเบ•เปˆเปƒเบ™เปเบ‡เปˆเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ, เบฅเบฒเบงเปเบฅเบฐเบ‚เป‰เบญเบเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบงเปˆเบฒ Consul เบกเบตเบ•เบปเบงเปเบ—เบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เปเบ•เปˆเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡ Patroni เบเบฑเบšเบเบธเปˆเบก Consul เป€เบเบตเบ”เบ‚เบทเป‰เบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบ•เบปเบงเปเบ—เบ™เบ™เบตเป‰. เปเบฅเบฐเบ•เบปเบงเปเบ—เบ™เบ™เบตเป‰เบเบฒเบเป€เบ›เบฑเบ™เบ„เปเบ‚เบงเบ”. เบ–เป‰เบฒเบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบ•เบปเบงเปเบ—เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Patroni เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบธเปˆเบก Consul เป„เบ”เป‰. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒ. เบšเปเปˆเบกเบตเบ•เบปเบงเปเบ—เบ™เปƒเบ™เปเบœเบ™ Etcd. Patroni เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Etcd เปเบฅเบฐเบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเปเบฅเป‰เบง. เปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ Etcd เปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Etcd เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ Consul. เปเบ•เปˆเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบˆเปเบฒเบเบฑเบ”เป‚เบ”เบเบชเบดเปˆเบ‡เบ—เบตเปˆเบฅเบนเบเบ„เป‰เบฒเป„เบ”เป‰เป€เบฅเบทเบญเบเปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰. เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบต Consul.
  • เปเบฅเบฐเบˆเบธเบ”เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เบทเบ™เบ„เปˆเบฒเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเบปเบเบชเบนเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบซเป‰เบชเบนเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบซเบงเบฑเบ‡เบงเปˆเบฒเบšเบฑเบ™เบซเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป„เบฅเบเบฐเบชเบฑเป‰เบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฑเป‰เบ™เปเบฅเบฐเบˆเบฐเบšเปเปˆเบ•เบปเบเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบงเบดเบ—เบตเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบฎเบธเบเบฎเบฒเบ™เบ‚เบญเบ‡ Patroni เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ autofileover เบ–เป‰เบฒเบšเบฑเบ™เบซเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ”เป†เป€เบเบตเบ”เบ‚เบทเป‰เบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบซเบผเบฒเบเบ„เบปเบ™เบ—เบตเปˆเปƒเบŠเป‰ Patroni เบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ„เบณเบชเบฑเปˆเบ‡เบ™เบตเป‰เบชเบฐเปเบ”เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบเบธเปˆเบก. เปเบฅเบฐเบขเบนเปˆ glance เบ—เปเบฒเบญเบดเบ”เบฎเบนเบšเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ›เบปเบเบเบฐเบ•เบด. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เบžเบงเบเป€เบฎเบปเบฒเบกเบต replica, เบšเปเปˆเบกเบต lag replication. เปเบ•เปˆเบฎเบนเบšเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเบˆเบปเบ™เบเปˆเบงเบฒเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบเบธเปˆเบกเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบกเบตเบชเบฒเบกเบ‚เปเป‰, เบšเปเปˆเปเบกเปˆเบ™เบชเบญเบ‡.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, autofileover เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบ autofileover เบ™เบตเป‰, replica เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบซเบฒเบเป„เบ›. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ™เบฒเบ‡เบซเบฒเบเป„เบ›เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ™เบฒเบ‡เบเบฑเบšเบ„เบทเบ™เบกเบฒ, เบŸเบทเป‰เบ™เบŸเบนเบ‚เบญเบ‡เบ™เบฒเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ autofileover เป€เบเบตเบ”เบ‚เบถเป‰เบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบ—เบตเบชเบญเบ‡เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เปเบกเปˆเบšเบปเบ”. เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบตเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบšเบดเปˆเบ‡เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบเบธเปˆเบก. เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบšเบฑเบ™เบ—เบถเบ Patroni เปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบšเบฑเบ™เบซเบฒเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™ pg_rewind เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบเบธเปˆเบก. เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš cluster, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡ rewind เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบฎเป‰เบญเบ‡เบ‚เปเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฒเบเปเบกเปˆเบšเบปเบ”เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบšเบเบฑเบšเปเบกเปˆเบšเบปเบ”.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบฅเบฐ replica เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบขเบธเบ”เป€เบŠเบปเบฒ Postgres เบ”เป‰เบงเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบขเบนเปˆเปƒเบ™เบเบธเปˆเบก.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เบฝเบšเบ—เบฝเบšเป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเป€เบซเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปเบฅเบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™ 150 milliseconds, i.e. เปƒเบ™ 369 milliseconds เบ”เปˆเบฒเบ™เป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”, เบžเบฒเบเบชเปˆเบงเบ™ WAL เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เบŠเบทเปˆ. เปเบฅเบฐเบฎเบนเป‰เบซเบ™เบฑเบ‡เบชเบทเบขเบนเปˆเบ—เบตเปˆ 517, 150 milliseconds เบ•เปเปˆเบกเบฒ, rewind เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ replica เป€เบเบปเปˆเบฒ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, 150 milliseconds เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ replica เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ•เบปเบงเป€เบฅเบทเบญเบเบกเบตเบซเบเบฑเบ‡เปเบ”เปˆ?

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบŠเปˆเบญเบ‡ replication. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เบ”เบต. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบžเบงเบเป€เบฎเบปเบฒเบ›เบดเบ”เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡. เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เป„เบ”เป‰เบชเบฐเบชเบปเบกเบซเบผเบฒเบเบžเบฒเบเบชเปˆเบงเบ™ WAL, เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เปเบกเปˆเบšเบปเบ”. เบฅเบฒเบงเบˆเบฐเบ•เบปเบ. เบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ™เบ—เบธเบเบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบงเบฅเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบ„เบทเบ™เบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡.

เปเบ•เปˆเบกเบตเบšเบฑเบ™เบซเบฒเบขเบนเปˆเบ™เบตเป‰เบงเปˆเบฒเป€เบกเบทเปˆเบญเปเบกเปˆเบšเบปเบ”เบเป‰เบฒเบเป„เบ›เบ—เบตเปˆ replica, เบกเบฑเบ™เบˆเบฐเบฅเบถเบšเบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡เปเบฅเบฐ, เบžเป‰เบญเบกเบเบฑเบšเบชเบฐเบฅเบฑเบญเบ”เบ•เบดเบ‡, เบฅเบถเบšเบชเปˆเบงเบ™ WAL. เปเบฅเบฐเป€เบžเบทเปˆเบญเบฅเบปเบšเบฅเป‰เบฒเบ‡เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเบปเบเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต wal_keep_segments. เบกเบฑเบ™เบ•เบฑเป‰เบ‡เป„เบงเป‰เป€เบ›เบฑเบ™ 8 เบžเบฒเบเบชเปˆเบงเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบปเบเบกเบฑเบ™เบ‚เบถเป‰เบ™เป€เบ›เบฑเบ™ 1 เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบšเปเบฅเบดเบˆเบฒเบ 000 gigabytes เปƒเบซเป‰เบเบฑเบš wal_keep_segments. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบกเบทเปˆเบญเบ›เปˆเบฝเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบกเบตเบชเบฐเบซเบ‡เบงเบ™เป„เบงเป‰ 16 gigabytes เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปƒเบ™เบ—เบธเบ nodes.

เปเบฅเบฐเบšเบงเบ - เบ™เบตเป‰เบเบฑเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒเป„เบฅเบเบฐเบเบฒเบง. เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบซเบ™เบถเปˆเบ‡เปƒเบ™ replicas. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบกเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบŠเบญเบšเปเบง, เบšเบฒเบ‡เบ—เบตเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบญเบทเปˆเบ™. เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เบดเบ”เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡, เบŠเปˆเบญเบ‡เบชเปเบฒเบฅเบฑเบš replica เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบ. เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ wal_keep_segments เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ•เบปเบงเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบเบฒเบง, เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบˆเบฐเบชเบนเบ™เป€เบชเบเป„เบ›. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบ•เบปเบงเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡, เบกเบฑเบ™เบˆเบฐเบฎเป‰เบญเบ‡เบ‚เปเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบขเบธเบ”เป€เบŠเบปเบฒ, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบขเบนเปˆเปƒเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เปเบฅเบฐเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบเบฑเบ‡เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบ”เป‰. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบงเบฒเบฅเบฐเบชเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบทเป‰เบ™เบ–เบฒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เป‚เบ„เบ‡เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™เปเบฅเป‰เบง.

เบœเบนเป‰เบเบทเปˆเบ™เป„เบ”เป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบฅเบฐเป€เบšเบดเปˆเบ‡ - เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, replicas เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เบšเปเปˆเบกเบต lag replication lag. เบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ”เป†เปƒเบ™เบšเบฑเบ™เบ—เบถเบ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡.

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒ pg_rewind เบฅเบปเบšเบžเบงเบเบกเบฑเบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบฎเบนเป‰โ€‹เบ—เบฑเบ™โ€‹เบ—เบตโ€‹เบ™เบตเป‰, เปเบ•เปˆโ€‹เป„เบ›โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ filer เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบœเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเปƒเบœเป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™ replica, i.e. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™. เบชเบนเบ™เป€เบชเบ.

เปเบกเปˆเบšเบปเบ”เป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบดเบ”เป€เบ›เบตเบ”เปƒเปเปˆเปเบฅเป‰เบง. เปเบฅเบฐ Patroni เป„เบ”เป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบขเบนเปˆเปƒเบ™ autostart. Patroni เป€เบ›เบตเบ”เบ•เบปเบง. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบฅเบฒเบงเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ Postgres. เบซเบผเบฒเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบก Postgres เปเบฅเบฐเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™ replica, Patroni เป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ pg_rewind. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบฒเบงเป„เบ”เป‰เบฅเบถเบšเบšเบฒเบ‡เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบ”เบฒเบงเป‚เบซเบฅเบ”เปƒเบซเบกเปˆเปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบ—เบตเปˆเบ™เบตเป‰ Patroni เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆ, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™. เบเบธเปˆเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบน. เบžเบงเบเป€เบฎเบปเบฒเบกเบต 3 nodes, เบซเบผเบฑเบ‡เบˆเบฒเบ filer เบกเบต 3 nodes - เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป€เบขเบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบนเบ™เป€เบชเบเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบต rewind เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เบ™เบตเป‰เป„เบ”เป‰เบˆเบฒเบเบฅเบฒเบเบเบฒเบ™เบงเบฒเบฅเบฐเบชเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. rewind เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบ•เปเบฒเปเบซเบ™เปˆเบ‡เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เป€เบเบปเปˆเบฒเบขเบธเบ”. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบกเบฑเบ™เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ™เบตเป‰. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ—เบตเบชเบญเบ‡, i.e. เป„เบฅเบเบฐเบซเปˆเบฒเบ‡เบ—เบตเปˆเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเปƒเบซเบกเปˆ.

เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒ pg_wal_lsn_diff เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ™เบตเป‰. เปเบฅเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš 17 megabytes. เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบซเบผเบฒเบโ€‹เบซเบผเบทโ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹, เบ—เบธเบโ€‹เบ„เบปเบ™โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบ”เป‰เบงเบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เบ„เบปเบ™, 17 megabytes เปเบกเปˆเบ™เบšเปเปˆเบซเบผเบฒเบ, เบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™เบกเบฑเบ™เปเบกเปˆเบ™เบซเบผเบฒเบเปเบฅเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเป„เบ”เป‰. เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบ—เบธเบเบ„เบปเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเบดเบ”.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบ•เปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™โ€‹เบซเบเบฑเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ•เบปเบงโ€‹เป€เบฎเบปเบฒโ€‹เป€เบญเบ‡?

เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡ - เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบ•เป‰เบญเบ‡เบเบฒเบ™ Patroni autostart เบซเบผเบฑเบ‡เบˆเบฒเบเบฅเบฐเบšเบปเบš reboot? เป€เบฅเบทเป‰เบญเบเป†เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป„เบ›เบซเบฒเบ™เบฒเบเป€เบเบปเปˆเบฒ, เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบฅเบฒเบงเป„เบ›เป„เบเป€เบ—เบปเปˆเบฒเปƒเบ”. เบšเบฒเบ‡เบ—เบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบžเบฒเบเบชเปˆเบงเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เปเบ”เปˆ. เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบซเบผเบทเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบชเบฐเปเบ•เบ™เบญเบฐเป‚เบฅเบ™เป€เบžเบทเปˆเบญเบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰.

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

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบตเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต "maximum_lag_on_failover". เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ–เป‰เบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบเบฎเบฑเบšเปƒเบŠเป‰เบ‚เป‰เบญเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เบกเบตเบกเบนเบ™เบ„เปˆเบฒ 1 megabyte.

เบฅเบฒเบงเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบ–เป‰เบฒ replica เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบขเบนเปˆเบซเบฅเบฑเบ‡เป‚เบ”เบ 1 megabyte เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ replication lag lag, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ replica เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบฑเป‰เบ‡. เปเบฅเบฐเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ” filer เป€เบเบตเบ”เบ‚เบถเป‰เบ™, Patroni เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ replicas เปเบกเปˆเบ™เบŠเบฑเบเบŠเป‰เบฒ. เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบ”เป‰เบงเบเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบฒเบเป€เบ›เบฑเบ™เปเบกเปˆเบšเบปเบ”เป„เบ”เป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบ”เบตเบซเบผเบฒเบเบ—เบตเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบ.

เปเบ•เปˆเบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆ replication lag เปƒเบ™เบเบธเปˆเบก Patroni เปเบฅเบฐ DCS เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™เบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒ 30 เบงเบดเบ™เบฒเบ—เบตเปเบกเปˆเบ™เบ„เปˆเบฒ ttl เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ•เบฒเบกเบ™เบฑเป‰เบ™เปเบฅเป‰เบง, เบญเบฒเบ”เบˆเบฐเบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบŠเบฑเบเบŠเป‰เบฒเบ‚เบญเบ‡ replications เบชเปเบฒเบฅเบฑเบš replicas เปƒเบ™ DCS เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™, เปเบ•เปˆเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบก lag เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ”เบซเบผเบทเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบกเบต lag เบ—เบฑเบ‡เบซเบกเบปเบ”, i.e. เบชเบดเปˆเบ‡เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบงเบฅเบฒเบˆเบดเบ‡. เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเบชเบฐเป€เบซเบกเบตเบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบผเบฒเบ”เปƒเบชเปˆเบกเบฑเบ™.

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

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเปเบœเปˆเบ™, i.e. เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เปเบฅเป‰เบงเบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ‚เบธเบ”เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡ postgres เปเบฅเบฐเป€เบฅเบตเปˆเบกเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เป€เบซเบฑเบ™โ€‹เบ„เบณโ€‹เปเบฑเป‰เบ™โ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ™เบถเปˆเบ‡, เบชเบญเบ‡โ€‹เบซเบผเบทโ€‹เบชเบฒเบกโ€‹เบงเบดโ€‹เบ™เบฒโ€‹เบ—เบต, เบŠเบถเปˆเบ‡โ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เป€เบฅเบทเปˆเบญเบ‡โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เป€เบฅเบตเบ. เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒ autovacuum เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™ เปเบฅเบฐเปเบ›เบเบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เป„เบŸเบฅเปŒเบŠเบปเปˆเบงเบ„เบฒเบงเบขเบนเปˆเปƒเบ™เปเบœเปˆเบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบเบฑเบšเปเบœเปˆเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบšเบปเบš dmesg (เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบ„เบงเบฒเบกเบ™เบดเบงเป€เบ„เบผเบ). เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™เปเบœเปˆเบ™. เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ‚เบญเบ‡เปเบœเปˆเบ™เปเบกเปˆเบ™เบŠเบญเบšเปเบง Raid. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡ /proc/mdstat เปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฒเบ”เปเบœเปˆเบ™เบซเบ™เบถเปˆเบ‡. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบตเบเบฒเบ™เป‚เบˆเบกเบ•เบตเบ‚เบญเบ‡ 8 เปเบœเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบซเบฒเบเป„เบ›เบซเบ™เบถเปˆเบ‡. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเป„เบฅเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบต sde เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เปเบœเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบงเบปเป‰เบฒ, เบซเบผเบธเบ”เบฅเบปเบ‡. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเปƒเบ™เปเบœเปˆเบ™, เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบเบฑเบ‡เบ›เบฐเบชเบปเบšเบšเบฑเบ™เบซเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบธเปˆเบก Postgres.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰ - เบŠเบญเบšเปเบงเบฎเบปเป‰เบงเบซเบผเบท watchdog เบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบšเป? เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบฅเบฒเบงเบˆเบฐเบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบšเบฑเบ™เบซเบฒ Patroni เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบเบธเปˆเบก DCS เปเบฅเบฐเบšเปเปˆเป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒเปƒเบ”เป†. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡ DCS เปเบฅเบฐ Patroni, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบตเบเบฑเบšเบเบธเปˆเบก, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเปเบœเปˆเบ™, เบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบฅเบฒเบ”เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™, เบญเปˆเบฒเบ™เบ„เบทเบ™เบšเบฑเบ™เบ—เบถเบเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, tinkered เบเบฑเบšเบกเบฑเบ™เปเบฅเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™ simulator เบเบธเปˆเบก.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเปเบกเปˆเบšเบปเบ”เป€เบเบปเปˆเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบฒเบเป€เบ›เบฑเบ™เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เปเบšเบšเบ—เปเบฒเบกเบฐเบ”เบฒ, i.e. Patroni เป€เบ›เบตเบ”เบ•เบปเบงเบกเบฑเบ™, Patroni เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ node เบ™เบตเป‰เบกเบตเบขเบนเปˆเปƒเบ™เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เปเบšเบšเบ—เปเบฒเบกเบฐเบ”เบฒ. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ™เบตเป‰เบˆเบฒเบเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบšเบฑเบ™เบซเบฒเบ™เบฑเป‰เบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบง, i.e. เบฅเบนเบเบ„เป‰เบฒเบ–เบทเบเบ•เบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบกเบตเบเบฒเบ™เบญเบธเบ”เบ•เบฑเบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบฎเบธเบ™เปเบฎเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐ, เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก, เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ‚เบญเบ‡เปเบœเปˆเบ™เปเบกเปˆเบ™เบšเปเปˆเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบซเบผเบฒเบ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบฅเบถเบเบฅเบฑเบšเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบเปเบกเปˆเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ›เบดเบ”เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบกเบฒเบฎเบญเบ”. Postgres เบกเบตเบชเบฒเบกเป‚เบซเบกเบ”เบ›เบดเบ”:

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

เปƒเบœเบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ™เบตเป‰? เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ Postgres เบžเบทเป‰เบ™เบซเบฅเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ›เบซเบฒเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, i.e. เบ™เบตเป‰เปเบกเปˆเบ™ kill-9. เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เปƒเบซเป‰เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เบžเบงเบเป€เบ‚เบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, i.e. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบธเบเป€เบชเบตเบ™เบ‚เบญเบ‡ Postgres. เบ‚เป‰เบญเบเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเปƒเบœเบชเบปเปˆเบ‡เบฅเบฒเบง.

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบŠเบญเบเบซเบฒเบ•เบทเปˆเบกเบญเบตเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบงเปˆเบฒ Patroni เบšเปเปˆเป„เบ”เป‰เบ‚เบฝเบ™เปƒเบชเปˆเบšเบฑเบ™เบ—เบถเบเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™ - 54 เบงเบดเบ™เบฒเบ—เบต. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฒเบ™เบชเบฐเปเบ•เบกเบชเบญเบ‡เบ„เบฑเป‰เบ‡, เบšเปเปˆเบกเบตเบ‚เปเป‰เบ„เบงเบฒเบกเบ›เบฐเบกเบฒเบ™ 54 เบงเบดเบ™เบฒเบ—เบต.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เปเบฅเบฐเบกเบตเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบญเบฑเบ™เบ—เบตเบชเบญเบ‡. เปเบฅเบฐเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบ‚เปเป‰เบชเบฑเบ‡เป€เบเบ”เบ—เบตเบชเบญเบ‡. เบ™เบฒเบ‡เบžเบฐเบเบฒเบเบฒเบก configure. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบกเบฑเบ™, เบ™เบฒเบ‡เป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบ›เปˆเบฝเบ™ recovery.conf, restart Postgres เปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเปเบกเปˆเปเบšเบšเปƒเบซเบกเปˆ. เบ™เบฒเบ‡เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบธเบเป† 10 เบงเบดเบ™เบฒเบ—เบตเบงเปˆเบฒเบ™เบฒเบ‡เบžเบฐเบเบฒเบเบฒเบก, เปเบ•เปˆเบ™เบฒเบ‡เบšเปเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เป€เบกเบทเปˆเบญ Patroni เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ replica เบ—เบตเบชเบญเบ‡, node เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™ replication. เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹เบ—เบตเปˆโ€‹เบŠเบฑเบโ€‹เบŠเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹, เป€เบŠเบดเปˆเบ‡โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบšเบฒเบ‡โ€‹เบชเบดเปˆเบ‡โ€‹เบšเบฒเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบ™เบตเป‰โ€‹. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เบฑเบ‡เบชเบฒเบก nodes เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เปเบ•เปˆ node เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบŠเบฑเบเบŠเป‰เบฒ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบ‚เบฝเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเบ•เบปเบงเบŠเปˆเบงเบเบชเป‰เบฒเบ‡เบชเบฐเป€เบซเบ™เบต, เป€เบŠเบดเปˆเบ‡เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ recovery.conf, เปเบกเปˆเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบš node เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบกเบฒเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ recovery.conf เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเปเบกเปˆเปเบšเบšเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เปเบ•เปˆเบ‚เป‰เบญเบเบžเบฝเบ‡เปเบ•เปˆเบ„เบดเบ”เป„เบฅเปˆเบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบ‚เป‰เบญเบ, เบซเบผเบทเบ‚เป‰เบญเบเป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบกเปˆเบ™เบŠเบฑเบเบŠเป‰เบฒเปเบฅเบฐเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบ•เบทเปˆเบก, ie, เบ‚เป‰เบญเบเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบšเปเปˆเบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡. เบ™เบตเป‰ เปเบกเปˆเบ™ jamb เบ‚เบญเบ‡ เบ‚เป‰เบฒ เบžเบฐ เป€เบˆเบปเป‰เบฒ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบซเบผเบฑเบ‡เบˆเบฒเบ 30 เบ™เบฒเบ—เบต admin เบกเบฒเบฎเบญเบ”, i. i. i. i. restart Patroni on the replica. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบ›เบฐโ€‹เบ–เบดเป‰เบกโ€‹เบกเบฑเบ™โ€‹เปเบฅเป‰เบง, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ„เบดเบ”โ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เป€เบ•เบตเบกโ€‹เป€เบ‡เบดเบ™. เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบ›เบดเบ”เป€เบ›เบตเบ” Patroni, เบšเบฒเบ‡เบ—เบตเบชเบดเปˆเบ‡เบ—เบตเปˆเบ”เบตเบˆเบฐเบญเบญเบเบกเบฒ. เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปเบฅเบฐเบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบ›เบตเบ”, เบกเบฑเบ™เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบเบญเบกเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเป‰เบง. เปเบ•เปˆเบ™เบฒเบ—เบตเบ•เปเปˆเบกเบฒเบกเบฑเบ™เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบ‚เป‰เบญเบ - เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ‚เป‰เบญเบเป€เบฅเบตเปˆเบก Postgres เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบ”เปˆเบฒเบ™เบขเบนเปˆเปƒเบ™เปเบกเปˆเบšเบปเบ”เบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบžเบทเปˆเบญเบเป‰เบฒเบเบˆเบธเบ”เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเป„เบ›เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเป€เบงเบฅเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™? เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบกเบตเบชเบฐเบซเบ‡เบงเบ™ WAL เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆ Patroni, เป€เบฎเบฑเบ”เบชเบญเบ‡เบˆเบธเบ”เบเบงเบ”เบเบฒเบเปˆเบฝเบงเบเบฑเบšเปเบกเปˆเบšเบปเบ”, เบชเบญเบ‡เบˆเบธเบ” restart เบชเบธเบ” replica เป€เบกเบทเปˆเบญเบกเบฑเบ™เป€เบ›เบตเบ”. เปเบฅเบฐเบกเบฑเบ™เป„เบ”เป‰เบŠเปˆเบงเบ. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบ„เบดเบ”โ€‹เบขเปˆเบฒเบ‡โ€‹เบเบฒเบงโ€‹เบ™เบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบงเปˆเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบซเบเบฑเบ‡โ€‹เบกเบฑเบ™โ€‹เบŠเปˆเบงเบโ€‹เปเบฅเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปเบ™เบงโ€‹เปƒเบ”โ€‹เบกเบฑเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบ. เปเบฅเบฐเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปเบฅเบฐเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบšเบšเบšเปเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบงเบญเบตเบเบ•เปเปˆเป„เบ›.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เบšเบปเบ”เบชเบฐเบซเบผเบธเบšเปเบกเปˆเบ™เบซเบเบฑเบ‡? Patroni เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ•เบฒเบกเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เปเบฅเบฐเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ”เป†. เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™ 100% เบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบตเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบญเบฒเบ”เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเป€เบ„เบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ, เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเปเบฒเบฅเบญเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบกเบตเบ‚เปเป‰เบกเบนเบ™เป€เบเบปเปˆเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบ fileover เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบตเบเบฑเบš cluster, i.e. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบˆเปเบฒเบ™เบงเบ™ replicas เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒ.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

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

เบซเบผเบฑเบ‡เบˆเบฒเบเปเบ•เปˆเบฅเบฐ filer, เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡ cluster เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบกเบตเบˆเปเบฒเบ™เบงเบ™ replicas เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก, เบšเปเปˆเบกเบต replication lag lag, เปเบฅเบฐเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™ replication streaming, Patroni, เบซเบผเบทเบฅเบฐเบšเบปเบš DCS.

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

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ‚เป‰เบญเบเบˆเบฐเป€เบ‚เบปเป‰เบฒเบซเบฒเบšเบฑเบ™เบซเบฒเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเปเบ™เบงเปƒเบ”? เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบšเปเปˆเบกเบตเปƒเบœเบกเบต stack ELK, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเบฑเบ™เบ—เบถเบเป‚เบ”เบเบเบฒเบ™เป€เบ›เบตเบ” 6 consoles เปเบฅเบฐ 2 เปเบ–เบš. เปƒเบ™เปเบ–เบšเบซเบ™เบถเปˆเบ‡เบกเบตเบšเบฑเบ™เบ—เบถเบ Patroni เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ node, เปƒเบ™เปเบ–เบšเบญเบทเปˆเบ™เบกเบตเบšเบฑเบ™เบ—เบถเบ Consul, เบซเบผเบทเบšเบฑเบ™เบ—เบถเบ Postgres เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบงเบดเบ™เบดเบ”เป„เบช.

เบ‚เป‰เบญเบเป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบงเบดเบ—เบตเบเบฒเบ™เปƒเบ”เปเบ”เปˆ? เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡เบขเบนเปˆเบชเบฐ เป€เปเบต เป€เบกเบทเปˆเบญเบœเบนเป‰เบเบทเปˆเบ™เบกเบฒเบฎเบญเบ”. เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ, เบ™เบตเป‰เปเบกเปˆเบ™เปเบซเบผเปˆเบ‡เบ™เป‰เปเบฒ. เบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบœเบนเป‰เบเบทเปˆเบ™, เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบœเบนเป‰เบเบทเปˆเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบœเบนเป‰เบเบทเปˆเบ™. fileover เบกเบตเบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ: เบ™เบตเป‰เปเบกเปˆเบ™เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”.

เบ•เปเปˆเป„เบ›, เบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ—เบถเบเป€เบซเบ”เบเบฒเบ™เบเปˆเบญเบ™เบœเบนเป‰เบเบทเปˆเบ™, เป€เบŠเบดเปˆเบ‡เบเปˆเบญเบ™เบœเบนเป‰เบเบทเปˆเบ™, i.e. เบ‚เป‰เบญเบเบŠเบญเบเบซเบฒเป€เบซเบ”เบœเบปเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบœเบนเป‰เบเบทเปˆเบ™.

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

เปเบฅเบฐเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบช? เบ‚เป‰เบญเบโ€‹เป€เบšเบดเปˆเบ‡:

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

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ‚เป‰เบญเบเบฎเบนเป‰เบชเบถเบเปเบ™เบงเปƒเบ”เบเปˆเบฝเบงเบเบฑเบš Patroni? เบ‚เป‰เบญเบเบฎเบนเป‰เบชเบถเบเบ”เบตเบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบš Patroni. เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบกเบตเปƒเบ™เบกเบทเป‰เบ™เบตเป‰. เบ‚เป‰เบญเบเบฎเบนเป‰เบˆเบฑเบเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™ Stolon, Repmgr, Pg_auto_failover, PAF. 4 เป€เบ„เบทเปˆเบญเบ‡เบกเบท. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เปƒเบซเป‰โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹. เบ‚เป‰เบญเบเบกเบฑเบ Patroni เบ—เบตเปˆเบชเบธเบ”.

เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบฒเบกเบ‚เป‰เบญเบเบงเปˆเบฒ: "เบ‚เป‰เบญเบเปเบ™เบฐเบ™เปเบฒ Patroni เบšเป?" เบ‚เป‰เบญเบเบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเปเบกเปˆเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เป‰เบญเบเบกเบฑเบ Patroni. เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เปเบ•เปˆเบ‡เบเบดเบ™เบกเบฑเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบปเบ™เปƒเบˆเบขเบฒเบเป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบš Patroni, เบ™เบญเบ เป€เปœเบทเบญ เบˆเบฒเบเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ‚เป‰เบญเบเป€เบงเบปเป‰เบฒ, เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เบ—เบตเปˆ เปœเป‰เบฒ เป€เบงเบฑเบšเป„เบ”เป‰เบชเบฐ เป€เปเบต. เบšเบฑเบ™เบซเบฒ เปƒเบ™ GitHub. เบกเบตเบซเบผเบฒเบเป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบซเบผเบฒเบเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเป„เบ”เป‰เบ–เบทเบเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเบฒเบ‡เปเบกเบ‡เป„เบกเป‰เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปเบฅเบฐเปเบเป‰เป„เบ‚, i.e. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ.

เบกเบตเป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบปเบ™เบ—เบตเปˆเบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบชเปˆเบ•เบตเบ™. เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบ. เบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒ ticked เบ•เบปเบ™โ€‹เป€เบญเบ‡.

เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเป€เบงเบปเป‰เบฒเบ‚เบญเบšเปƒเบˆเบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ•เปเปˆเบšเปเบฅเบดเบชเบฑเบ” Zalando เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰, เบ„เบท Alexander Kukushkin เปเบฅเบฐ Alexey Klyukin. Alexey Klyukin เปเบกเปˆเบ™ เปœเบถเปˆเบ‡ เปƒเบ™เบœเบนเป‰เบ‚เบฝเบ™เบฎเปˆเบงเบก; เบฅเบฒเบงเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆ Zalando, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบชเบญเบ‡เบ„เบปเบ™เบ—เบตเปˆเป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ™เบตเป‰.

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

เบซเบกเบปเบ”โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ™เบตเป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เปเบฒเบ–เบฒเบก, เบเบฐเบฅเบธเบ™เบฒเบ–เบฒเบก.

Patroni Failure Stories เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™ crash cluster PostgreSQL เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Alexey Lesovsky

เบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™

เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™! เบ–เป‰เบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบœเบนเป‰เบเบทเปˆเบ™เปเบฅเป‰เบงเป€เบˆเบปเป‰เบฒเบเบฑเบ‡เบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เบšเปˆเบญเบ™เบ™เบฑเป‰เบ™เบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡, เปเบฅเป‰เบงเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบปเบงเบเบทเปˆเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”?

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

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบกเบฒเปƒเบ™เบ•เบญเบ™เป€เบŠเบปเป‰เบฒเบ™เบตเป‰เปเบฅเบฐเป€เบšเบดเปˆเบ‡, เปเบกเปˆเบ™เบšเป?

เบšเปเปˆเปเบกเปˆเบ™เปƒเบ™เบ•เบญเบ™เป€เบŠเบปเป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบเบˆเบฐเบŠเบญเบเบซเบฒเบเปˆเบฝเบงเบเบฑเบš autofileover เป€เบเบทเบญเบšเบ—เบฑเบ™เบ—เบต. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒ autofileover เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบเบทเบญเบšเบ—เบฑเบ™เบ—เบตเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบฅเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบšเบดเปˆเบ‡. เปเบ•เปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ•เป‰เบญเบ‡เบ–เบทเบเบ™เปเบฒเบกเบฒเบชเบนเปˆเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ Patroni เบœเปˆเบฒเบ™ REST API, เบกเบตเบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบชเบฐเปเบ•เบกเป€เบงเบฅเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป„เบŸเบฅเปŒเป„เบ”เป‰เบ–เบทเบเบ”เบฒเบงเป‚เบซเบผเบ”. เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบ™เบตเป‰, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบตเป€เบซเบ”เบเบฒเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบซเบ”เบเบฒเบ™เบซเบผเบฒเบ, เบกเบฑเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ autofileover เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป„เบ›เป€เบšเบดเปˆเบ‡เป„เบ”เป‰. เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต replicas เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เบšเปเปˆเบกเบต lag เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบต.

!

เบ‚เบญเบšเปƒเบˆเบซเบผเบฒเบเป†เบชเบณเบฅเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ”เบตเป†! เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบเบเบธเปˆเบก DCS เป„เบ›เบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เปœเบถเปˆเบ‡เบ—เบตเปˆเบซเปˆเบฒเบ‡เป„เบเบˆเบฒเบเบเบธเปˆเบก Postgres, เบเบธเปˆเบกเบ™เบตเป‰เบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบ›เบฑเบ™เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเบšเป? เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบšเบฒเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบเบธเปˆเบก DCS เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบ›เบดเบ”, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ„เบงเบ™เป€เบฎเบฑเบ”เบเบฑเบšเบžเบงเบเบกเบฑเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†? เป‚เบ„เบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ”เปเบ™เบงเปƒเบ”? เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰?

เบชเปเบฒเบฅเบฑเบšเบšเปเบฅเบดเบชเบฑเบ”เบซเบ™เบถเปˆเบ‡, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบ–เป‰เบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบฅเบปเป‰เบกเป€เบซเบฅเบง. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ matrix เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ sequentially เป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ•เบฒเบกเบ™เบฑเป‰เบ™เปเบฅเป‰เบง, เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบง, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบกเบตเปเบœเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบง. เปเบฅเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ DCS, เบ™เบตเป‰เบกเบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เปเบฅเบฐ admin เบ„เบธเป‰เบกเบ„เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเปเบฅเป‰เบงเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ admins เบœเบนเป‰เบ—เบตเปˆเบ„เบธเป‰เบกเบ„เบญเบ‡เบกเบฑเบ™เปเบฅเบฐเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบฅเบฒเบงเบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบกเบฑเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเป„เบžเบžเบดเบšเบฑเบ”. เบ–เป‰เบฒเบšเปเปˆเบกเบต DCS เป€เบฅเบตเบ, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบกเบฑเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบ•เบดเบ”เบ•เบฒเบกเบกเบฑเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฒเบก.

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

เบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบผเบฒเบเป‚เบซเบ™เบ”เบขเบนเปˆเปƒเบ™เบเบธเปˆเบก DCS. เบ–เป‰เบฒเบกเบตเบซเบฅเบฒเบ nodes เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ nodes (replica), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ quorum เบˆเบฐเบ–เบทเบเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™ cluster. เปเบฅเบฐ Patroni เบเบฑเบ‡เบ„เบปเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เปเบฅเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ–เบทเบเบเบฐเบ•เบธเป‰เบ™. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ‚เปเป‰เบซเบผเบฒเบ, เบเบฒเบ™เบ‚เบฒเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ—เปเบฒเบฅเบฒเบเบเบธเปˆเบก, เปเบฅเป‰เบง, เบšเบฒเบ‡เบ—เบตเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ—เบตเปˆเบˆเบฐเบขเบธเบ” Patroni. เบกเบฑเบ™เบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ - patronictl pause, patronictl resume . เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบขเบธเบ”เบกเบฑเบ™เป„เบงเป‰เบŠเบปเปˆเบงเบ„เบฒเบง, เปเบฅเบฐ autofileover เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบšเบณเบฅเบธเบ‡เบฎเบฑเบเบชเบฒเบขเบนเปˆเปƒเบ™เบเบธเปˆเบก DCS, เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบญเบปเบฒเบเบฒเบ™เบขเบธเบ”เบŠเบปเปˆเบงเบ„เบฒเบง เปเบฅเบฐเบชเบทเบšเบ•เปเปˆเบŠเบตเบงเบดเบ”.

เบ‚เปเบ‚เบญเบšเปƒเบˆเบ—เปˆเบฒเบ™เบซเบผเบฒเบเป†!

เบ‚เบญเบšเปƒเบˆเบซเบผเบฒเบเป†เบชเบณเบฅเบฑเบšเบฅเบฒเบเบ‡เบฒเบ™! เบ—เบตเบกเบ‡เบฒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเปเบ™เบงเปƒเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™?

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

เบกเบตเบเบฒเบ™เบ„เปเป‰เบฒเบ›เบฐเบเบฑเบ™เบญเบฑเบ™เปƒเบ”?

เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™. Alexander Kukushkin เบกเบตเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ "เบงเบดเบ—เบตเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ RPO เปเบฅเบฐ RTO", i.e. เป€เบงเบฅเบฒเบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบนเบ™เป€เบชเบ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒ slides เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบชเบถเบเบชเบฒเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบทเปˆเป„เบ”เป‰, เบกเบตเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบฐเป€เบžเบฒเบฐเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบนเบ™เป€เบชเบเบ—เบธเบฅเบฐเบเปเบฒเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”. เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบšเบš synchronous เปƒเบ™เบฅเบฐเบ”เบฑเบš Patroni, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ”เบฒเบšเบชเบญเบ‡เบ„เบปเบก: เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบซเบผเบทเบชเบนเบ™เป€เบชเบเบ„เบงเบฒเบกเป„เบง. เบกเบตเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบšเบš synchronous, เปเบ•เปˆเบกเบฑเบ™เบเบฑเบ‡เบšเปเปˆเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ 100% เบ•เปเปˆเบเบฑเบšเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™.

Alexey, เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ—เบตเปˆเบ›เบฐเป€เบชเบตเบ”! เบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบŠเป‰ Patroni เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบฅเบฐเบ”เบฑเบšเบชเบนเบ™เบšเป? เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบšเบเบฒเบ™เบชเบฐเปเบ•เบ™เบšเบฒเบเปเบšเบš synchronous? เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบ–เบฒเบกเบ—เปเบฒเบญเบดเบ”. เปเบฅเบฐเบ„เปเบฒเบ–เบฒเบกเบ—เบตเบชเบญเบ‡. เบ—เปˆเบฒเบ™เป„เบ”เป‰เปƒเบŠเป‰เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰ Repmgr, เปเบ•เปˆเบšเปเปˆเบกเบต autofileover เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบเปเบฒเบฅเบฑเบ‡เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰ autofileover. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ Patroni เป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเบซเบเบฑเบ‡เป„เบ”เป‰เบ›เบฝเบšเปƒเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบš Repmgr?

เบ„เปเบฒเบ–เบฒเบกเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™ replicas synchronous. เบšเปเปˆเบกเบตเปƒเบœเปƒเบŠเป‰เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบšเบš synchronous เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เบธเบเบ„เบปเบ™เบขเป‰เบฒเบ™ (เบฅเบนเบเบ„เป‰เบฒเบซเบผเบฒเบเบ„เบปเบ™เปƒเบŠเป‰เบกเบฑเบ™เปเบฅเป‰เบง, เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ”เป† - เบซเบกเบฒเบเป€เบซเบ”เบ‚เบญเบ‡เบฅเปเบฒเป‚เบžเบ‡). เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡เบงเปˆเบฒเปƒเบ™เบเบธเปˆเบก replication synchronous เบ•เป‰เบญเบ‡เบกเบตเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบชเบฒเบก nodes, เป€เบžเบฒเบฐเบงเปˆเบฒเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡ nodes เปเบฅเบฐเบ–เป‰เบฒ master เบซเบผเบท replica เบฅเบปเป‰เบกเป€เบซเบฅเบง, Patroni เบˆเบฐเบ›เปˆเบฝเบ™ node เบ™เบตเป‰เป„เบ›เบชเบนเปˆเป‚เบซเบกเบ” Standalone เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบทเบšเบ•เปเปˆเป„เบ›. เป€เบฎเบฑเบ”เบงเบฝเบ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ•เปเปˆเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™.

เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰ Repmgr เปเบฅเบฐเบเบฑเบ‡เป€เบฎเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบšเบฒเบ‡เบ„เบปเบ™เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเบซเบเบฑเบ‡เป„เบ”เป‰? เปƒเบ™ Patroni, autofileover เบญเบญเบเบกเบฒเบˆเบฒเบเบเปˆเบญเบ‡; เปƒเบ™ Repmgr, autofileover เบกเบฒเป€เบ›เบฑเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ Repmgr daemon เปƒเบ™เปเบ•เปˆเบฅเบฐ node เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ” configure autofileover เป„เบ”เป‰.

Repmgr เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ‚เปเป‰ Postgres เบกเบตเบŠเบตเบงเบดเบ”เบซเบผเบทเบšเปเปˆ. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ Repmgr เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒ เบญเบฒเบ”เบˆเบฐเบกเบตเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ”เบ”เบ”เปˆเบฝเบงเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบเบธเปˆเบก Repmgr เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบชเบฒเบกเบฒเบ”เปเบ•เบเบญเบญเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบ•เบดเบ”เบ•เบฒเบก Repmgr เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™, เบšเบฒเบ‡เบ—เบตเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚ ... เบซเบผเบทเบญเบฒเบ”เบˆเบฐเบšเปเปˆ. เปเบ•เปˆเบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบกเป„เบ›เบซเบฒ DCS, เบ”เบฑเปˆเบ‡เบ—เบตเปˆ Stolon เปเบฅเบฐ Patroni เป€เบฎเบฑเบ”, เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบชเบธเบ”.

Alexey, เบ‚เป‰เบญเบเบกเบตเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ‚เบตเป‰เบ•เบปเบงเบฐ. เปƒเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เปเบฒเบญเบดเบ”, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบเป‰เบฒเบ DCS เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป„เบ›เบซเบฒ node เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ. เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡; เบกเบฑเบ™เบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เปเบฅเบฐเบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบเบธเปˆเบก DCS เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰? เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเป€เบซเบ”เบœเบปเบ™, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบซเบผเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ: เบˆเบฒเบเบกเบทเบ—เบตเปˆเบซเบเบฒเบšเบ„เบฒเบเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบกเบฑเบ™เบญเบญเบเบกเบฒเบ”เบฑเบ‡เป†, เปเบ•เปˆเบเบธเปˆเบก DCS เบเบฑเบ‡เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบœเบดเบ”, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบˆเปเบฒเบ™เบงเบ™เป€เบฅเบเบ„เบตเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบธเปˆเบกเป‚เบ„เบฅเปเบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒเบเบธเปˆเบก DCS เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰ เบซเบผเบทเบเบธเปˆเบกเบšเปเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เปเบšเปˆเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบšเบฒเบ‡เบ›เบฐเป€เบžเบ” เบซเบผเบท เป‚เบ™เบ”เบฅเบปเป‰เบกเป€เบซเบผเบง? เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบธเปˆเบก Patroni เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเป‚เปเบ”เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบเบธเปˆเบก Patroni เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ cluster เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”. เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆเบเบฑเบš DCS เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบชเบฐเบ–เบฒเบ™เบฐเบเบธเปˆเบกเปƒเบซเบกเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบธเปˆเบกเบ—เบฑเบ‡เปเบปเบ”เบˆเบฐเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเป‚เปเบ”เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เปเบฅเบฐเบฅเปเบ–เป‰เบฒเบเบฒเบ™เปเบŠเบเปเบŠเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบˆเบฒเบเบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบผเบทเบชเปเบฒเบฅเบฑเบš DCS เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบน.

เป€เบงเบปเป‰เบฒเบ›เบฐเบกเบฒเบ™, DCS เบเบฒเบเป€เบ›เบฑเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบฑเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบšเป?

เปเบกเปˆเบ™เปเบฅเป‰เบง. เปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, Service Discovery เปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบกเบตเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™. เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบงเบปเป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เบเบฑเบš DC, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ™เบ—เบตเบกเบต Service Discovery. เบ–เป‰เบฒเบ™เบตเป‰เปเบกเปˆเบ™เบเบปเบ‡เบชเบธเบ™, DNS เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰. เบ–เป‰เบฒเบ™เบตเป‰เปเบกเปˆเบ™ Etcd, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบˆเบฒเบเบเบธเปˆเบก Kubernetes เป€เบŠเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบ–เบทเบเบ™เปเบฒเป„เบ›เปƒเบŠเป‰. เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเบงเปˆเบฒเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก. เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เป„เบงเบเบงเปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

!

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

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