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

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

Если Π²Ρ‹ администрируСтС 1Π‘ Π½Π° прСдприятии с 10+ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с зависаниями ΠΏΡ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с внСшними систСмами β€” этот Π³Π°ΠΉΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΈ максимально эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ возмоТности PostgreSQL.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ 1Π‘ Π½Π° PostgreSQL

Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ Π±Π°Π·Ρ‹ 1Π‘ (.1CD) ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ трСбованиями ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ограничСния:

  • πŸ“‰ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись Π² Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ замСдлСнию ΠΏΡ€ΠΈ ростС Π±Π°Π·Ρ‹. PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ индСксы, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ запросы.
  • πŸ”’ ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ: ΠŸΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π±Π°Π·Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ PostgreSQL Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования ΠΈ восстановлСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.
  • πŸ‘₯ ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ: Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ происходят Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСй Π±Π°Π·Ρ‹, Π° Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… записСй. Π­Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ 10+ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ….
  • πŸ”„ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ: ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСм ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· COM-соСдинСниС), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ стандартныС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ (ODBC, JDBC).
  • πŸ“Š Аналитика: Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΈ аналитичСскиС запросы Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ CTE, ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдставлСния.

По Π΄Π°Π½Π½Ρ‹ΠΌ тСстов 1Π‘, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎ 300-500% ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ… (100+ Π“Π‘). Однако Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ миграция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСхничСских дСйствий, Π½ΠΎ ΠΈ измСнСния ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. НапримСр, Π² PostgreSQL Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ автоочистку (autovacuum), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ это дСлаСтся автоматичСски.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если ваша Π±Π°Π·Π° содСрТит ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹Π΅ индСксы ΠΈΠ»ΠΈ Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹), ΠΈΡ… пСрСнос ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий. Π’ PostgreSQL для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ спСциализированныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (bytea, tsvector), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ стандартными инструмСнтами ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.
πŸ“Š Какой объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² вашСй Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ 1Π‘?
Π”ΠΎ 10 Π“Π‘
10–50 Π“Π‘
50–100 Π“Π‘
Π‘ΠΎΠ»Π΅Π΅ 100 Π“Π‘

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° совмСстимости ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ пСрСнос, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ инфраструктуру ΠΈ трСбования 1Π‘ ΠΊ PostgreSQL. Π’ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  1. ВСрсия 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅: ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.10+. Π‘ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с PostgreSQL.
  2. ВСрсия PostgreSQL: ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ вСрсии 9.6–16. РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PostgreSQL 14/15 ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅.
  3. АппаратныС трСбования:
    • πŸ–₯️ CPU: ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ 4 ядра (рСкомСндуСтся 8+ для Π±Π°Π· >50 Π“Π‘).
    • πŸ’Ύ RAM: 8 Π“Π‘ + 1 Π“Π‘ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 Π“Π‘ Π΄Π°Π½Π½Ρ‹Ρ….
    • πŸ“€ Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅: SSD NVMe для Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π»ΠΎΠ³ΠΎΠ² (WAL) ΠΈ SAS HDD для Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΡ€ΠΈ объСмС >100 Π“Π‘).
  • Π›ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Для PostgreSQL трСбуСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ лицСнзия 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½Π° сСрвСр Π‘Π£Π‘Π” (Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² 1Π‘:ЛицСнзия Π½Π° сСрвСр ΠΈΠ»ΠΈ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8. КОРП).
  • Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π±Π°Π·Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

    Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° 1Π‘ ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ РСшСниС
    Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π₯ранилищСЗначСния) Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ хранятся ΠΊΠ°ΠΊ BLOB, Π² PostgreSQL ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ bytea ΠΈΠ»ΠΈ large object
    ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹Π΅ индСксы Бинтаксис запросов отличаСтся ΠŸΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСксы с использованиСм tsvector
    Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π’ PostgreSQL Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ схСмС Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ прСфиксы ΠΈΠ»ΠΈ схСму ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
    Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π’ PostgreSQL Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ lock_timeout ΠΈ deadlock_timeout

    ΠŸΠ΅Ρ€Π΅Π΄ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ тСстовый пСрСнос Π½Π° ΠΊΠΎΠΏΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π±Π°Π·Ρ‹. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ спСцифичныС ошибки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, связанныС с:

    • πŸ”’ ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ (Π² PostgreSQL ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅).
    • πŸ—ƒοΈ Π₯Ρ€Π°Π½ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ внСшниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с SQL-запросами).
    • πŸ”„ Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ (Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Π΅Π΅ Π½Π΅Ρ‚, Π° Π² PostgreSQL Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ).

    β˜‘οΈ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

    Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

    Π’Ρ‹Π±ΠΎΡ€ инструмСнтов для ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ: сравнСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

    БущСствуСт нСсколько способов пСрСноса Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π½Π° PostgreSQL, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы. Π’Ρ‹Π±ΠΎΡ€ зависит ΠΎΡ‚ объСма Π΄Π°Π½Π½Ρ‹Ρ…, допустимого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ простоя ΠΈ тСхничСской экспСртизы ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

    1. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ 1Π‘ (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ)

    Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.14+ Π΅ΡΡ‚ΡŒ встроСнный инструмСнт для ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° PostgreSQL. Он доступСн Ρ‡Π΅Ρ€Π΅Π· ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ β†’ АдминистрированиС β†’ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° PostgreSQL.

    ΠŸΠ»ΡŽΡΡ‹:

    • βœ… ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ риски ошибок (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ 1Π‘).
    • βœ… Π‘ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ всС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ (ΠΏΡ€Π°Π²Π° доступа, истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ).
    • βœ… ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ большиС Π±Π°Π·Ρ‹ (Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Π½Π° 500+ Π“Π‘).

    ΠœΠΈΠ½ΡƒΡΡ‹:

    • ❌ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остановки Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° врСмя пСрСноса.
    • ❌ НСт возмоТности частичной ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вся Π±Π°Π·Π° Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ).

    2. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° chdbfl (для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… администраторов)

    Консольная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° chdbfl.exe, входящая Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ поставки 1Π‘, позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ PostgreSQL Π±Π΅Π· запуска 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

    chdbfl.exe /F "C:\Bases\MyBase" /DumpIB "C:\Temp\dump.dt" /PostgreSQL

    Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹.

    3. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ инструмСнты (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Postgres Professional Migration Toolkit)

    Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

    • πŸ”„ Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ миграция (пСрСнос Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…).
    • πŸ“Š Визуализация процСсса ΠΈ Π»ΠΎΠ³ΠΎΠ² ошибок.
    • πŸ› οΈ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° нСстандартных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, гСопространствСнных).

    Однако Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты часто ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ настройки.

    ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ 1Π‘ Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° chdbfl Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ инструмСнты
    Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ БрСдняя Высокая Зависит ΠΎΡ‚ инструмСнта
    ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π· (>100 Π“Π‘) Π”Π° Π”Π° (Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ разбиСния) Π”Π°
    Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остановки 1Π‘ Π”Π° НСт (Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹) Частично (зависит ΠΎΡ‚ инструмСнта)
    Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ БСсплатно БСсплатно ΠžΡ‚ 50 000 β‚½

    Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ 1Π‘, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½ ΠΈ поддСрТиваСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. Однако Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ миграция ΠΈΠ»ΠΈ пСрСнос Π±Π΅Π· остановки Ρ€Π°Π±ΠΎΡ‚Ρ‹, стоит Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сторонниС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

    πŸ’‘

    ΠŸΠ΅Ρ€Π΅Π΄ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ВСстированиС ΠΈ исправлСниС Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅. Π­Ρ‚ΠΎ ускорит процСсс ΠΈ снизит риск ошибок.

    Пошаговая инструкция ΠΏΠΎ пСрСносу Π±Π°Π·Ρ‹ Π½Π° PostgreSQL

    НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Π°Ρ инструкция для ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с использованиСм стандартного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° 1Π‘. Π’Π΅ΡΡŒ процСсс ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 5 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… этапов:

    Π­Ρ‚Π°ΠΏ 1: Установка ΠΈ настройка PostgreSQL

    1. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ дистрибутив PostgreSQL с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта (вСрсия 14/15).
    2. ΠŸΡ€ΠΈ установкС Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ UTF-8 ΠΈ локаль Russian_Russia (Π²Π°ΠΆΠ½ΠΎ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π΅ΠΉ).
    3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для 1Π‘:
      CREATE USER usr1c WITH PASSWORD 'YourPassword';
      

      CREATE DATABASE db1c OWNER usr1c ENCODING 'UTF8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8';

    4. НастройтС pg_hba.conf для доступа ΠΏΠΎ сСти (Ссли сСрвСр PostgreSQL ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ сСрвСра 1Π‘):
      host    db1c    usr1c    192.168.1.0/24    md5

    Π­Ρ‚Π°ΠΏ 2: ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ 1Π‘

    1. Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ всС сСансы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Π±Π°Π·Π΅.
    2. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ВСстированиС ΠΈ исправлСниС Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ (АдминистрированиС β†’ ВСстированиС ΠΈ исправлСниС).
    3. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ: Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π±Π°Π·Ρƒ для ускорСния ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ (Ρ‡Π΅Ρ€Π΅Π· Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π² Ρ„Π°ΠΉΠ» .dt).

    Π­Ρ‚Π°ΠΏ 3: Запуск ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

    1. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ АдминистрированиС β†’ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ.
    2. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ PostgreSQL ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:
      • Π‘Π΅Ρ€Π²Π΅Ρ€: localhost ΠΈΠ»ΠΈ IP-адрСс.
      • ΠŸΠΎΡ€Ρ‚: 5432 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).
      • Имя Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: db1c (созданная Ρ€Π°Π½Π΅Π΅).
      • Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: usr1c.
      • ΠŸΠ°Ρ€ΠΎΠ»ΡŒ: ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π²Π°Π»ΠΈ ΠΏΡ€ΠΈ создании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • НаТмитС Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. ВрСмя зависит ΠΎΡ‚ объСма Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1 Π“Π‘ = 5–10 ΠΌΠΈΠ½ΡƒΡ‚).
  • Π­Ρ‚Π°ΠΏ 4: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

    1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π±Π°Π·Π΅ Ρ‡Π΅Ρ€Π΅Π· psql ΠΈΠ»ΠΈ pgAdmin ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†:
      \c db1c
      

      \dt

      Π”ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с прСфиксами _1s (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, _1sjournals, _1sdocuments).

    2. ЗапуститС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π½ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Ρ‡Π΅Ρ€Π΅Π· Π€Π°ΠΉΠ» β†’ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ β†’ Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π½Π° сСрвСрС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΡ, Π²Ρ‹Π±Ρ€Π°Π² Ρ‚ΠΈΠΏ PostgreSQL.
    3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ тСстовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°) для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности Π΄Π°Π½Π½Ρ‹Ρ….
    4. Π­Ρ‚Π°ΠΏ 5: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ PostgreSQL ΠΏΠΎΠ΄ 1Π‘

      ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ PostgreSQL для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 1Π‘:

      # Π’ Ρ„Π°ΠΉΠ»Π΅ postgresql.conf:
      

      shared_buffers = 4GB # 25% ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅ΠΉ RAM

      effective_cache_size = 12GB # 75% ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅ΠΉ RAM

      maintenance_work_mem = 1GB # Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ VACUUM ΠΈ CREATE INDEX

      work_mem = 64MB # Для слоТных запросов

      random_page_cost = 1.1 # Для SSD-дисков

      max_connections = 100 # ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ * 2

      Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли миграция ΠΏΡ€Π΅Ρ€Π²Π°Π»Π°ΡΡŒ?

      Если процСсс прСрвался Π½Π° этапС Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ. Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² PostgreSQL, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ сСрвСра (/var/log/postgresql/postgresql-15-main.log) Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок Ρ‚ΠΈΠΏΠ° OUT OF MEMORY ΠΈΠ»ΠΈ DISK FULL. Π’ этом случаС ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ work_mem ΠΈΠ»ΠΈ освободитС мСсто Π½Π° дискС.

      Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

      Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ процСсс ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ошибки ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

      1. Ошибки ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ERROR: invalid byte sequence for encoding "UTF8")

      ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Windows-1251, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² UTF-8.

      РСшСниС:

      • ΠŸΠ΅Ρ€Π΅Π΄ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π² UTF-8 Ρ‡Π΅Ρ€Π΅Π· ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ β†’ АдминистрированиС β†’ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.
      • Если ошибка ΡƒΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ iconv для Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ:
        iconv -f CP1251 -t UTF-8 input.txt > output.txt

      2. НСхватка памяти (out of memory)

      ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ PostgreSQL выдСляСт ΠΌΠ°Π»ΠΎ памяти ΠΏΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° CREATE INDEX.

      РСшСниС:

      • Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ work_mem (Π΄ΠΎ 1 Π“Π‘) ΠΈ maintenance_work_mem (Π΄ΠΎ 2 Π“Π‘) Π² postgresql.conf.
      • Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π½Π° части (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сначала пСрСнСситС справочники, Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹).

      3. МСдлСнная Ρ€Π°Π±ΠΎΡ‚Π° послС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

      ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ индСксов ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ настройки PostgreSQL.

      РСшСниС:

      • Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ANALYZE для обновлСния статистики:
        VACUUM ANALYZE;
      • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ индСксов для часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ (Π² 1Π‘ индСксы ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ автоматичСски, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° трСбуСтся ручная донастройка).
      • НастройтС autovacuum для рСгулярной очистки:
        autovacuum = on
        

        autovacuum_vacuum_scale_factor = 0.05

        autovacuum_analyze_scale_factor = 0.02

      4. Ошибки Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ (deadlock detected)

      ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: Π’ PostgreSQL Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ строТС, Ρ‡Π΅ΠΌ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅.

      РСшСниС:

      • Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ lock_timeout (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎ 30 сСкунд):
        SET lock_timeout = '30s';
      • Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² 1Π‘ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅.

      5. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа

      ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ PostgreSQL Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π² Π½Π° схСму ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

      РСшСниС:

      • Π’Ρ‹Π΄Π°ΠΉΡ‚Π΅ всС ΠΏΡ€Π°Π²Π° Π½Π° схСму _1s:
        GRANT ALL PRIVILEGES ON SCHEMA _1s TO usr1c;
      • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:
        GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA _1s TO usr1c;
      ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если послС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π² 1Π‘ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ NULL-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… полях. Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ 1Π‘ ΠΈΠ½ΠΎΠ³Π΄Π° допускаСт NULL Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π² PostgreSQL это Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π°Ρ…). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запрос для поиска Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ:
      SELECT * FROM _1sdocuments WHERE id IS NULL;
      πŸ’‘

      Бамая частая ошибка ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ β€” ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСстового пСрСноса. ВсСгда провСряйтС процСсс Π½Π° ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° нСбольшая!

      ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ PostgreSQL для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 1Π‘

      ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ PostgreSQL для максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

      1. Настройка памяти ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

      По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ PostgreSQL консСрвативно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ рСсурсы. Для Π±Π°Π· 1Π‘ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ настройки (для сСрвСра с 32 Π“Π‘ RAM):

      # postgresql.conf
      

      shared_buffers = 8GB # 25% ΠΎΡ‚ RAM

      effective_cache_size = 24GB # 75% ΠΎΡ‚ RAM

      work_mem = 16MB # Для сортировок ΠΈ Ρ…ΡΡˆ-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

      maintenance_work_mem = 2GB # Для VACUUM ΠΈ CREATE INDEX

      max_worker_processes = 8 # Для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов

      2. Настройка записи Π½Π° диск (WAL)

      1Π‘ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, поэтому Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π»ΠΎΠ³Π°ΠΌΠΈ (Write-Ahead Log):

      wal_level = replica             # Для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (Ссли Π½ΡƒΠΆΠ½Π°)
      

      wal_buffers = 16MB # Π‘ΡƒΡ„Π΅Ρ€ для WAL

      checkpoint_completion_target = 0.9 # Баланс ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ

      max_wal_size = 4GB # ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° WAL

      3. Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΈ статистика

      PostgreSQL Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСгулярного обновлСния статистики для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ планирования запросов. НастройтС автоочистку:

      autovacuum = on
      

      autovacuum_vacuum_threshold = 50 # ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ VACUUM

      autovacuum_analyze_threshold = 50 # ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ANALYZE

      autovacuum_vacuum_scale_factor = 0.05

      autovacuum_analyze_scale_factor = 0.02

      Для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, _1sjournals) создайтС частичныС индСксы:

      CREATE INDEX idx_journals_recent ON _1sjournals (date)
      

      WHERE date > NOW() - INTERVAL '1 year';

      4. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ диагностика

      Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС инструмСнты для отслСТивания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

      • πŸ“Š pg_stat_activity β€” Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ соСдинСния ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.
      • πŸ“ˆ pg_stat_statements β€” статистика выполнСния запросов (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ).
      • πŸ” EXPLAIN ANALYZE β€” Π°Π½Π°Π»ΠΈΠ· ΠΏΠ»Π°Π½Π° выполнСния ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запроса для поиска Π΄ΠΎΠ»Π³ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ:

    SELECT pid, now() - query_start AS duration, query
    

    FROM pg_stat_activity

    WHERE state = 'active' AND query NOT LIKE '%pg_stat_activity%'

    ORDER BY duration DESC;

    5. Π Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

    НастройтС автоматичСскоС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с использованиСм pg_dump ΠΈΠ»ΠΈ pg_basebackup:

    # Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½Ρ‹ΠΉ бэкап (ΠΏΠΎΠ»Π½Ρ‹ΠΉ)
    

    pg_dump -U usr1c -F c -f /backup/db1c_$(date +%Y%m%d).dump db1c

    Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ бэкап (WAL-архивация)

    wal_level = archive

    archive_mode = on

    archive_command = 'test ! -f /backup/wal/%f && cp %p /backup/wal/%f'

    ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π² вашСй Π±Π°Π·Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с прямыми SQL-запросами, ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ синтаксис PostgreSQL. НапримСр, функция CONVERT Π² 1Π‘ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² PostgreSQL, Π³Π΄Π΅ для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ CAST ΠΈΠ»ΠΈ ::.

    ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ миграция: ΠΊΠ°ΠΊ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ

    Если послС пСрСноса Π½Π° PostgreSQL Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ критичСскиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ° рСсурсов), ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

    Π¨Π°Π³ 1: Экспорт Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· PostgreSQL

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ pg_dump для создания Π΄Π°ΠΌΠΏΠ°:

    pg_dump -U usr1c -F c -f /backup/db1c_dump.dump db1c

    Π¨Π°Π³ 2: ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°ΠΌΠΏΠ° Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚

    Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ chdbfl:

    chdbfl.exe /F "C:\Bases\MyBase_Rollback" /RestoreIB "C:\Backup\db1c_dump.dump" /File

    Π¨Π°Π³ 3: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° цСлостности

    ПослС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ:

    1. ЗапуститС ВСстированиС ΠΈ исправлСниС Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅.
    2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (остатки, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π° послСдний ΠΏΠ΅Ρ€ΠΈΠΎΠ΄).
    3. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π΄ΠΎ ΠΈ послС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.

    Π’Π°ΠΆΠ½ΠΎ: обратная миграция ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ прямая, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСобразования Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ структуры Ρ‚Π°Π±Π»ΠΈΡ†. Π’Π°ΠΊΠΆΠ΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹Π΅ индСксы) ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.

    πŸ’‘

    ВсСгда Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄ΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ быстро ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ.

    FAQ: ЧастыС вопросы ΠΏΠΎ пСрСносу 1Π‘ Π½Π° PostgreSQL

    МоТно Π»ΠΈ пСрСнСсти Π±Π°Π·Ρƒ Π½Π° PostgreSQL Π±Π΅Π· остановки Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?

    НСт, стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ 1Π‘ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ эксклюзивного доступа ΠΊ Π±Π°Π·Π΅. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ простой:

    1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя.
    2. ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ копию Π½Π° PostgreSQL.
    3. Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ измСнСния Π·Π° ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΉ дСнь с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 1Π‘:ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ сторонних инструмСнтов.

    Для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π±Π°Π· (>100 Π“Π‘) рассмотритС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· <