рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рдпрд╕ рд▓реЗрдЦрдорд╛ рдо рддрдкрд╛рдИрд▓рд╛рдИ рдмрддрд╛рдЙрдиреЗрдЫреБ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рдХрд╕рд░реА PostgreSQL рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛рдХреЛ рдореБрджреНрджрд╛рдорд╛ рдкреБрдЧреНрдпреМрдВ, рдХрд┐рди рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрдпреЛ, рд░ рдЕрдиреНрддрдорд╛ рдХреЗ рднрдпреЛред

рд╣рд╛рдореАрд╕рдБрдЧ рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рд╕реЗрд╡рд╛ рдЫ: рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА 2,5 рдорд┐рд▓рд┐рдпрди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ, рд╣рд░реЗрдХ рджрд┐рди 50K+ рд╕рдХреНрд░рд┐рдп рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВред рд╕рд░реНрднрд░рд╣рд░реВ рдЖрдпрд░рд▓реНрдпрд╛рдгреНрдбрдХреЛ рдПрдЙрдЯрд╛ рдХреНрд╖реЗрддреНрд░рдорд╛ рдЕрдорд╛рдЬреЛрдирдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН: резрежреж+ рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрднрд░рд╣рд░реВ рдирд┐рд░рдиреНрддрд░ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рдЫрдиреН, рддреАрдордзреНрдпреЗ рд▓рдЧрднрдЧ релреж рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдЫрдиреНред

рд╕рдореНрдкреВрд░реНрдг рдмреНрдпрд╛рдХрдЗрдиреНрдб рдПрдХ рдареВрд▓реЛ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдЬрд╛рднрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛ рдЬрд╕рд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯрд╕рдБрдЧ рдирд┐рд░рдиреНрддрд░ рд╡реЗрдмрд╕рдХреЗрдЯ рдЬрдбрд╛рди рд░рд╛рдЦреНрдЫред рдЬрдм рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдПрдЙрдЯреИ рдмреЛрд░реНрдбрдорд╛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдЧрд░реНрдЫрдиреН, рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордпрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рджреЗрдЦреНрдЫрдиреН, рдХрд┐рдирднрдиреЗ рд╣рд╛рдореА рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рд░реЗрдХрд░реНрдб рдЧрд░реНрдЫреМрдВред рд╣рд╛рдореАрд╕рдБрдЧ рд╣рд╛рдореНрд░реЛ рдбреЗрдЯрд╛рдмреЗрд╕рд╣рд░реВрдорд╛ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рд▓рдЧрднрдЧ 10K рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЫрдиреНред Redis рдорд╛ рдкреАрдХ рд▓реЛрдбрдорд╛ рд╣рд╛рдореА рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб 80-100K рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд▓реЗрдЦреНрдЫреМрдВред
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рд╣рд╛рдореАрд▓реЗ рдХрд┐рди Redis рдмрд╛рдЯ PostgreSQL рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдпреМрдВ

рдкреНрд░рд╛рд░рдореНрднрдорд╛, рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛рд▓реЗ Redis рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНтАНрдпреЛ, рдПрдХ рдкреНрд░рдореБрдЦ-рдорд╛рди рднрдгреНрдбрд╛рд░рдг рдЬрд╕рд▓реЗ рд╕рд░реНрднрд░рдХреЛ RAM рдорд╛ рд╕рдмреИ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫред

рд░реЗрдбрд┐рд╕рдХрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВ:

  1. рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧрддрд┐, рдХрд┐рдирднрдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рдореЗрдореЛрд░реАрдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ;
  2. рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмреНрдпрд╛рдХрдЕрдк рд░ рдкреНрд░рддрд┐рдХреГрддрд┐ред

рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ Redis рдХреЛ рд╣рд╛рдирд┐:

  1. рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реЗрдирджреЗрди рдЫреИрдиред рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрди рд╕реНрддрд░рдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдХрд░рдг рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдпреМрдВред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпрд╕рд▓реЗ рд╕рдзреИрдВ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИрди рд░ рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдХреЛрдб рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
  2. рдбрд╛рдЯрд╛ рдХреЛ рдорд╛рддреНрд░рд╛ рдореЗрдореЛрд░реА рдХреЛ рдорд╛рддреНрд░рд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдЫред рдбреЗрдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛ рдмрдвреНрджреИ рдЬрд╛рдБрджрд╛, рдореЗрдореЛрд░реА рдмрдвреНрджреИ рдЬрд╛рдиреЗрдЫ, рд░, рдЕрдиреНрддрдорд╛, рд╣рд╛рдореА рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрдорд╛ рджреМрдбрдиреЗрдЫреМрдВ, рдЬрд╕рд▓рд╛рдИ AWS рдорд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛ рд░реЛрдХреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
  3. рдпреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрдо рд╡рд┐рд▓рдореНрдмрддрд╛ рд╕реНрддрд░ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЫрдиреНред рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдЗрд╖реНрдЯрддрдо рд╡рд┐рд▓рдореНрдмрддрд╛ рд╕реНрддрд░ 17-20 ms рд╣реЛред 30-40 ms рдХреЛ рд╕реНрддрд░ рдорд╛, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрди рдЕрдиреБрд░реЛрдз рд░ рд╕реЗрд╡рд╛ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЛ рд▓рд╛рдореЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реБ рдкрд╛рдЙрдБрдЫреМрдВред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпреЛ рд╕реЗрдкреНрдЯреЗрдореНрдмрд░ 2018 рдорд╛ рд╣рд╛рдореАрд▓рд╛рдИ рднрдпреЛ, рдЬрдм Redis рд╕рдБрдЧ рдХреБрдиреИ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рднрдиреНрджрд╛ реи рдЧреБрдгрд╛ рдмрдвреА рд╡рд┐рд▓рдореНрдмрддрд╛ рдкреНрд░рд╛рдкреНрдд рднрдпреЛред рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рд╣рд╛рдореАрд▓реЗ рдХрд╛рдордХреЛ рджрд┐рдирдХреЛ рдмреАрдЪрдорд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдорд░реНрдорддрдХрд╛ рд▓рд╛рдЧрд┐ рд╕реЗрд╡рд╛ рдмрдиреНрдж рдЧрд░реНрдпреМрдВ рд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд Redis рдЙрджрд╛рд╣рд░рдгрд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдпреМрдВред
  4. рдХреЛрдбрдорд╛ рд╕рд╛рдирд╛рддрд┐рдирд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рднрдП рдкрдирд┐ рдЕрд╕рдВрдЧрдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рддреНрдпреЛ рдбреЗрдЯрд╛ рдареАрдХ рдЧрд░реНрди рдХреЛрдб рд▓реЗрдЦреНрди рдзреЗрд░реИ рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╣рд╛рдореАрд▓реЗ рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдпреМрдВ рд░ рдорд╣рд╕реБрд╕ рдЧрд░реНрдпреМрдВ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рд▓реЗрдирджреЗрдирд╣рд░реВ рд░ рд╡рд┐рд▓рдореНрдмрддрд╛рдорд╛ рдХрдо рдирд┐рд░реНрднрд░рддрд╛рдХреЛ рд╕рд╛рде, рдЕрдЭ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреБрд░рд╛рдорд╛ рдЬрд╛рди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЧрд░реНрдпреМрдВ, рдзреЗрд░реИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдпреМрдВ рд░ PostgreSQL рд░реЛрдЬреНрдпреМрдВред

рд╣рд╛рдореА рдЕрд╣рд┐рд▓реЗ 1,5 рд╡рд░реНрд╖рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд╕рд░реНрджреИ рдЫреМрдБ рд░ рдбрд╛рдЯрд╛рдХреЛ рд╕рд╛рдиреЛ рдЕрдВрд╢ рдорд╛рддреНрд░ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рдЕрдм рд╣рд╛рдореА Redis рд░ PostgreSQL рд╕рдБрдЧрд╕рдБрдЧреИ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВред рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдмреАрдЪ рдбрд╛рдЯрд╛ рд╕рд╛рд░реНрдиреЗ рд░ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреЗ рдЪрд░рдгрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рдореЗрд░реЛ рд╕рд╣рдХрд░реНрдореА рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ.

рдЬрдм рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд╕рд╛рд░реНрди рдерд╛рд▓реНрдпреМрдВ, рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд╕реАрдзрд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНтАНрдпреЛ рд░ Redis рд░ PostgreSQL рдорд╛рд╕реНрдЯрд░ рдкрд╣реБрдБрдЪ рдЧрд░реНтАНрдпреЛред PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдорд╛рд╕реНрдЯрд░ рд░ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐рдХреЛ рд╕рд╛рде рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕рдорд╛рд╡реЗрд╢ рдерд┐рдпреЛред рдпреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

PgBouncer рд▓рд╛рдЧреВ рдЧрд░реНрджреИ

рдЬрдм рд╣рд╛рдореА рд╕рд░реНрджреИ рдерд┐рдпреМрдВ, рдЙрддреНрдкрд╛рджрди рдкрдирд┐ рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛ: рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд░ PostgreSQL рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрдвреНрдпреЛ, рд░ рд╣рд╛рдореА рдЬрдбрд╛рдирд╣рд░реВ рд╕рдорд╛рдкреНрдд рд╣реБрди рдерд╛рд▓реНрдЫреМрдВред PostgreSQL рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЬрдбрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ рд░ рд╕реНрд░реЛрддрд╣рд░реВ рдЦрдкрдд рдЧрд░реНрджрдЫред рддрдкрд╛рдЗрдБ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдиреНрджреБ рд╕рдореНрдо рдЬрдбрд╛рдирдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрдврд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЕрдиреНрдпрдерд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдирдЧрд░реНрдиреЗ рдореМрдХрд╛ рдЫред рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЖрджрд░реНрд╢ рд╡рд┐рдХрд▓реНрдк рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рдЕрдЧрд╛рдбрд┐ рдЦрдбрд╛ рд╣реБрдиреЗ рдЬрдбрд╛рди рдкреНрд░рдмрдиреНрдзрдХ рдЪрдпрди рдЧрд░реНрди рд╣реБрдиреЗрдЫред

рд╣рд╛рдореАрд╕рдБрдЧ рдЬрдбрд╛рди рдкреНрд░рдмрдиреНрдзрдХрдХреЛ рд▓рд╛рдЧрд┐ рджреБрдИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдерд┐рдП: Pgpool рд░ PgBouncerред рддрд░ рдкрд╣рд┐рд▓реЛрд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд▓реЗрдирджреЗрди рдореЛрдбрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрди, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ PgBouncer рд░реЛрдЬреНрдпреМрдВред

рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдХрд╛ рдЫреМрдВ: рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдПрдЙрдЯрд╛ PgBouncer рдкрд╣реБрдБрдЪ рдЧрд░реНрдЫ, рдЬрд╕рдХреЛ рдкрдЫрд╛рдбрд┐ PostgreSQL рдорд╛рд╕реНрдЯрд░рд╣рд░реВ рдЫрдиреН, рд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд╕реНрдЯрд░рдХреЛ рдкрдЫрд╛рдбрд┐ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐рдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдЫред
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рдЙрд╣реА рд╕рдордпрдорд╛, рд╣рд╛рдореАрд▓реЗ PostgreSQL рдорд╛ рдбрд╛рдЯрд╛рдХреЛ рд╕рдореНрдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреЗрдиреМрдВ рд░ рдбрд╛рдЯрд╛рдмреЗрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЧрддрд┐ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдерд┐рдпреЛ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрддрд░рдорд╛ PostgreSQL рдХреЛ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрди рдерд╛рд▓реНрдпреМрдВред рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдпреЛрдЬрдирд╛ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ: рдирдпрд╛рдБ PostgreSQL рд╢рд╛рд░реНрдб рдердкреНрджрд╛, рдпреЛ PgBouncer рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рддреБрд░реБрдиреНрддреИ рдирдпрд╛рдБ рд╢рд╛рд░реНрдбрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫред

PgBouncer рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛

рдпреЛ рдпреЛрдЬрдирд╛рд▓реЗ рдорд╛рддреНрд░ PgBouncer рдЙрджрд╛рд╣рд░рдгрдХреЛ рдореГрддреНрдпреБ рдирднрдПрд╕рдореНрдо рдХрд╛рдо рдЧрд░реНрдпреЛред рд╣рд╛рдореА AWS рдорд╛ рдЫреМрдВ, рдЬрд╣рд╛рдБ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рдорд░реНрдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рд╕рдмреИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд▓рдиреНрдЪ рд╣реБрдиреНрдЫрдиреНред рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЙрджрд╛рд╣рд░рдг рдорд╛рддреНрд░ рдирдпрд╛рдБ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рд╕рд░реНрдЫ рд░ рдлреЗрд░рд┐ рдХрд╛рдо рдЧрд░реНрджрдЫред рдпреЛ PgBouncer рд╕рдВрдЧ рднрдпреЛ, рддрд░ рдпреЛ рдЕрдиреБрдкрд▓рдмреНрдз рднрдпреЛред рдпреЛ рджреБрд░реНрдШрдЯрдирд╛рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛ 25 рдорд┐рдиреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкрд▓рдмреНрдз рдерд┐рдпреЛред рддреНрдпрд╕реНрддрд╛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, AWS рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкрдХреНрд╖рдорд╛ рд░рд┐рдбрдиреНрдбрдиреНрд╕реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫ, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рддреНрдпрд╕ рд╕рдордпрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реЗрдХрд╛ рдерд┐рдПрдиреМрдВред

рддреНрдпрд╕ рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ PgBouncer рд░ PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рдЧрд▓реНрддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЧрдореНрднреАрд░рддрд╛рдХрд╛ рд╕рд╛рде рд╕реЛрдЪреНрдпреМрдВ, рдХрд┐рдирднрдиреЗ рд╣рд╛рдореНрд░реЛ AWS рдЦрд╛рддрд╛рдорд╛ рдХреБрдиреИ рдкрдирд┐ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдпрд╕реНрддреИ рдЕрд╡рд╕реНрдерд╛ рдлреЗрд░рд┐ рд╣реБрди рд╕рдХреНрдЫред

рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рд░реВрдкрдорд╛ PgBouncer рддреНрд░реБрдЯрд┐ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдХрд╛ рдЫреМрдВ: рд╕рдмреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрднрд░рд╣рд░реВрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рдкрд╣реБрдБрдЪ рдЧрд░реНрджрдЫ, рдЬрд╕рдХреЛ рдкрдЫрд╛рдбрд┐ рджреБрдИ PgBouncers рдЫрдиреНред PgBouncers рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рд░реНрдбрдХреЛ рдПрдЙрдЯреИ рдорд╛рд╕реНрдЯрд░ PostgreSQL рдорд╛ рд╣реЗрд░реНрдЫред рдпрджрд┐ AWS рдЙрджрд╛рд╣рд░рдг рдХреНрд░реНрдпрд╛рд╕ рднрдПрдХреЛ рд╕реНрдерд┐рддрд┐ рджреЛрд╣реЛрд░рд┐рдиреНрдЫ рднрдиреЗ, рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХ рдЕрд░реНрдХреЛ PgBouncer рдорд╛рд░реНрдлрдд рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рд╣реБрдиреНрдЫред рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рддреНрд░реБрдЯрд┐ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ AWS рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред

рдпреЛ рдпреЛрдЬрдирд╛рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдирдпрд╛рдБ PgBouncer рд╕рд░реНрднрд░рд╣рд░реВ рдердкреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

PostgreSQL рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрд╛, рд╣рд╛рдореАрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдпреМрдВ: рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдлреЗрд▓рдУрднрд░, repmgr, AWS RDS, Patroniред

рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ

рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдорд╛рд╕реНрдЯрд░рдХреЛ рдХрд╛рдордХреЛ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рд╕рдХреНрдЫрдиреН рд░, рдпрджрд┐ рдпреЛ рдЕрд╕рдлрд▓ рднрдПрдорд╛, рдкреНрд░рддрд┐рдХреГрддрд┐рд▓рд╛рдИ рдорд╛рд╕реНрдЯрд░рдорд╛ рдкреНрд░рд╡рд░реНрджреНрдзрди рдЧрд░реНрди рд░ PgBouncer рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫред

рдпрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЕрдзрд┐рдХрддрдо рд╕рд░рд▓рддрд╛ рд╣реБрдиреН, рдХрд┐рдирднрдиреЗ рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдЖрдлреИрдВ рд▓реЗрдЦреНрдиреБрд╣реБрдиреНрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫрдиреН рднрдиреНрдиреЗ рдХреБрд░рд╛ рдмреБрдЭреНрдиреБрд╣реБрдиреНрдЫред

Cons:

  • рдорд╛рд╕реНрдЯрд░рдХреЛ рдореГрддреНрдпреБ рдирд╣реБрди рд╕рдХреНрдЫ; рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛, рддреНрдпрд╣рд╛рдБ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рдлрд▓рддрд╛ рднрдПрдХреЛ рд╣реБрди рд╕рдХреНрдЫред рдлреЗрд▓рдУрднрд░, рдпрд╕ рдмрд╛рд░реЗ рдЕрдирдЬрд╛рдирд▓реЗ, рдкреНрд░рддрд┐рдХреГрддрд┐рд▓рд╛рдИ рдорд╛рд╕реНрдЯрд░рдорд╛ рдмрдврд╛рд╡рд╛ рджрд┐рдиреЗрдЫ, рд░ рдкреБрд░рд╛рдиреЛ рдорд╛рд╕реНрдЯрд░рд▓реЗ рдХрд╛рдо рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреЗрдЫред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдорд╛рд╕реНрдЯрд░ рд░реЛрд▓рдорд╛ рджреБрдИрд╡рдЯрд╛ рд╕рд░реНрднрд░рд╣рд░реВ рдкрд╛рдЙрдиреЗрдЫреМрдВ рд░ рддреА рдордзреНрдпреЗ рдХреБрдирдХреЛ рд╣рд╛рд▓рдХреЛ рдбрд╛рдЯрд╛ рдЫ рднрдиреЗрд░ рдерд╛рд╣рд╛ рд╣реБрдБрджреИрдиред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рд▓рд╛рдИ рд╕реНрдкреНрд▓рд┐рдЯ-рдмреНрд░реЗрди рдкрдирд┐ рднрдирд┐рдиреНрдЫ;
  • рд╣рд╛рдореА рдХреБрдиреИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрд┐рдирд╛ рдиреИ рдЫреЛрдбреНрдпреМрдВред рд╣рд╛рдореНрд░реЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдПрдХ рдорд╛рд╕реНрдЯрд░ рд░ рдПрдЙрдЯрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдЫ, рд╕реНрд╡рд┐рдЪ рдЧрд░реЗрдкрдЫрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐рд▓рд╛рдИ рдорд╛рд╕реНрдЯрд░рдорд╛ рдмрдврд╛рд╡рд╛ рджрд┐рдЗрдиреНрдЫ рд░ рд╣рд╛рдореАрд╕рдБрдЧ рдЕрдм рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ рдЫреИрдирдиреН, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдирдпрд╛рдБ рдкреНрд░рддрд┐рдХреГрддрд┐ рдердкреНрдиреБ рдкрд░реНрдЫ;
  • рд╣рд╛рдореАрд▓рд╛рдИ рдлреЗрд▓рдУрднрд░ рдЕрдкрд░реЗрд╢рдирдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдЧрд░рд╛рдиреА рдЪрд╛рд╣рд┐рдиреНрдЫ, рд░ рд╣рд╛рдореАрд╕рдБрдЧ резреи PostgreSQL рд╢рд╛рд░реНрдбрд╣рд░реВ рдЫрдиреН, рдЬрд╕рдХреЛ рдорддрд▓рдм рд╣рд╛рдореАрд▓реЗ резреи рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╢рд╛рд░реНрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрдврд╛рдЙрдБрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдлреЗрд▓рдУрднрд░ рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рдкрдирд┐ рд╕рдореНрдЭрдиреБрдкрд░реНрдЫред

рдПрдХ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдлреЗрд▓рдУрднрд░ рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рджреЗрдЦрд┐рдиреНрдЫ рд░ рдЧреИрд░-рддреБрдЪреНрдЫ рд╕рдорд░реНрдерди рдЪрд╛рд╣рд┐рдиреНрдЫред рдПрдЙрдЯрд╛ PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕рд╛рде, рдпреЛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реБрдиреЗрдЫ, рддрд░ рдпрд╕рд▓реЗ рдорд╛рдкрди рдЧрд░реНрджреИрди, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫреИрдиред

Repmgr

PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреНрд░рдмрдиреНрдзрдХ, рдЬрд╕рд▓реЗ PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХреНрдЫред рдПрдХреИ рд╕рдордпрдорд╛, рдпрд╕рдорд╛ рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░ рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ рдХрд╛рдо рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рддрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдирдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдЖрдлреНрдиреИ "рд░реЗрдкрд░" рд▓реЗрдЦреНрдиреБ рдкрд░реНрдЫред рддреНрдпрд╕реЛрднрдП рд╕рдмреИ рдХреБрд░рд╛ рдЖрддреНрдо-рд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рднрдиреНрджрд╛ рдкрдирд┐ рдЬрдЯрд┐рд▓ рд╣реБрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ Repmgr рдХреЛ рдкреНрд░рдпрд╛рд╕ рдкрдирд┐ рдЧрд░реЗрдиреМрдВред

AWS RDS

рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рдмреНрдпрд╛рдХрдЕрдк рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рдкреВрд▓рд▓рд╛рдИ тАЛтАЛрд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдпрд╕рдорд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрд╡рд┐рдЪрд┐рдЩ рдЫ: рдЬрдм рдорд╛рд╕реНрдЯрд░рдХреЛ рдореГрддреНрдпреБ рд╣реБрдиреНрдЫ, рдкреНрд░рддрд┐рдХреГрддрд┐ рдирдпрд╛рдБ рдорд╛рд╕реНрдЯрд░ рдмрдиреНрдЫ, рд░ AWS рд▓реЗ DNS рд░реЗрдХрд░реНрдбрд▓рд╛рдИ рдирдпрд╛рдБ рдорд╛рд╕реНрдЯрд░рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫ, рдЬрдмрдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди AZ рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрди рд╕рдХреНрдЫрдиреНред

рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВрдорд╛ рд░рд╛рдореНрд░реЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдХреЛ рдХрдореА рд╕рдорд╛рд╡реЗрд╢ рдЫред рдлрд╛рдЗрди-рдЯреНрдпреВрдирд┐рдЩрдХреЛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛: рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдорд╛ tcp рдЬрдбрд╛рдирд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдЫрдиреН, рдЬреБрди рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, RDS рдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди:

net.ipv4.tcp_keepalive_time=10
net.ipv4.tcp_keepalive_intvl=1
net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_retries2=3

рдердк рд░реВрдкрдорд╛, AWS RDS рдирд┐рдпрдорд┐рдд рдЙрджрд╛рд╣рд░рдг рдореВрд▓реНрдпрдХреЛ рддреБрд▓рдирд╛рдорд╛ рд▓рдЧрднрдЧ рджреЛрдмреНрдмрд░ рдорд╣рдБрдЧреЛ рдЫ, рдЬреБрди рдпреЛ рд╕рдорд╛рдзрд╛рди рддреНрдпрд╛рдЧреНрдиреЗ рдореБрдЦреНрдп рдХрд╛рд░рдг рдерд┐рдпреЛред

рд╕рдВрд░рдХреНрд╖рдХ

рдпреЛ рд░рд╛рдореНрд░реЛ рдХрд╛рдЧрдЬрд╛рдд, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рдлрд▓рддрд╛ рд░ github рдорд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрдЧ PostgreSQL рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкрд╛рдЗрдерди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛред

Patroni рдХреЛ рд▓рд╛рдн:

  • рдкреНрд░рддреНрдпреЗрдХ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рд╕реНрдкрд╖реНрдЯ рдЫ;
  • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░ рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░ рдХрд╛рдо рдЧрд░реНрджрдЫ;
  • рдкрд╛рдЗрдердирдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ, рд░ рд╣рд╛рдореА рдЖрдлреИрдВрд▓реЗ рдкрд╛рдЗрдердирдорд╛ рдзреЗрд░реИ рд▓реЗрдЦреНрдиреЗ рднрдПрдХреЛрд▓реЗ, рд╣рд╛рдореАрд▓рд╛рдИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреЗрдЫ рд░, рд╕рдореНрднрд╡рддрдГ, рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд┐рдХрд╛рд╕рдорд╛ рдкрдирд┐ рдорджреНрджрдд рдЧрд░реНрджрдЫ;
  • PostgreSQL рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕рдмреИ рдиреЛрдбрд╣рд░реВрдорд╛ рдПрдХреИрдЪреЛрдЯрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рд░ рдпрджрд┐ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓рд╛рдЧреВ рдЧрд░реНрди рдХреНрд▓рд╕реНрдЯрд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рдпреЛ Patroni рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдлреЗрд░рд┐ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

Cons:

  • рдпреЛ рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ рд╕реНрдкрд╖реНрдЯ рдЫреИрди рдХрд┐ рдХрд╕рд░реА PgBouncer рд╕рдБрдЧ рд╕рд╣реА рддрд░рд┐рдХрд╛рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗред рдпрджреНрдпрдкрд┐ рдпрд╕рд▓рд╛рдИ рдорд╛рдЗрдирд╕ рднрдиреНрди рдЧрд╛рд╣реНрд░реЛ рдЫ, рдХрд┐рдирдХрд┐ Patroni рдХреЛ рдХрд╛рдо PostgreSQL рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБ рд╣реЛ, рд░ Patroni рдорд╛ рдЬрдбрд╛рди рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╣рд╛рдореНрд░реЛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ;
  • рдареВрд▓рд╛ рд╕реНрддрд░рд╣рд░реВрдорд╛ Patroni рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд╛ рдХреЗрд╣реА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЫрдиреН, рдЬрдмрдХрд┐ рд╕реНрдХреНрд░реНрдпрд╛рдЪрдмрд╛рдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд╛ рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЫрдиреНред

рдлрд▓рд╕реНрд╡рд░реВрдк, рд╣рд╛рдореАрд▓реЗ рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди Patroni рд░реЛрдЬреНрдпреМрдВред

рд╕рдВрд░рдХреНрд╖рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛

Patroni рдЕрдШрд┐, рд╣рд╛рдореАрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдорд╛рд╕реНрдЯрд░рдорд╛ 12 PostgreSQL рд╢рд╛рд░реНрдбрд╣рд░реВ рд░ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдкреНрд░рддрд┐рдХреГрддрд┐рдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдерд┐рдпреЛред рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕рд░реНрднрд░рд╣рд░реВрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реЗ, рдЬрд╕рдХреЛ рдкрдЫрд╛рдбрд┐ PgBouncer рд╕рдБрдЧ рджреБрдИрд╡рдЯрд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдерд┐рдП, рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкрдЫрд╛рдбрд┐ рд╕рдмреИ PostgreSQL рд╕рд░реНрднрд░рд╣рд░реВ рдерд┐рдПред
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

Patroni рд▓рд╛рдЧреВ рдЧрд░реНрди, рд╣рд╛рдореАрд▓реЗ рд╡рд┐рддрд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рднрдгреНрдбрд╛рд░рдг рдЪрдпрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред Patroni рд╡рд┐рддрд░рд┐рдд рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдЬрд╕реНрддреИ etcd, Zookeeper, Consul рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрдЫред рд╣рд╛рдореАрд╕рдБрдЧ рдЙрддреНрдкрд╛рджрдирдорд╛ рдкреВрд░реНрдг рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдЫ, рдЬрд╕рд▓реЗ Vault рд╕рдБрдЧ рд╕рдВрдпреЛрдЬрдирдорд╛ рдХрд╛рдо рдЧрд░реНрдЫ рд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЕрдм рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдиреМрдВред рдпрд╕рдХреЛ рдЕрднрд┐рдкреНрд░реЗрдд рдЙрджреНрджреЗрд╢реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрд╕реБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдПрдЙрдЯрд╛ рдареВрд▓реЛ рдХрд╛рд░рдгред

Patroni рдХрдиреНрд╕реБрд▓рд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ

рд╣рд╛рдореАрд╕рдБрдЧ рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдЫ, рдЬрд╕рдорд╛ рддреАрдирд╡рдЯрд╛ рдиреЛрдбрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рд░ рдПрдЙрдЯрд╛ Patroni рдХреНрд▓рд╕реНрдЯрд░, рдЬрд╕рдорд╛ рдиреЗрддрд╛ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╣реБрдиреНрдЫ (рдкрдЯреНрд░реЛрдиреАрдорд╛, рдорд╛рд▓рд┐рдХрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрддрд╛ рднрдирд┐рдиреНрдЫ, рд░ рджрд╛рд╕рд╣рд░реВрд▓рд╛рдИ рдкреНрд░рддрд┐рдХреГрддрд┐ рднрдирд┐рдиреНрдЫ)ред рдкреНрд░рддреНрдпреЗрдХ Patroni рдХреНрд▓рд╕реНрдЯрд░ рдЙрджрд╛рд╣рд░рдгрд▓реЗ рд▓рдЧрд╛рддрд╛рд░ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдмрд╛рд░реЗ рдХрдиреНрд╕реБрд▓рд▓рд╛рдИ рдЬрд╛рдирдХрд╛рд░реА рдкрдард╛рдЙрдБрдЫред рддрд╕рд░реНрде, рдХрдиреНрд╕реБрд▓рдмрд╛рдЯ рддрдкрд╛рдИрд▓реЗ рдЬрд╣рд┐рд▓реЗ рдкрдирд┐ Patroni рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рдиреЗрддрд╛ рдХреЛ рд╣реЛред

рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

Patroni рд▓рд╛рдИ рдХрдиреНрд╕реБрд▓рд╕рдБрдЧ рдЬреЛрдбреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдХреЗрд╡рд▓ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЕрдзреНрдпрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕рдорд╛ рднрдирд┐рдПрдХреЛ рдЫ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рдХрдиреНрд╕реБрд▓рд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫреМрдВ, рд░ рдЬрдбрд╛рди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдкрдорд╛, рддрдкрд╛рдЗрдБрд▓реЗ http рд╡рд╛ https рдврд╛рдБрдЪрд╛рдорд╛ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

host: the host:port for the Consul endpoint, in format: http(s)://host:port
scheme: (optional) http or https, defaults to http

рдпреЛ рд╕рд░рд▓ рджреЗрдЦрд┐рдиреНрдЫ, рддрд░ рдпрд╣реАрдВрдмрд╛рдЯ рд╣рд╛рдирд┐рд╣рд░реВ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рдХрдиреНрд╕реБрд▓рдХреЛ рд╕рд╛рде рд╣рд╛рдореА https рдорд╛рд░реНрдлрдд рд╕реБрд░рдХреНрд╖рд┐рдд рдЬрдбрд╛рдирдорд╛ рдХрд╛рдо рдЧрд░реНрдЫреМрдВ рд░ рд╣рд╛рдореНрд░реЛ рдЬрдбрд╛рди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫ:

consul:
  host: https://server.production.consul:8080 
  verify: true
  cacert: {{ consul_cacert }}
  cert: {{ consul_cert }}
  key: {{ consul_key }}

рддрд░ рддреНрдпреЛ рддрд░рд┐рдХрд╛рд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрдиред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдорд╛, Patroni рдХрдиреНрд╕реБрд▓рд╕рдБрдЧ рдЬрдбрд╛рди рд╣реБрди рд╕рдХреНрджреИрди рдХрд┐рдирднрдиреЗ рдпрд╕рд▓реЗ рдЕрдЭреИ рдкрдирд┐ http рдорд╛рд░реНрдлрдд рдЬрд╛рдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫред

Patroni рд╕реНрд░реЛрдд рдХреЛрдбрд▓реЗ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдпреЛред рдпреЛ рдкрд╛рдЗрдерди рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рд░рд╛рдореНрд░реЛ рдЫред рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ рд╣реЛрд╕реНрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдХреБрдиреИ рдкрдирд┐ рддрд░рд┐рдХрд╛рдорд╛ рдкрд╛рд░реНрд╕ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди, рд░ рдкреНрд░реЛрдЯреЛрдХрд▓ рдпреЛрдЬрдирд╛ рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реБрдиреБрдкрд░реНрдЫред рдХрдиреНрд╕реБрд▓рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдп рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмреНрд▓рдХ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

consul:
  host: server.production.consul:8080
  scheme: https
  verify: true
  cacert: {{ consul_cacert }}
  cert: {{ consul_cert }}
  key: {{ consul_key }}

рдХрдиреНрд╕реБрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ

рддреНрдпрд╕реИрд▓реЗ, рд╣рд╛рдореАрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рднрдгреНрдбрд╛рд░рдг рдЫрдиреМрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдЕрдм рд╣рд╛рдореАрд▓реЗ рдмреБрдЭреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдХрд╕рд░реА PgBouncer рд▓реЗ рдпрд╕рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмрджрд▓реНрдЫ рдЬрдм Patroni рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдиреЗрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫред рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдпрд╕ рдкреНрд░рд╢реНрдирдХреЛ рдХреБрдиреИ рдЬрд╡рд╛рдл рдЫреИрди, рдХрд┐рдирдХрд┐ ... рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, PgBouncer рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рддреНрдпрд╣рд╛рдБ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред

рд╕рдорд╛рдзрд╛рдирдХреЛ рдЦреЛрдЬреАрдорд╛, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд▓реЗрдЦ рдлреЗрд▓рд╛ рдкрд╛рд░реНтАНрдпреМрдВ (рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдорд▓рд╛рдИ рдирд╛рдо рдпрд╛рдж рдЫреИрди), рдЬрд╣рд╛рдБ рдпреЛ рд▓реЗрдЦрд┐рдПрдХреЛ рдерд┐рдпреЛ рдХрд┐ рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯ PgBouncer рд░ Patroni рдХреЛ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрди рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рдерд┐рдпреЛред рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯрдХреЛ рдХрд╛рдо рдЕрдзреНрдпрдпрди рдЧрд░реНрди рдкреНрд░реЗрд░рд┐рдд рдЧрд░реНтАНрдпреЛред

рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯрд▓реЗ рдХрдиреНрд╕реБрд▓рдорд╛ PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓рд╛рдИ рдирд┐рд░рдиреНрддрд░ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдмрд╛рд╣рд┐рд░ рдЖрдпреЛред рдЬрдм рдиреЗрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ, рдпрд╕рд▓реЗ PgBouncer рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрдкрдбреЗрдЯ рдЧрд░реНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдкреБрди: рд▓реЛрдб рдЧрд░реНрди рдЖрджреЗрд╢ рдкрдард╛рдЙрдБрдЫред

рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рдЯреЗрдореНрдкреНрд▓реЗрдЯрдХреЛ рдареВрд▓реЛ рдлрд╛рдЗрджрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдпреЛ рдХреЛрдбрдХреЛ рд░реВрдкрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдирдпрд╛рдБ рд╢рд╛рд░реНрдб рдердкреНрджрд╛, рдпреЛ рдХреЛрдб рд╕рд┐рджреНрдзрд╛рдиреНрддрдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИ, рдирдпрд╛рдБ рдХрдорд┐рдЯ рдмрдирд╛рдЙрди рд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫред

Patroni рд╕рдВрдЧ рдирдпрд╛рдБ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреМрдВ:
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рд╕рдмреИ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕рд░реНрднрд░рд╣рд░реВрд▓реЗ рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрдЫрдиреН тЖТ рдпрд╕рдХреЛ рдкрдЫрд╛рдбрд┐ рддреНрдпрд╣рд╛рдБ рджреБрдИрд╡рдЯрд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЫрдиреН PgBouncer тЖТ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ Patroni рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдЕрдиреБрдЧрдорди рдЧрд░реНрджрдЫ рд░ PgBouncer рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХрддрд╛рд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рд╡рд░реНрддрдорд╛рди рдиреЗрддрд╛рд▓рд╛рдИ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрджрдЫред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛред

рдореНрдпрд╛рдиреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг

рдпрд╕рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рд▓рдиреНрдЪ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рдпреЛ рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╕рд╛рдиреЛ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд▓рдиреНрдЪ рдЧрд░реНрдпреМрдВ рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрд╡рд┐рдЪрд┐рдЩрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдЬрд╛рдБрдЪ рдЧрд░реНрдпреМрдВред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдмреЛрд░реНрдб рдЦреЛрд▓реЗ, рд╕реНрдЯрд┐рдХрд░ рд╕рд╛рд░реЗ рд░ рддреНрдпрд╕ рдХреНрд╖рдгрдорд╛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдиреЗрддрд╛рд▓рд╛рдИ "рдорд╛рд░реНрдпреЛ"ред AWS рдорд╛, рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдХрдиреНрд╕реЛрд▓ рдорд╛рд░реНрдлрдд рдЙрджрд╛рд╣рд░рдг рдмрдиреНрдж рдЧрд░реНрдиреБ рд╣реЛред

рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рд╕реНрдЯрд┐рдХрд░ 10-20 рд╕реЗрдХреЗрдиреНрдб рднрд┐рддреНрд░ рдлрд░реНрдХрд┐рдпреЛ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдлреЗрд░рд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рд╕рд╛рд░реНрди рдерд╛рд▓реНрдпреЛред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ Patroni рдХреНрд▓рд╕реНрдЯрд░рд▓реЗ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдпреЛ: рдпрд╕рд▓реЗ рдиреЗрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдпреЛ, рдХрдиреНрд╕реБрд▓рд▓рд╛рдИ рдЬрд╛рдирдХрд╛рд░реА рдкрдард╛рдпреЛ, рд░ рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯрд▓реЗ рддреБрд░реБрдиреНрддреИ рдпреЛ рдЬрд╛рдирдХрд╛рд░реА рдЙрдард╛рдпреЛ, PgBouncer рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓рд╛рдИ рдмрджрд▓реНрдпреЛ рд░ рдкреБрди: рд▓реЛрдб рдЧрд░реНрди рдЖрджреЗрд╢ рдкрдард╛рдпреЛред

рдХрд╕рд░реА рдЙрдЪреНрдЪ рд▓реЛрдб рдЕрдиреНрддрд░реНрдЧрдд рдмрд╛рдБрдЪреНрдиреЗ рд░ рдиреНрдпреВрдирддрдо рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╛рдпрдо рд░рд╛рдЦреНрдиреЗ?

рд╕рдмреИ рдХреБрд░рд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ! рддрд░ рдирдпрд╛рдБ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЙрдареНрдЫрдиреН: рдпрд╕рд▓реЗ рдЙрдЪреНрдЪ рднрд╛рд░рдорд╛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ? рдХрд╕рд░реА рдЫрд┐рдЯреЛ рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдЙрддреНрдкрд╛рджрди рдорд╛ рд╕рдмреИ рд░реЛрд▓ рдЖрдЙрдЯ?

рд╣рд╛рдореАрд▓реЗ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдгрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдкрд╣рд┐рд▓реЛ рдкреНрд░рд╢реНрдирдХреЛ рдЬрд╡рд╛рдл рджрд┐рди рдорджреНрджрдд рдЧрд░реНрдЫред рдпреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдорд╛ рдЙрддреНрдкрд╛рджрдирд╕рдБрдЧ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдорд╛рди рдЫ рд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдЧрд░реЗрдХреЛ рдЫ, рдЬреБрди рдЙрддреНрдкрд╛рджрдирдХреЛ рдорд╛рддреНрд░рд╛рдорд╛ рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рдЫред рд╣рд╛рдореА рдкрд░реАрдХреНрд╖рдгрдХреЛ рдХреНрд░рдордорд╛ PostgreSQL рдорд╛рд╕реНрдЯрд░рд╣рд░реВ рдордзреНрдпреЗ рдПрдХрд▓рд╛рдИ "рдорд╛рд░" рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдЫреМрдВ рд░ рдХреЗ рд╣реБрдиреНрдЫ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рддрд░ рддреНрдпреЛ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реЛрд▓рдЖрдЙрдЯ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ, рдХрд┐рдирдХрд┐ рдпрд╕ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ PostgreSQL рд╢рд╛рд░реНрдбрд╣рд░реВ рдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдЙрддреНрдкрд╛рджрди рдЕрдШрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓рд┐рдкрд┐рд╣рд░реВрдХреЛ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред

рджреБрдмреИ рдХрд╛рд░реНрдпрд╣рд░реВ рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рджреЗрдЦрд┐рдиреНрдЫрдиреН, рддрд░ рд╣рд╛рдореАрд╕рдБрдЧ PostgreSQL 9.6 рдЫред рд╕рд╛рдпрдж рд╣рд╛рдореА рддреБрд░реБрдиреНрддреИ 11.2 рдорд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ?

рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ реи рдЪрд░рдгрд╣рд░реВрдорд╛ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдЫреМрдВ: рдкрд╣рд┐рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг резрез.реи рдорд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддреНрдпрд╕рдкрдЫрд┐ Patroni рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

PostgreSQL рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ

PostgreSQL рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рдБрдбреИ рдЕрдкрдбреЗрдЯ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ -k, рдЬрд╕рдорд╛ рдбрд┐рд╕реНрдХрдорд╛ рд╣рд╛рд░реНрдб рд▓рд┐рдЩреНрдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рддрдкрд╛рдИрдВрдХреЛ рдбрд╛рдЯрд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред 300-400 GB рдХреЛ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрдорд╛, рдЕрдкрдбреЗрдЯрд▓реЗ 1 рд╕реЗрдХреЗрдиреНрдб рд▓рд┐рдиреНрдЫред

рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ рд╢рд╛рд░реНрдбрд╣рд░реВ рдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд▓реЗрдмреБрдХ рд▓реЗрдЦреНрдпреМрдВ рдЬрд╕рд▓реЗ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рд╕рдореНрдкреВрд░реНрдг рдЕрдкрдбреЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫ:

/usr/lib/postgresql/11/bin/pg_upgrade 
<b>--link </b>
--old-datadir='' --new-datadir='' 
 --old-bindir=''  --new-bindir='' 
 --old-options=' -c config_file=' 
 --new-options=' -c config_file='

рдпрд╣рд╛рдБ рдзреНрдпрд╛рди рджрд┐рдиреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рдЕрдкрдЧреНрд░реЗрдб рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╕рдБрдЧ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреБрдкрд░реНрдЫ --рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНрдЕрдкрдЧреНрд░реЗрдб рд╕рдореНрднрд╡ рдЫ рднрдиреЗрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиред рд╣рд╛рдореНрд░реЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓реЗ рдЕрдкрдЧреНрд░реЗрдбрдХреЛ рдХреНрд░рдордорд╛ рдХрдиреНрдлрд┐рдЧрд╣рд░реВ рдкрдирд┐ рдмрджрд▓реНрдЫред рд╣рд╛рдореНрд░реЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ 30 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдкреВрд░рд╛ рднрдпреЛ, рдЬреБрди рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рд╣реЛред

Patroni рдХреЛ рд╢реБрднрд╛рд░рдореНрдн

рджреЛрд╕реНрд░реЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рдХреЗрд╡рд▓ Patroni рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдгреНрдбрд╛рд░рдорд╛ initdb рд╕рдБрдЧ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЫ, рдЬреБрди Patroni рд▓рд╛рдИ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд╕реБрд░реБ рдЧрд░реНрджрд╛ рдирдпрд╛рдБ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреНрдЫред рддрд░ рд╣рд╛рдореАрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рддрдпрд╛рд░ рдбрд╛рдЯрд╛рдмреЗрд╕ рднрдПрдХреЛрд▓реЗ, рд╣рд╛рдореАрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдмрд╛рдЯ рдорд╛рддреНрд░ рдпреЛ рдЦрдгреНрдб рд╣рдЯрд╛рдпреМрдВред

рдЬрдм рд╣рд╛рдореАрд▓реЗ Patroni рд▓рд╛рдИ рддрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдерд╛рд▓реНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рд▓рдиреНрдЪ рдЧрд░реНрди рдерд╛рд▓реНрдпреМрдВ, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреМрдВ: рджреБрдмреИ рд╕рд░реНрднрд░рд╣рд░реВ рдиреЗрддрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕реБрд░реВ рдЧрд░рд┐рдпреЛред Patroni рд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣рд┐ рдерд╛рд╣рд╛ рдЫреИрди рд░ рдПрдЙрдЯреИ рдирд╛рдордХреЛ рд╕рд╛рде рджреБрдИ рдЕрд▓рдЧ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд░реВрдкрдорд╛ рджреБрдмреИ рд╕рд░реНрднрд░рд╣рд░реВ рдЪрд▓рд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫред рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рджрд╛рд╕ рдорд╛ рдбрд╛рдЯрд╛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдореЗрдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

rm -rf /var/lib/postgresql/

рдпреЛ рджрд╛рд╕ рдорд╛ рдорд╛рддреНрд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ!

рд╕рдлрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдЬрдбрд╛рди рдЧрд░реНрджрд╛, Patroni рд▓реЗ рдмреЗрд╕рдмреНрдпрд╛рдХрдЕрдк рд▓рд┐рдбрд░ рдмрдирд╛рдЙрдБрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рддрд┐рдХреГрддрд┐рдорд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╡рд╛рд▓ рд▓рдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛рд▓рд╛рдИ рд╕рдорд╛рддреНрдЫред

рд╣рд╛рдореАрд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реЗрдХреЛ рдЕрд░реНрдХреЛ рдХрдард┐рдирд╛рдИ рднрдиреЗрдХреЛ рд╕рдмреИ PostgreSQL рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрд▓рд╛рдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдореБрдЦреНрдп рднрдирд┐рдиреНрдЫред рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛рдИ рдЕрд░реНрдХреЛрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рдерд╛рд╣рд╛ рд╣реБрдБрджреИрди, рдпреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛред рддрд░ рдЬрдм рддрдкрд╛рдЗрдБ Patroni рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ, рд╕рдмреИ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рд╣реБрдиреБрдкрд░реНрдЫред рд╕рдорд╛рдзрд╛рди PostgreSQL рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБ рд╣реЛред

рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг

рд╣рд╛рдореАрд▓реЗ рдмреЛрд░реНрдбрдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫрдиреН рднрдиреНрдиреЗ рдЕрдиреБрдХрд░рдг рдЧрд░реНрдиреЗ рдПрдЙрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНтАНрдпреМрдВред рдЬрдм рд▓реЛрдб рд╣рд╛рдореНрд░реЛ рджреИрдирд┐рдХ рдФрд╕рддрдорд╛ рдкреБрдЧреНрдпреЛ, рд╣рд╛рдореАрд▓реЗ рдареНрдпрд╛рдХреНрдХреИ рдЙрд╣реА рдкрд░реАрдХреНрд╖рдг рджреЛрд╣реЛрд░реНрдпрд╛рдпреМрдВ, рд╣рд╛рдореАрд▓реЗ рдиреЗрддрд╛ PostgreSQL рд╕рдБрдЧ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдиреНрдж рдЧрд░реНрдпреМрдВред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдЧрд░реНтАНрдпреЛ: Patroni рд▓реЗ рдиреЗрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНтАНрдпреЛ, рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯрд▓реЗ PgBouncer рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрдкрдбреЗрдЯ рдЧрд░реНтАНрдпреЛ рд░ рдкреБрди: рд▓реЛрдб рдЧрд░реНрди рдЖрджреЗрд╢ рдкрдард╛рдпреЛред Grafana рдорд╛ рд╣рд╛рдореНрд░реЛ рдЧреНрд░рд╛рдл рдЕрдиреБрд╕рд╛рд░, рдпреЛ рд╕реНрдкрд╖реНрдЯ рдерд┐рдпреЛ рдХрд┐ рддреНрдпрд╣рд╛рдБ 20-30 рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдврд┐рд▓рд╛рдЗ рд░ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЬрдбрд╛рди рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рд░реНрднрд░рдмрд╛рдЯ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕рд╛рдиреЛ рдорд╛рддреНрд░рд╛ рдерд┐рдпреЛред рдпреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд╕реНрдерд╛ рд╣реЛ, рддреНрдпрд╕реНрддрд╛ рдорд╛рдирд╣рд░реВ рд╣рд╛рдореНрд░реЛ рдлреЗрд▓рдУрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЫрдиреН рд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рд╕реЗрд╡рд╛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рдЫрдиреНред

рдЙрддреНрдкрд╛рджрдирдорд╛ Patroni рдХреЛ рд╕реБрд░реБрд╡рд╛рдд

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдпреЛрдЬрдирд╛рдХреЛ рд╕рд╛рде рдЖрдПрдХрд╛ рдЫреМрдВ:

  • PgBouncer рд╕рд░реНрднрд░рдорд╛ рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕реБрд░реБрд╡рд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • PostgreSQL рд╕рдВрд╕реНрдХрд░рдг 11.2 рдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ;
  • рдХреНрд▓рд╕реНрдЯрд░ рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ;
  • Patroni рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╢реБрднрд╛рд░рдореНрднред

рдПрдХреИ рд╕рдордпрдорд╛, рд╣рд╛рдореНрд░реЛ рдпреЛрдЬрдирд╛рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд▓рдЧрднрдЧ рдХреБрдиреИ рдкрдирд┐ рд╕рдордпрдорд╛ рдкрд╣рд┐рд▓реЛ рдмрд┐рдиреНрджреБ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ; рд╣рд╛рдореА рдкреНрд░рддреНрдпреЗрдХ PgBouncer рд▓рд╛рдИ рдПрдХ рдПрдХ рдЧрд░реЗрд░ рдХрд╛рдордмрд╛рдЯ рд╣рдЯрд╛рдЙрди рд╕рдХреНрдЫреМрдВ рд░ рддреНрдпрд╕рдорд╛ рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯрдХреЛ рдкреНрд░рдпреЛрдЧ рд░ рд╕реБрд░реБрд╡рд╛рдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореАрд▓реЗ рддреНрдпрд╣реА рдЧрд░реНрдпреМрдВред

рджреНрд░реБрдд рдкрд░реАрдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ Ansible рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ, рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╕рдореНрдкреВрд░реНрдг рдкреНрд▓реЗрдмреБрдХ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдерд┐рдпреМрдВ, рд░ рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рд░реНрдбрдХреЛ рд▓рд╛рдЧрд┐ 1,5 рджреЗрдЦрд┐ 2 рдорд┐рдиреЗрдЯрд╕рдореНрдо рдерд┐рдпреЛред рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛ рдирд░реЛрдХрд┐рдХрдиреИ рдкреНрд░рддреНрдпреЗрдХ рд╢рд░реНрдбрдорд╛ рдПрдХ рдПрдХ рдЧрд░реЗрд░ рд╕рдмреИ рдХреБрд░рд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рддрд░ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ PostgreSQL рд▓рд╛рдИ рдзреЗрд░реИ рдорд┐рдиреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдмрдиреНрдж рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдЬрд╕рдХреЛ рдбрд╛рдЯрд╛ рдпрд╕ рд╢рд╛рд░реНрдбрдорд╛ рдЫ, рдпрд╕ рд╕рдордпрдорд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрди, рд░ рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдЫред

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рдЙрдкрд╛рдп рдпреЛрдЬрдирд╛рдмрджреНрдз рдорд░реНрдорддрд╕рдореНрднрд╛рд░ рдерд┐рдпреЛ, рдЬреБрди рд╣рд╛рдореА рд╣рд░реЗрдХ рей рдорд╣рд┐рдирд╛рдорд╛ рдЧрд░реНрдЫреМрдВред рдпреЛ рдЕрдиреБрд╕реВрдЪрд┐рдд рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╡рд┐рдиреНрдбреЛ рд╣реЛ, рдЬрдм рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдмрдиреНрдж рдЧрд░реНрдЫреМрдВ рд░ рдбрд╛рдЯрд╛рдмреЗрд╕ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдЫреМрдВред рдЕрд░реНрдХреЛ рд╡рд┐рдиреНрдбреЛ рдЖрдЙрди рдПрдХ рд╣рдкреНрддрд╛ рдмрд╛рдБрдХреА рдерд┐рдпреЛ, рд░ рд╣рд╛рдореАрд▓реЗ рдмрд╕ рдкрд░реНрдЦрдиреЗ рд░ рдердк рддрдпрд╛рд░реА рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рдкрд░реНрдЦрд╛рдЗрдХреЛ рдХреНрд░рдордорд╛, рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдмрд╛рдЬреАрд▓рд╛рдИ рдкрдирд┐ рд╣реЗрдЬ рдЧрд░реНрдпреМрдВ: рдкреНрд░рддреНрдпреЗрдХ PostgreSQL рд╢рд╛рд░реНрдбрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓реЗ рдЕрд╕рдлрд▓рддрд╛рдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдПрдЙрдЯрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдХреГрддрд┐ рдЦрдбрд╛ рдЧрд░реНрдпреМрдВ, рдирд╡реАрдирддрдо рдбрд╛рдЯрд╛ рдмрдЪрдд рдЧрд░реНрди, рд░ рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рд░реНрдбрдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдЙрджрд╛рд╣рд░рдг рдердкреНрдпреМрдВ, рдЬреБрди Patroni рдорд╛ рдирдпрд╛рдБ рдкреНрд░рддрд┐рдХреГрддрд┐ рдмрдиреНрдиреБрдкрд░реНрджрдЫред рдХреНрд▓рд╕реНрдЯрд░, рддрд╛рдХрд┐ рдбрд╛рдЯрд╛ рдореЗрдЯрд╛рдЙрди рдЖрджреЗрд╢ рдЬрд╛рд░реА рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреА рд╕рдмреИрд▓реЗ рддреНрд░реБрдЯрд┐рдХреЛ рдЬреЛрдЦрд┐рдо рдХрдо рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдпреЛред
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдпреМрдВ, рд╕рдмреИ рдХреБрд░рд╛рд▓реЗ рдЬрд╕реНрддреИ рдХрд╛рдо рдЧрд░реНрдпреЛ, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдХрд╛рдо рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреЗ, рддрд░ рдЧреНрд░рд╛рдлрд╣рд░реВрдорд╛ рд╣рд╛рдореАрд▓реЗ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдЙрдЪреНрдЪ рд▓реЛрдб рджреЗрдЦреНрдпреМрдВред
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рд╣рд╛рдореАрд▓реЗ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдпреЛ рдХрд┐рди рджреЗрдЦреЗрдиреМрдВ? рдпреЛ рд╕рдорд╕реНрдпрд╛рд▓реЗ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд▓рд╛рдИ рдХреЛрдб рд╕рд┐рджреНрдзрд╛рдиреНрддрдХреЛ рд░реВрдкрдорд╛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрди рд░ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдгрджреЗрдЦрд┐ рдЙрддреНрдкрд╛рджрдирд╕рдореНрдо рд╕рдореНрдкреВрд░реНрдг рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреА рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдЪрд┐рддреНрд░рдг рдЧрд░реНрджрдЫред рдЕрдиреНрдпрдерд╛, рд╣рд╛рдореАрд▓реЗ рдкрд╛рдПрдХреЛ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред рдХреЗ рднрдпреЛ? рдХрдиреНрд╕реБрд▓ рдкрд╣рд┐рд▓реЗ рдЙрддреНрдкрд╛рджрдирдорд╛ рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛; рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдХрдиреНрд╕реБрд▓рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрд╛рджрдирдорд╛ рднрдиреНрджрд╛ рдЙрдЪреНрдЪ рдерд┐рдпреЛред рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдорд╛, рдХрдиреНрд╕реБрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рдПрдХ CPU рд▓реАрдХ рд╣рд▓ рднрдпреЛред рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдХрдиреНрд╕реБрд▓рд▓рд╛рдИ рдорд╛рддреНрд░ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдпреМрдВ, рдпрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рднрдпреЛред

Patroni рдХреНрд▓рд╕реНрдЯрд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдпрджреНрдпрдкрд┐, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рд╕рдорд╕реНрдпрд╛ рдкрд╛рдпреМрдВ рдЬрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣рд╛рдореАрд▓реЗ рд╢рдВрдХрд╛ рдкрдирд┐ рдЧрд░реЗрдХрд╛ рдерд┐рдПрдиреМрдВред Consul рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджрд╛, рд╣рд╛рдореА рдХрдиреНрд╕реБрд▓ рдЫреЛрдбреНрдиреЗ рдЖрджреЗрд╢ тЖТ Patroni рдЕрд░реНрдХреЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдорд╛ рдЬрдбрд╛рди тЖТ рд╕рдмреИ рдХрд╛рдо рдЧрд░реНрджрдЫ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрд▓рд╕реНрдЯрд░рдмрд╛рдЯ рдХрдиреНрд╕реБрд▓ рдиреЛрдб рд╣рдЯрд╛рдЙрдБрдЫреМрдВред рддрд░ рдЬрдм рд╣рд╛рдореА рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЕрдиреНрддрд┐рдо рдЙрджрд╛рд╣рд░рдгрдорд╛ рдкреБрдЧреНрдпреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдХрдиреНрд╕реБрд▓ рдЫреБрдЯреНрдЯреА рдЖрджреЗрд╢ рдкрдард╛рдпреМрдВ, рд╕рдмреИ Patroni рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рдорд╛рддреНрд░ рдкреБрди: рд╕реБрд░реБ рднрдпреЛ, рд░ рд▓рдЧрд╣рд░реВрдорд╛ рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджреЗрдЦреНрдпреМрдВ:

ERROR: get_cluster
Traceback (most recent call last):
...
RetryFailedError: 'Exceeded retry deadline'
ERROR: Error communicating with DCS
<b>LOG: database system is shut down</b>

Patroni рдХреНрд▓рд╕реНрдЯрд░ рдЖрдлреНрдиреЛ рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрд╕рдорд░реНрде рдерд┐рдпреЛ рд░ рдкреБрди: рд╕реБрд░реБ рднрдпреЛред

рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ Github рдорд╛ рдПрдХ рдореБрджреНрджрд╛ рдорд╛рд░реНрдлрдд Patroni рдХреЛ рд▓реЗрдЦрдХрд╣рд░реБ рд▓рд╛рдИ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрдпреМрдВред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рд╕реБрдзрд╛рд░рд╣рд░реВ рд╕реБрдЭрд╛рд╡ рджрд┐рдП:

consul:
 consul.checks: []
bootstrap:
 dcs:
   retry_timeout: 8

рд╣рд╛рдореАрд▓реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдореБрджреНрджрд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрди рд╕рдХреНрд╖рдо рдерд┐рдпреМрдВ рд░ рддреНрдпрд╣рд╛рдБ рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНтАНрдпреМрдВ, рддрд░ рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрд╛рдо рдЧрд░реЗрдирдиреНред

рд╕рдорд╕реНрдпрд╛ рдЕрдЭреИ рд╕рдорд╛рдзрд╛рди рд╣реБрди рд╕рдХреЗрдХреЛ рдЫреИрди ред рд╣рд╛рдореА рдирд┐рдореНрди рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрдЫреМрдВ:

  • Patroni рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдХрдиреНрд╕реБрд▓-рдПрдЬреЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рдХреЛрдбрдорд╛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╣рд╛рдореА рдмреБрдЭреНрдЫреМрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдБ рднрдпреЛ: рд╕рдореНрднрд╡рддрдГ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯрд╛рдЗрдордЖрдЙрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рд╣реЛ, рдЬреБрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдорд╛рд░реНрдлрдд рдУрднрд░рд░рд╛рдЗрдб рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдЬрдм рдЕрдиреНрддрд┐рдо рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░ рдХреНрд▓рд╕реНрдЯрд░рдмрд╛рдЯ рд╣рдЯрд╛рдЗрдиреНрдЫ, рд╕рдореНрдкреВрд░реНрдг рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдлреНрд░рд┐рдЬ рд╣реБрдиреНрдЫ, рдЬреБрди рдПрдХ рд╕реЗрдХреЗрдиреНрдб рднрдиреНрджрд╛ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рд░рд╣рдиреНрдЫ; рдпрд╕ рдХрд╛рд░рдгрд▓реЗ, Patroni рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрджреИрди рд░ рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреНрдЫред

рд╕реМрднрд╛рдЧреНрдпрд╡рд╢, рд╣рд╛рдореАрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдердк рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╕рд╛рдордирд╛ рдЧрд░реЗрдиреМрдВред

Patroni рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

Patroni рдХреЛ рд╕рдлрд▓ рдкреНрд░рдХреНрд╖реЗрдкрдг рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдердк рдкреНрд░рддрд┐рдХреГрддрд┐ рдердкреНрдпреМрдВред рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдХреЛрд░рдордХреЛ рдЭрд▓рдХ рдЫ: рдПрдХ рдиреЗрддрд╛ рд░ рджреБрдИ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ, рд╕реНрд╡рд┐рдЪ рдЧрд░реНрджрд╛ рд╕реНрдкреНрд▓рд┐рдЯ-рдмреНрд░реЗрдирдмрд╛рдЯ рдЬреЛрдЧрд╛рдЙрдиред
рдлреЗрд▓рдУрднрд░ рдХреНрд▓рд╕реНрдЯрд░ PostgreSQL + Patroniред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╡

рд╕рдВрд░рдХреНрд╖рдХрд▓реЗ рддреАрди рдорд╣рд┐рдирд╛рднрдиреНрджрд╛ рдмрдвреА рд╕рдордпрджреЗрдЦрд┐ рдЙрддреНрдкрд╛рджрдирдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ ред рдпрд╕ рд╕рдордпрдорд╛, рдЙрд╣рд╛рдБрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╣рд╛рдореАрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреБрднрдпреЛред рднрд░реНрдЦрд░реИ, AWS рдорд╛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдиреЗрддрд╛рдХреЛ рдореГрддреНрдпреБ рднрдпреЛ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░рд▓реЗ рдХрд╛рдо рдЧрд░реНрдпреЛ рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдХрд╛рдо рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреЗред рд╕рдВрд░рдХреНрд╖рдХрд▓реЗ рдЖрдлреНрдиреЛ рдореБрдЦреНрдп рдХрд╛рдо рдкреВрд░рд╛ рдЧрд░реЗрдХреЛ рдЫред

Patroni рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЫреЛрдЯреЛ рд╕рд╛рд░рд╛рдВрд╢:

  • рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рд╕рдЬрд┐рд▓реЛред рдпреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫ рд░ рдпреЛ рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреЗрдЫред рдпрджрд┐ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓рд╛рдЧреВ рдЧрд░реНрди рд░рд┐рдмреБрдЯ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, Patroni рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕ рдмрд╛рд░реЗ рд╕реВрдЪрд┐рдд рдЧрд░реНрдиреЗрдЫред Patroni рдПрдХ рдЖрджреЗрд╢ рд╕рдВрдЧ рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬреБрди рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред
  • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░рд▓реЗ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ рд░ рдкрд╣рд┐рд▓реЗ рдиреИ рд╣рд╛рдореАрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реЗрдХреЛ рдЫред
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдмрд┐рдирд╛ PostgreSQL рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджреИред рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ Patroni рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдиреЗрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкреБрд░рд╛рдиреЛ рдиреЗрддрд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реАрдХреНрд╖рдг рд╣реБрдиреНрдЫред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди