Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° PostgreSQL Π΄Π°Π²Π½ΠΎ стали стандартным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для развСртывания 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” особСнно Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈ высоконагруТСнных систСмах. Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ администраторы ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ 1Π‘ Π΄ΠΎ сих ΠΏΠΎΡ€ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ обновлСния Π‘Π£Π‘Π” ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, откладывая ΠΈΡ… "Π½Π° ΠΏΠΎΡ‚ΠΎΠΌ". Π­Ρ‚Π° ошибка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ эксплуатации уязвимых вСрсий.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠ°Ρ‚Ρ‡ΠΈ для PostgreSQL ΠΏΠΎΠ΄ 1Π‘ β€” это Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π° ТизнСнная Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ обновлСния (ΠΎΡ‚ ошибок Π² запросах Π΄ΠΎ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти), ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ 503 Service Unavailable Π² самый отвСтствСнный ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ мСсяца ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ отчСтности.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ скрытым рискам: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄Π°ΠΆΠ΅ "ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ" Π±Π°Π·Π° Π±Π΅Π· ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ "ΡƒΠΏΠ°ΡΡ‚ΡŒ" ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΈ ΠΊΠ°ΠΊ ΠΏΠ°Ρ‚Ρ‡ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок Π²Ρ€ΠΎΠ΄Π΅ "out of shared memory" ΠΈΠ»ΠΈ "could not extend file". ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈ тСхничСским спСциалистам, ΠΈ руководитСлям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠ½ΡΡ‚ΡŒ бизнСс-эффСкт ΠΎΡ‚ рСгулярного обновлСния инфраструктуры.

1. Как ΠΏΠ°Ρ‚Ρ‡ΠΈ PostgreSQL Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 1Π‘

Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ PostgreSQL Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСгулярных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с 1Π‘ β€” это оптимизация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… запросов ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ 1Π‘ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ SQL-ΠΊΠΎΠ΄ с Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ особСнностями: большоС количСство Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… подзапросов, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ спСцифичСскиС конструкции Π²Ρ€ΠΎΠ΄Π΅ WITH (CTE). ΠŸΠ°Ρ‚Ρ‡ΠΈ Π‘Π£Π‘Π” часто содСрТат ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ для Ρ‚Π°ΠΊΠΈΡ… сцСнариСв.

НапримСр, Π² вСрсии PostgreSQL 14.5 Π±Ρ‹Π»Π° исправлСна ошибка, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ запросы с JOIN LATERAL (часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² 1Π‘ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ) ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² 3-5 Ρ€Π°Π· дольшС ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π°. ПослС установки ΠΏΠ°Ρ‚Ρ‡Π° врСмя выполнСния слоТных ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΡΠΎΠΊΡ€Π°Ρ‰Π°Π»ΠΎΡΡŒ Π½Π° 40-60% β€” ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для систСм с Π±Π°Π·ΠΎΠΉ объСмом 100+ Π“Π‘.

  • πŸ“Š УскорСниС аналитичСских запросов: ΠŸΠ°Ρ‚Ρ‡ΠΈ часто ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с индСксами GIN ΠΈ GiST, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для полнотСкстового поиска ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с иСрархичСскими справочниками.
  • πŸ”„ Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ: Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ MVCC (ΠΌΠ½ΠΎΠ³ΠΎΠ²Π΅Ρ€ΡΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒ) ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ количСство ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • πŸ’Ύ Экономия дискового пространства: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° TOAST (хранСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·Ρ‹ Π½Π° 10-15% Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 1Π‘ Π½Π° PostgreSQL зависит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ "ΠΆΠ΅Π»Π΅Π·Π°", Π½ΠΎ ΠΈ ΠΎΡ‚ вСрсии Π‘Π£Π‘Π”. ВСсты Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°Π·Π°Ρ… ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ с PostgreSQL 12.4 Π½Π° 14.8 Π΄Π°Π΅Ρ‚ прирост скорости Π΄ΠΎ 2 Ρ€Π°Π· ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ "Π—Π°ΠΊΠ°Π· покупатСля" ΠΈ "РСализация Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ услуг" β€” Π·Π° счСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ с большим количСством строк.

πŸ“Š ΠšΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ PostgreSQL Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ с 1Π‘?
12.x
13.x
14.x
15.x
НС знаю

2. ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ°Ρ‚Ρ‡ΠΈ

МногиС администраторы ΡƒΠ·Π½Π°ΡŽΡ‚ ΠΎ нСобходимости обновлСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Π°Π·Π° "ΠΏΠ°Π΄Π°Π΅Ρ‚" с ошибкой. Рассмотрим Ρ‚ΠΎΠΏ-5 критичСских Π±Π°Π³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рСгулярно ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΠ°Ρ‚Ρ‡Π°Ρ… ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ 1Π‘:

Ошибка Π² PostgreSQL ΠŸΡ€ΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π² 1Π‘ Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π² вСрсии
"could not write to hash-join temporary file" ЗависаниС ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² с большим количСством Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΎΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Анализ ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΏΠΎ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π΅ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π°ΠΌ") 13.3, 14.2
"out of shared memory" Π’Ρ‹Π»Π΅Ρ‚ сСрвСра 1Π‘ с ошибкой "НСдостаточно памяти" ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ 50+ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 12.7, 14.5
"tuple concurrently updated" Ошибки Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ массовом ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ) 14.1, 15.0
"invalid memory alloc request size" ПадСниС кластСра ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½ΡƒΡŽ Π±Π°Π·Ρƒ (100+ Π“Π‘) Ρ‡Π΅Ρ€Π΅Π· pg_dump 13.6, 14.4

ОсобСнно опасны ошибки, связанныС с ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ запросов (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ max_parallel_workers_per_gather). Π’ вСрсиях Π΄ΠΎ 14.3 ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях 1Π‘ ΠΌΠΎΠ³Π»Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊ бСсконСчному оТиданию Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. ΠŸΠ°Ρ‚Ρ‡ исправлял эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡƒΠ·Π½Π°Π²Π°Π»ΠΈ ΠΎ Π½Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Π°Π·Π° пСрСставала ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° запросы.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если ваша Π±Π°Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° PostgreSQL 12.x ΠΈΠ»ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибки "relation mapping not found" Π² Π»ΠΎΠ³Π°Ρ…. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ Π΄ΠΎ вСрсии 8.3.20+ ΠΈ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ физичСскими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ.

3. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ вСрсии PostgreSQL опасны для 1Π‘

Одной ΠΈΠ· самых Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для установки ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ уязвимости бСзопасности. 1Π‘ часто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ сотрудников, финансовыми Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, коммСрчСскими Ρ‚Π°ΠΉΠ½Π°ΠΌΠΈ. Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ вСрсии PostgreSQL содСрТат критичСскиС Π±Ρ€Π΅ΡˆΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ эксплуатированы ΠΊΠ°ΠΊ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ сСти, Ρ‚Π°ΠΊ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ.

НапримСр, ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ CVE-2021-32027 (исправлСна Π² PostgreSQL 13.3) позволяла Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свои ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π΄ΠΎ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‡Π΅Ρ€Π΅Π· манипуляции с SECURITY DEFINER функциями. Π’ контСкстС 1Π‘ это ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ "Волько просмотр" ΠΌΠΎΠ³ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ всСх Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°Π·Ρ‹.

  • πŸ”“ Π£Ρ‚Π΅Ρ‡ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: Π’ вСрсиях Π΄ΠΎ 14.2 сущСствовала ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ сформированный запрос ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΡ… схСм (Π² 1Π‘ β€” Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π°Π· Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ сСрвСрС).
  • πŸ•΅οΈ Атаки Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ: ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pg_cron, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для планирования Π·Π°Π΄Π°Ρ‡ Π² 1Π‘, ΠΈΠΌΠ΅Π»ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² вСрсиях Π΄ΠΎ 1.3-1, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.
  • πŸ“‘ Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°: Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ CVE-2022-1552 позволяла Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° сСрвСрС с ΠΏΡ€Π°Π²Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ PostgreSQL.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ 1Π‘ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ динамичСскоС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ SQL-запросов. Π­Ρ‚ΠΎ создаСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ риски: Ссли Π² Π±Π°Π·Π΅ Π΅ΡΡ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ SQL-ΠΊΠΎΠ΄, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· стандартныС Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘, Π½Π΅ имСя прямого доступа ΠΊ Π‘Π£Π‘Π”.

πŸ’‘

ΠŸΠ΅Ρ€Π΅Π΄ установкой ΠΏΠ°Ρ‚Ρ‡Π° бСзопасности всСгда провСряйтС ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с вашСй вСрсиСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. НСкоторыС обновлСния PostgreSQL ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ postgresql.conf, Ρ‡Ρ‚ΠΎ повлияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ кластСра.

4. Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ PostgreSQL с вСрсиями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘

Один ΠΈΠ· самых частых вопросов: "ΠœΠΎΠ³Ρƒ Π»ΠΈ я ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ PostgreSQL, Ссли Ρƒ мСня старая вСрсия 1Π‘?". ΠžΡ‚Π²Π΅Ρ‚ зависит ΠΎΡ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ совмСстимости, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ Ρ„ΠΈΡ€ΠΌΠ° 1Π‘. НапримСр, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 8.3.18 ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ PostgreSQL Π΄ΠΎ вСрсии 13.x, Π½ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ 13-ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ "БухгалтСрия прСдприятия 3.0".

Π’ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° совмСстимости:

  • πŸ”„ 1Π‘ 8.3.20+: Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° PostgreSQL 14.x ΠΈ 15.x, Π½ΠΎ трСбуСтся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² psqlODBC.
  • ⚠️ 1Π‘ 8.3.16-8.3.19: ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎ PostgreSQL 13.x, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ 13.4+ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ошибки с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ.
  • 🚫 1Π‘ 8.3.15 ΠΈ Π½ΠΈΠΆΠ΅: НС рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PostgreSQL Π½ΠΎΠ²Π΅Π΅ 12.x ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ провСряйтС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» совмСстимости Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ вашСй вСрсии 1Π‘. НапримСр, Π² PostgreSQL 15 измСнился Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° jsonb, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с полями Ρ‚ΠΈΠΏΠ° "Π₯ранилищСЗначСния" Π² старых конфигурациях.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ PostgreSQL Π² связкС с 1Π‘:Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚ ΠΈΠ»ΠΈ 1Π‘:ERP, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Ρ‚Ρ‡ΠΈ, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с FULL TEXT SEARCH. НСкоторыС обновлСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ранТирования поисковых Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ повлияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° поиска Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ссли ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ PostgreSQL Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости?

ΠŸΡ€ΠΈ нСсовмСстимости вСрсий Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

1. ПадСниС кластСра ΠΏΡ€ΠΈ запускС 1Π‘ с ошибкой "unsupported frontend protocol"

2. НСкоррСктная Ρ€Π°Π±ΠΎΡ‚Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, вСдущая ΠΊ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

3. ΠŸΠΎΡ‚Π΅Ρ€Ρ Π΄Π°Π½Π½Ρ‹Ρ… Π² полях с нСстандартными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, гСографичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² 1Π‘:Логистика)

4. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния Π±Π°Π·Ρ‹ ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, созданной Π½Π° старой вСрсии PostgreSQL

5. Пошаговая инструкция ΠΏΠΎ установкС ΠΏΠ°Ρ‚Ρ‡Π°

ΠŸΡ€ΠΎΡ†Π΅ΡΡ обновлСния PostgreSQL для 1Π‘ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ особой остороТности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ дСйствия ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ бСзопасный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ нашим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ:

  1. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ: Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄Π°ΠΌΠΏ Π±Π°Π·Ρ‹ Ρ‡Π΅Ρ€Π΅Π· pg_dump с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ --format=custom для возмоТности частичного восстановлСния. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ рСзСрвная копия провСряСтся Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ.

  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° дискового пространства: ΠŸΠ°Ρ‚Ρ‡ΠΈ часто Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ мСста для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². На сСрвСрС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ свободно Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 30% ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π°Π·Ρ‹.

  3. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° слуТб 1Π‘: ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚Π΅ всС сСансы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· ras cluster --disable ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (SELECT * FROM pg_stat_activity;).

  4. ВСстовоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: На тСстовом сСрвСрС Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ копию ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ послС установки ΠΏΠ°Ρ‚Ρ‡Π°.

Для установки ΠΏΠ°Ρ‚Ρ‡Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΡ‚ поставщика вашСй ОБ. НапримСр, для Debian/Ubuntu:

# ДобавляСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ PostgreSQL

sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

УстанавливаСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ°Ρ‚Ρ‡Π°

sudo apt-get install postgresql-14=14.8-1.pgdg100+1

ПослС обновлСния ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° вСрсии PostgreSQL (psql --version)

Запуск VACUUM FULL ANALYZE для всСх Π±Π°Π· 1Π‘

ВСстированиС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ²)

ОбновлСниС статистики ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° (ANALYZE)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² Π½Π° ошибки (tail -n 100 /var/log/postgresql/postgresql-14-main.log)-->

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ shared_preload_libraries Π² postgresql.conf. НСкоторыС ΠΏΠ°Ρ‚Ρ‡ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ явного указания Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, pg_stat_statements), Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

6. Как Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ

Ручная установка ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ β€” Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ процСсс, особСнно Ссли Ρƒ вас нСсколько сСрвСров с 1Π‘. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ инструмСнты для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • πŸ€– Ansible: ΠŸΠ»Π΅ΠΉΠ±ΡƒΠΊΠΈ для обновлСния PostgreSQL с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ совмСстимости ΠΈ созданиСм Π±Π΅ΠΊΠ°ΠΏΠΎΠ².
  • πŸ“¦ Patroni: Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для управлСния кластСром PostgreSQL с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ rolling updates (ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ΄ Π±Π΅Π· простоя).
  • πŸ”„ pg_upgrade: Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° для ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 13.x Π½Π° 14.x) с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ простоя.

Для 1Π‘ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½ сцСнарий с использованиСм Patroni + HAProxy:

  1. НастраиваСм Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ основным сСрвСром ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΎΠΉ.
  2. ОбновляСм ΠΏΠ°Ρ‚Ρ‡ΠΈ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅ ΠΈ провСряСм Ρ€Π°Π±ΠΎΡ‚Ρƒ 1Π‘.
  3. ВыполняСм failover, пСрСводя Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ.
  4. ОбновляСм Π±Ρ‹Π²ΡˆΠΈΠΉ основной сСрвСр (Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ).

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡ΠΈ Π±Π΅Π· остановки Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’Π°ΠΆΠ½ΠΎ: для этого трСбуСтся enterprise-лицСнзия PostgreSQL ΠΈΠ»ΠΈ использованиС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π²Ρ€ΠΎΠ΄Π΅ Patroni с Etcd.

πŸ’‘

Автоматизация ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ сокращаСт врСмя простоя с 2-3 часов Π΄ΠΎ 10-15 ΠΌΠΈΠ½ΡƒΡ‚, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ систСмы ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ ΠΎ сбоях.

7. ЧастыС ошибки ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ администраторы ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ послС установки ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ. Π’ΠΎΡ‚ Ρ‚ΠΎΠΏ-5 ошибок ΠΈ способы ΠΈΡ… прСдотвращСния:

Ошибка ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
"database files are incompatible" ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ ΠΎΡ‚ старой вСрсии PostgreSQL ΠΊ Π½ΠΎΠ²ΠΎΠΉ Π±Π΅Π· ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pg_upgrade ΠΈΠ»ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°ΠΌΠΏ Π½Π° Π½ΠΎΠ²ΠΎΠΉ вСрсии
"could not access file "global/pg_control" НСдостаточно ΠΏΡ€Π°Π² Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ postgres Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π°: chown -R postgres:postgres /var/lib/postgresql/14
ЗависаниС 1Π‘ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΠ΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ вСрсии libpq Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ 1Π‘ ΠΈ сСрвСрС PostgreSQL ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ клиСнтскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ 1Π‘ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ LD_LIBRARY_PATH
"invalid catalog snapshot" ΠŸΡ€Π΅Ρ€Π²Π°Π½Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ систСмных ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² PostgreSQL Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ ΠΈΠ· Π±Π΅ΠΊΠ°ΠΏΠ° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pg_resetwal (остороТно!)

ОсобСнно ΠΊΠΎΠ²Π°Ρ€Π½Π° ошибка с нСсовпадСниСм вСрсий Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. НапримСр, Ссли Π²Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ PostgreSQL Π΄ΠΎ 14.x, Π½ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ postgis, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² 1Π‘:Логистика для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ с Π³Π΅ΠΎΠ΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ "could not load library "postgis-3".

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если послС обновлСния ΠΏΠ°Ρ‚Ρ‡Π° Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Π»ΠΎΠ³Π°Ρ… 1Π‘ ΠΎΡˆΠΈΠ±ΠΊΡƒ "Ошибка Π‘Π£Π‘Π”: ERROR: cache lookup failed for type 0", это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»Π° Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ систСмных ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². ЕдинствСнноС Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” восстановлСниС ΠΈΠ· Π±Π΅ΠΊΠ°ΠΏΠ° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ‚Ρ‡Π° Π½Π° чистой Π±Π°Π·Π΅.

FAQ: ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

МоТно Π»ΠΈ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ PostgreSQL, Ссли 1Π‘ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ?

ВСхничСски ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ это Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ:

  • Уязвимостями бСзопасности (риск ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…)
  • НакоплСниСм "мусора" Π² Π±Π°Π·Π΅ (ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ)
  • ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ обновлСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ хотя Π±Ρ‹ Ρ€Π°Π· Π² 6 мСсяцСв.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ установлСны Π² ΠΌΠΎΠ΅ΠΌ PostgreSQL?

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос Π² psql:

SELECT version(), pg_setting('server_version_num')::int / 100 AS major_version;

Для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ списка ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ:

SELECT name, setting FROM pg_settings WHERE name LIKE '%version%';
Бколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ установка ΠΏΠ°Ρ‚Ρ‡Π°?

Зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π°Π·Ρ‹ ΠΈ Ρ‚ΠΈΠΏΠ° обновлСния:

  • ΠœΠΈΠ½ΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 14.7 β†’ 14.8): 5-15 ΠΌΠΈΠ½ΡƒΡ‚ + врСмя Π½Π° тСстированиС
  • ΠœΠ°ΠΆΠΎΡ€Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 13.x β†’ 14.x): 1-3 часа с ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…

Для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π±Π°Π· (100+ Π“Π‘) Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ обслуТивания Π½Π° 4-6 часов.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли послС ΠΏΠ°Ρ‚Ρ‡Π° 1Π‘ стала Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  1. Бброс статистики: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ANALYZE для всСх Ρ‚Π°Π±Π»ΠΈΡ†.
  2. ИзмСнСниС ΠΏΠ»Π°Π½ΠΎΠ² запросов: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ EXPLAIN ANALYZE для ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, потрСбуСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ индСксы.
  3. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ: ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, pg_stat_statements) ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
МоТно Π»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ?

Π”Π°, Π½ΠΎ с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ:

  • Если Ρƒ вас Π΅ΡΡ‚ΡŒ рСзСрвная копия β€” восстановитС Π΅Π΅ Π½Π° Ρ‡ΠΈΡΡ‚ΡƒΡŽ установку ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии.
  • Для ΠΌΠΈΠ½ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ пСрСустановка старой вСрсии ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½ΠΎΠ²ΠΎΠΉ (Π½ΠΎ это Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…).
  • ΠœΠ°ΠΆΠΎΡ€Π½Ρ‹Π΅ обновлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 13.x Π½Π° 14.x) ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ восстановлСниС ΠΈΠ· Π±Π΅ΠΊΠ°ΠΏΠ°.

ВсСгда тСстируйтС ΠΏΠ°Ρ‚Ρ‡ΠΈ Π½Π° ΠΊΠΎΠΏΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·Ρ‹!