Како смо користили Π»Π΅ΡšΡƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π·Π° ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ ΠΎΠ΄ катастрофС са ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ›-ΠΎΠΌ

Како смо користили Π»Π΅ΡšΡƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π·Π° ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ ΠΎΠ΄ катастрофС са ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ›-ΠΎΠΌ
Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° нијС Ρ€Π΅Π·Π΅Ρ€Π²Π½Π° копија. Или Π½Π΅? Π•Π²ΠΎ ΠΊΠ°ΠΊΠΎ смо користили ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π·Π° ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ ΠΎΠ΄ ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎΠ³ Π±Ρ€ΠΈΡΠ°ΡšΠ° ΠΏΡ€Π΅Ρ‡ΠΈΡ†Π°.

Π‘Ρ‚Ρ€ΡƒΡ‡ΡšΠ°Ρ†ΠΈ Π·Π° инфраструктуру Π“ΠΈΡ‚Π›Π°Π± јС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°Π½ Π·Π° Ρ€Π°Π΄ Π“ΠΈΡ‚Π›Π°Π±.Ρ†ΠΎΠΌ - Π½Π°Ρ˜Π²Π΅Ρ›Π° Π“ΠΈΡ‚Π›Π°Π± инстанца Ρƒ ΠΏΡ€ΠΈΡ€ΠΎΠ΄ΠΈ. Π‘Π° 3 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° корисника ΠΈ скоро 7 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚Π°, Ρ‚ΠΎ јС јСдна ΠΎΠ΄ Π½Π°Ρ˜Π²Π΅Ρ›ΠΈΡ… Π‘Π°Π°Π‘ Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° са намСнском Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΌ. Π‘Π΅Π· ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› систСма Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Π“ΠΈΡ‚Π›Π°Π±.Ρ†ΠΎΠΌ инфраструктура Π½Π΅Ρ›Π΅ Π΄ΠΎΠ³ΡƒΡ€Π°Ρ‚ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ, Π° ΡˆΡ‚Π° Ρ€Π°Π΄ΠΈΠΌΠΎ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ†ΠΈΡ˜Ρƒ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° Ρƒ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ Π±ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΠ²ΠΈΡ… ΠΊΠ²Π°Ρ€ΠΎΠ²Π° ΠΊΠ°Π΄Π° ΠΏΠΎΠ΄Π°Ρ†ΠΈ ΠΌΠΎΠ³Ρƒ Π±ΠΈΡ‚ΠΈ ΠΈΠ·Π³ΡƒΠ±Ρ™Π΅Π½ΠΈ. Мало јС Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΎ Π΄Π° Ρ›Π΅ сС Ρ‚Π°ΠΊΠ²Π° катастрофа дСсити, Π°Π»ΠΈ ΠΌΠΈ смо Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΡ€ΠΈΠΏΡ€Π΅ΠΌΡ™Π΅Π½ΠΈ ΠΈ опскрбљСни Ρ€Π°Π·Π½ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΠΌΠ° Ρ€Π΅Π·Π΅Ρ€Π²Π½Π΅ копијС ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° нијС срСдство Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈΡ… копија Π±Π°Π·Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° (ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ испод). Али сада Ρ›Π΅ΠΌΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ Π±Ρ€Π·ΠΎ ΠΎΠΏΠΎΡ€Π°Π²ΠΈΡ‚ΠΈ ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ избрисанС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ користСћи Π»Π΅ΡšΡƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ: ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½ΠΎ Π“ΠΈΡ‚Π›Π°Π±.Ρ†ΠΎΠΌ корисник обрисао ΠΏΡ€Π΅Ρ‡ΠΈΡ†Ρƒ Π·Π° ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ gitlab-ce ΠΈ ΠΈΠ·Π³ΡƒΠ±Ρ™Π΅Π½Π΅ Π²Π΅Π·Π΅ са Π·Π°Ρ…Ρ‚Π΅Π²ΠΈΠΌΠ° Π·Π° спајањС ΠΈ Π·Π°Π΄Π°Ρ†ΠΈΠΌΠ°.

Π‘Π° ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΎΠΌ ΠΎΠΏΠΎΡ€Π°Π²ΠΈΠ»ΠΈ смо ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π·Π° само 1,5 сат. ПоглСдај ΠΊΠ°ΠΊΠΎ сС Ρ‚ΠΎ дСсило.

ΠžΠΏΠΎΡ€Π°Π²Π°ΠΊ Ρƒ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΡƒ са ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ›-ΠΎΠΌ

ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› ΠΈΠΌΠ° ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ која Π²Ρ€Π°Ρ›Π° ΡΡ‚Π°ΡšΠ΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π—ΠΎΠ²Π΅ сС ΠžΠΏΠΎΡ€Π°Π²Π°ΠΊ Ρƒ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΡƒ (ПИВР) ΠΈ користи истС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ који ΠΎΠ΄Ρ€ΠΆΠ°Π²Π°Ρ˜Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ Π°ΠΆΡƒΡ€Π½ΠΎΠΌ: ΠΏΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ ΠΏΠΎΡƒΠ·Π΄Π°Π½ΠΎΠ³ снимка Ρ‡ΠΈΡ‚Π°Π²ΠΎΠ³ кластСра Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° (Π±Π°Π·Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Π° копија), ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Π΅ΠΌΠΎ ΡΠ΅Ρ€ΠΈΡ˜Ρƒ ΠΏΡ€ΠΎΠΌΠ΅Π½Π° ΡΡ‚Π°ΡšΠ° Π΄ΠΎ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠ³ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΠ°.

Π”Π° бисмо користили ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ Π·Π° Ρ…Π»Π°Π΄Π½Ρƒ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρƒ ΠΊΠΎΠΏΠΈΡ˜Ρƒ, Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠΌΠΎ основну Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρƒ ΠΊΠΎΠΏΠΈΡ˜Ρƒ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Ρ‡ΡƒΠ²Π°ΠΌΠΎ јС Ρƒ Π°Ρ€Ρ…ΠΈΠ²ΠΈ (Π“ΠΈΡ‚Π›Π°Π± Π°Ρ€Ρ…ΠΈΠ²Π΅ ΠΆΠΈΠ²Π΅ Ρƒ Π“ΠΎΠΎΠ³Π»Π΅ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Ρƒ ΠΎΠ±Π»Π°ΠΊΡƒ). Π’Π°ΠΊΠΎΡ’Π΅ ΠΏΡ€Π°Ρ‚ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ Ρƒ ΡΡ‚Π°ΡšΡƒ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°ΡšΠ΅ΠΌ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° ΡƒΠΏΠΈΡΠΈΠ²Π°ΡšΠ° ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ (запис ΡƒΠ½Π°ΠΏΡ€Π΅Π΄, ВАЛ). И са свим ΠΎΠ²ΠΈΠΌ Π½Π° мСсту, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡƒΡ€Π°Π΄ΠΈΠΌΠΎ ПИВР Π·Π° ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ ΠΎΠ΄ катастрофС: ΠΏΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ снимка Π½Π°ΠΏΡ€Π°Π²Ρ™Π΅Π½ΠΎΠ³ ΠΏΡ€Π΅ ΠΊΠ²Π°Ρ€Π° ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π° ΠΈΠ· ВАЛ Π°Ρ€Ρ…ΠΈΠ²Π΅ Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ΅.

Π¨Ρ‚Π° јС ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°?

Π›Π΅ΡšΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° јС ΠΏΡ€ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π° ΠΈΠ· ВАЛ-Π° са закашњСњСм. Π’ΠΎ Ρ˜Π΅ΡΡ‚, Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° сС Π΄ΠΎΠ³ΠΎΠ΄ΠΈΠ»Π° Π·Π° сат Π²Ρ€Π΅ΠΌΠ΅Π½Π° X, Π°Π»ΠΈ Ρ›Π΅ сС Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈ ΠΏΠΎΡ˜Π°Π²ΠΈΡ‚ΠΈ са закашњСњСм d Π·Π° сат Π²Ρ€Π΅ΠΌΠ΅Π½Π° X + d.

ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› ΠΈΠΌΠ° 2 Π½Π°Ρ‡ΠΈΠ½Π° Π΄Π° сС подСси Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠ΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°: ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ Ρ€Π΅Π·Π΅Ρ€Π²Π½Π΅ копијС ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° стриминга. Π’Ρ€Π°Ρ›Π°ΡšΠ΅ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π΅, Ρƒ ΡΡƒΡˆΡ‚ΠΈΠ½ΠΈ Ρ€Π°Π΄ΠΈ ΠΊΠ°ΠΎ ПИВР, Π°Π»ΠΈ ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½ΠΎ: стално ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΠΌΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ ΠΈΠ· ВАЛ Π°Ρ€Ρ…ΠΈΠ²Π΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Π΅ΠΌΠΎ ΠΈΡ… Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ. А стрСаминг Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ° ВАЛ Ρ‚ΠΎΠΊ ΠΈΠ· ΡƒΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ хоста Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Π’ΠΈΡˆΠ΅ Π²ΠΎΠ»ΠΈΠΌΠΎ ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ Π°Ρ€Ρ…ΠΈΠ²Π΅ – њимС јС лакшС ΡƒΠΏΡ€Π°Π²Ρ™Π°Ρ‚ΠΈ ΠΈ ΠΈΠΌΠ° Π½ΠΎΡ€ΠΌΠ°Π»Π½Π΅ пСрформансС којС су Ρƒ складу са ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈΠΌ кластСром.

Како подСсити ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π΅

ΠžΠΏΡ†ΠΈΡ˜Π΅ ΠΎΠΏΠΎΡ€Π°Π²ΠΊΠ° описано Ρƒ Ρ„Π°Ρ˜Π»Ρƒ recovery.conf... ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

standby_mode = 'on'
restore_command = '/usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e wal-fetch -p 4 "%f" "%p"'
recovery_min_apply_delay = '8h'
recovery_target_timeline = 'latest'

Π‘Π° ΠΎΠ²ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠΌΠ° смо конфигурисали ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ са ΠΎΠΏΠΎΡ€Π°Π²ΠΊΠΎΠΌ Ρ€Π΅Π·Π΅Ρ€Π²Π½Π΅ копијС. ОвдС сС користи Π²Π°Π»-Π΅ Π΄Π° ΠΈΠ·Π΄Π²ΠΎΡ˜ΠΈΡ‚Π΅ ВАЛ сСгмСнтС (restore_command) ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π΅, Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅ΡšΠ΅Π½Π΅ Π½Π°ΠΊΠΎΠ½ осам сати (recovery_min_apply_delay). Π Π΅ΠΏΠ»ΠΈΠΊΠ° Ρ›Π΅ ΠΏΠ°Π·ΠΈΡ‚ΠΈ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ врСмСнскС линијС Ρƒ Π°Ρ€Ρ…ΠΈΠ²ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π±ΠΎΠ³ Π³Ρ€Π΅ΡˆΠΊΠ΅ кластСра (recovery_target_timeline).

Π‘ recovery_min_apply_delay ΠœΠΎΠΆΠ΅Ρ‚Π΅ подСсити Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ стриминга са закашњСњСм, Π°Π»ΠΈ ΠΎΠ²Π΄Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π·Π°ΠΌΠΊΠΈ којС сС односС Π½Π° слотовС Π·Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ, ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ Π²Ρ€ΡƒΡ›ΠΎΡ˜ приправности ΠΈ Ρ‚Π°ΠΊΠΎ Π΄Π°Ρ™Π΅. ВАЛ Π°Ρ€Ρ…ΠΈΠ²Π° Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° ΠΈΡ… ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ recovery_min_apply_delay појавио сС само Ρƒ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› 9.3. Π£ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΠΌ Π²Π΅Ρ€Π·ΠΈΡ˜Π°ΠΌΠ°, Π·Π° ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ° ΠΎΠΏΠΎΡ€Π°Π²ΠΊΠΎΠΌ (pg_xlog_replay_pause(), pg_xlog_replay_resume()) ΠΈΠ»ΠΈ Π·Π°Π΄Ρ€ΠΆΠΈΡ‚Π΅ ВАЛ сСгмСнтС Ρƒ Π°Ρ€Ρ…ΠΈΠ²ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Ρ‚Ρ€Π°Ρ˜Π°ΡšΠ° кашњСња.

Како ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› Ρ‚ΠΎ Ρ€Π°Π΄ΠΈ?

Π—Π°Π½ΠΈΠΌΡ™ΠΈΠ²ΠΎ јС Π²ΠΈΠ΄Π΅Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° лСњи ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ. Π₯ајдС Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ recoveryApplyDelay(XlogReaderState). Π—ΠΎΠ²Π΅ сС ΠΈΠ· Π³Π»Π°Π²Π½Π° ΠΏΠ΅Ρ‚Ρ™Π° ΠΏΠΎΠ½Π°Π²Ρ™Π°ΡšΠ° Π·Π° сваки унос ΠΈΠ· ВАЛ-Π°.

static bool
recoveryApplyDelay(XLogReaderState *record)
{
    uint8       xact_info;
    TimestampTz xtime;
    long        secs;
    int         microsecs;

    /* nothing to do if no delay configured */
    if (recovery_min_apply_delay <= 0)
        return false;

    /* no delay is applied on a database not yet consistent */
    if (!reachedConsistency)
        return false;

    /*
     * Is it a COMMIT record?
     *
     * We deliberately choose not to delay aborts since they have no effect on
     * MVCC. We already allow replay of records that don't have a timestamp,
     * so there is already opportunity for issues caused by early conflicts on
     * standbys.
     */
    if (XLogRecGetRmid(record) != RM_XACT_ID)
        return false;

    xact_info = XLogRecGetInfo(record) & XLOG_XACT_OPMASK;

    if (xact_info != XLOG_XACT_COMMIT &&
        xact_info != XLOG_XACT_COMMIT_PREPARED)
        return false;

    if (!getRecordTimestamp(record, &xtime))
        return false;

    recoveryDelayUntilTime =
        TimestampTzPlusMilliseconds(xtime, recovery_min_apply_delay);

    /*
     * Exit without arming the latch if it's already past time to apply this
     * record
     */
    TimestampDifference(GetCurrentTimestamp(), recoveryDelayUntilTime,
                        &secs, &microsecs);
    if (secs <= 0 && microsecs <= 0)
        return false;

    while (true)
    {
        // Shortened:
        // Use WaitLatch until we reached recoveryDelayUntilTime
        // and then
        break;
    }
    return true;
}

Π‘ΡƒΡˆΡ‚ΠΈΠ½Π° јС Π΄Π° јС кашњСњС засновано Π½Π° Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ Π·Π°Π±Π΅Π»Π΅ΠΆΠ΅Π½ΠΎΠΌ Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΡΠΊΠΎΡ˜ ΠΎΠ·Π½Π°Ρ†ΠΈ ΡƒΡ€Π΅Π·ΠΈΠ²Π°ΡšΠ° Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π΅ (xtime). Као ΡˆΡ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅, кашњСњС сС односи само Π½Π° ΡƒΡ€Π΅Π·ΠΈΠ²Π°ΡšΠ΅ ΠΈ Π½Π΅ ΡƒΡ‚ΠΈΡ‡Π΅ Π½Π° Π΄Ρ€ΡƒΠ³Π΅ уносС - свС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ сС ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, Π° ΡƒΡ€Π΅Π·ΠΈΠ²Π°ΡšΠ΅ јС ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎ, Ρ‚Π°ΠΊΠΎ Π΄Π° Ρ›Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Ρ‚Π΅ΠΊ Π½Π°ΠΊΠΎΠ½ конфигурисаног кашњСња.

Како користити ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ Π·Π° Π²Ρ€Π°Ρ›Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°

Π Π΅Ρ†ΠΈΠΌΠΎ Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ кластСр Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ са осмосатним кашњСњСм Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠΈ. Π₯ајдС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠ²Ρ€Π°Ρ‚ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ користСћи ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ Π±Ρ€ΠΈΡΠ°ΡšΠ΅ ΠΏΡ€Π΅Ρ‡ΠΈΡ†Π°.

Када смо сазнали Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΌΠΈ ΠΎΠ±Π½Π°Π²Ρ™Π°ΡšΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π΅ јС ΠΏΠ°ΡƒΠ·ΠΈΡ€Π°Π½ΠΎ Π·Π° ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ:

SELECT pg_xlog_replay_pause();

Π£Π· ΠΏΠ°ΡƒΠ·Ρƒ, нисмо ΠΈΠΌΠ°Π»ΠΈ Ρ€ΠΈΠ·ΠΈΠΊ Π΄Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΏΠΎΠ½ΠΎΠ²ΠΈ Π·Π°Ρ…Ρ‚Π΅Π² DELETE. ΠšΠΎΡ€ΠΈΡΠ½Π° ствар Π°ΠΊΠΎ Π²Π°ΠΌ Ρ‚Ρ€Π΅Π±Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π΄Π° свС схватитС.

ΠŸΠΎΠ΅Π½Ρ‚Π° јС Π΄Π° ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΌΠΎΡ€Π° Π΄Π° стигнС Π΄ΠΎ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΠ° ΠΏΡ€Π΅ Π·Π°Ρ…Ρ‚Π΅Π²Π° DELETE. ΠŸΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ смо Π·Π½Π°Π»ΠΈ Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΡƒΠΊΠ»Π°ΡšΠ°ΡšΠ°. Π˜Π·Π±Ρ€ΠΈΡΠ°Π»ΠΈ смо recovery_min_apply_delay ΠΈ Π΄ΠΎΠ΄Π°ΠΎ recovery_target_time Π² recovery.conf. Овако Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° стиТС Π΄ΠΎ ΠΏΡ€Π°Π²ΠΎΠ³ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΠ° Π±Π΅Π· одлагања:

recovery_target_time = '2018-10-12 09:25:00+00'

Π‘Π° врСмСнским ΠΎΠ·Π½Π°ΠΊΠ°ΠΌΠ°, Π±ΠΎΡ™Π΅ јС ΡΠΌΠ°ΡšΠΈΡ‚ΠΈ вишак ΠΊΠ°ΠΊΠΎ Π½Π΅ бистС пропустили. Π˜ΡΡ‚ΠΈΠ½Π°, ΡˆΡ‚ΠΎ јС смањСњС Π²Π΅Ρ›Π΅, Π³ΡƒΠ±ΠΈΠΌΠΎ вишС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. ΠžΠΏΠ΅Ρ‚, Π°ΠΊΠΎ пропустимо Π·Π°Ρ…Ρ‚Π΅Π² DELETE, свС Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ избрисано ΠΈ ΠΌΠΎΡ€Π°Ρ›Π΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ ΠΈΠ·Π½ΠΎΠ²Π° (ΠΈΠ»ΠΈ Ρ‡Π°ΠΊ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ…Π»Π°Π΄Π½Ρƒ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρƒ ΠΊΠΎΠΏΠΈΡ˜Ρƒ Π·Π° ПИВР).

Поново смо ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠ»ΠΈ ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Ρƒ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ инстанцу ΠΈ ВАЛ сСгмСнти су сС ΠΏΠΎΠ½Π°Π²Ρ™Π°Π»ΠΈ Π΄ΠΎ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠ³ Π²Ρ€Π΅ΠΌΠ΅Π½Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π°Ρ‚ΠΈΡ‚ΠΈ Π½Π°ΠΏΡ€Π΅Π΄Π°ΠΊ Ρƒ овој Ρ„Π°Π·ΠΈ Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ›Π΅Ρ‚Π΅ ΠΏΠΈΡ‚Π°Ρ‚ΠΈ:

SELECT
  -- current location in WAL
  pg_last_xlog_replay_location(),
  -- current transaction timestamp (state of the replica)
  pg_last_xact_replay_timestamp(),
  -- current physical time
  now(),
  -- the amount of time still to be applied until recovery_target_time has been reached
  '2018-10-12 09:25:00+00'::timestamptz - pg_last_xact_replay_timestamp() as delay;

Ако сС врСмСнска ΠΎΠ·Π½Π°ΠΊΠ° вишС Π½Π΅ мСња, ΠΎΠΏΠΎΡ€Π°Π²Π°ΠΊ јС Π·Π°Π²Ρ€ΡˆΠ΅Π½. ΠΠΊΡ†ΠΈΡ˜Π° сС ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡ‚ΠΈ recovery_target_actionΠ΄Π° Π·Π°Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅, ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΠΏΠ°ΡƒΠ·ΠΈΡ€Π°Ρ‚Π΅ инстанцу Π½Π°ΠΊΠΎΠ½ ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎΠ³ ΠΏΠΎΠΊΡƒΡˆΠ°Ρ˜Π° (ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ јС суспСндована).

Π‘Π°Π·Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° сС Π²Ρ€Π°Ρ‚ΠΈΠ»Π° Ρƒ ΡΡ‚Π°ΡšΠ΅ ΠΏΡ€Π΅ Ρ‚ΠΎΠ³ нСсрСћног Π·Π°Ρ…Ρ‚Π΅Π²Π°. Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° ΠΈΠ·Π²ΠΎΠ·ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅. ИзвСзли смо избрисанС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ ΠΈ свС Π²Π΅Π·Π΅ Π΄ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ Π·Π°Ρ…Ρ‚Π΅Π²Π° Π·Π° спајањС ΠΈ прСмСстили ΠΈΡ… Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρƒ Π±Π°Π·Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Ако су Π³ΡƒΠ±ΠΈΡ†ΠΈ Π²Π΅Π»ΠΈΠΊΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ промовисати Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ ΠΈ користити јС ΠΊΠ°ΠΎ Π³Π»Π°Π²Π½Ρƒ. Али Ρ‚Π°Π΄Π° Ρ›Π΅ свС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ послС Ρ‚Π°Ρ‡ΠΊΠ΅ Π΄ΠΎ којС смо сС ΠΎΠΏΠΎΡ€Π°Π²ΠΈΠ»ΠΈ Π±ΠΈΡ‚ΠΈ ΠΈΠ·Π³ΡƒΠ±Ρ™Π΅Π½Π΅.

УмСсто врСмСнских ΠΎΠ·Π½Π°ΠΊΠ°, Π±ΠΎΡ™Π΅ јС користити Π˜Π” Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π΅. ΠšΠΎΡ€ΠΈΡΠ½ΠΎ јС снимити ΠΎΠ²Π΅ Π˜Π”-ΠΎΠ²Π΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π”Π”Π› изјавС (ΠΊΠ°ΠΎ Π½ΠΏΡ€ DROP TABLE), ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ΠΌ log_statements = 'ddl'. Π”Π° ΠΈΠΌΠ°ΠΌΠΎ Π˜Π” Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π΅, ΡƒΠ·Π΅Π»ΠΈ бисмо recovery_target_xid ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠΎ свС Π΄ΠΎ Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π΅ ΠΏΡ€Π΅ Π·Π°Ρ…Ρ‚Π΅Π²Π° DELETE.

ΠŸΠΎΠ²Ρ€Π°Ρ‚Π°ΠΊ Π½Π° посао јС Π²Ρ€Π»ΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π°Π½: ΡƒΠΊΠ»ΠΎΠ½ΠΈΡ‚Π΅ свС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ ΠΈΠ· recovery.conf ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Ρ. Π Π΅ΠΏΠ»ΠΈΠΊΠ° Ρ›Π΅ ускоро ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΈΠΌΠ°Ρ‚ΠΈ осам сати кашњСња, Π° ΠΌΠΈ смо спрСмни Π·Π° Π±ΡƒΠ΄ΡƒΡ›Π΅ Π½Π΅Π²ΠΎΡ™Π΅.

ΠŸΡ€Π΅Π΄Π½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠΎΡ€Π°Π²ΠΊΠ°

Π‘Π° ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΎΠΌ умСсто Ρ…Π»Π°Π΄Π½Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½Π΅ копијС, Π½Π΅ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° Ρ‚Ρ€ΠΎΡˆΠΈΡ‚Π΅ сатС Π½Π° Π²Ρ€Π°Ρ›Π°ΡšΠ΅ Ρ†Π΅Π»Π΅ сликС ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π΅. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π½Π°ΠΌ јС ΠΏΠ΅Ρ‚ сати Π΄Π° добијСмо Ρ†Π΅Π»Ρƒ основну Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρƒ ΠΊΠΎΠΏΠΈΡ˜Ρƒ ΠΎΠ΄ 2 Π’Π‘. А ΠΎΠ½Π΄Π° ΠΈ Π΄Π°Ρ™Π΅ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ†Π΅ΠΎ Π΄Π½Π΅Π²Π½ΠΈ ВАЛ Π΄Π° бистС сС ΠΎΠΏΠΎΡ€Π°Π²ΠΈΠ»ΠΈ Ρƒ ΠΆΠ΅Ρ™Π΅Π½ΠΎ ΡΡ‚Π°ΡšΠ΅ (Ρƒ Π½Π°Ρ˜Π³ΠΎΡ€Π΅ΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ).

ОдлоТСна Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° јС Π±ΠΎΡ™Π° ΠΎΠ΄ Ρ…Π»Π°Π΄Π½Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½Π΅ копијС Π½Π° Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π°:

  1. НСма ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ Π΄Π° ΡƒΠΊΠ»Π°ΡšΠ°Ρ‚Π΅ Ρ†Π΅Π»Ρƒ основну Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρƒ ΠΊΠΎΠΏΠΈΡ˜Ρƒ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π΅.
  2. ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ фиксни осмочасовни ΠΏΡ€ΠΎΠ·ΠΎΡ€ ВАЛ сСгмСната који сС ΠΌΠΎΡ€Π°Ρ˜Ρƒ ΠΏΠΎΠ½ΠΎΠ²ΠΈΡ‚ΠΈ.

Π’Π°ΠΊΠΎΡ’Π΅ стално ΠΏΡ€ΠΎΠ²Π΅Ρ€Π°Π²Π°ΠΌΠΎ Π΄Π° Π»ΠΈ јС ΠΌΠΎΠ³ΡƒΡ›Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ ПИВР ΠΈΠ· ВАЛ-Π° ΠΈ Π±Ρ€Π·ΠΎ бисмо ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΡˆΡ‚Π΅Ρ›Π΅ΡšΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ са ВАЛ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ ΠΏΡ€Π°Ρ›Π΅ΡšΠ΅ΠΌ кашњСња ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅.

Π£ ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π½Π°ΠΌ јС 50 ΠΌΠΈΠ½ΡƒΡ‚Π° Π΄Π° Π²Ρ€Π°Ρ‚ΠΈΠΌΠΎ, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° јС Π±Ρ€Π·ΠΈΠ½Π° Π±ΠΈΠ»Π° 110 Π“Π‘ ВАЛ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° сат (Π°Ρ€Ρ…ΠΈΠ²Π° јС још ΡƒΠ²Π΅ΠΊ Π±ΠΈΠ»Π° ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½Π° АВБ Π‘3). Π£ΠΊΡƒΠΏΠ½ΠΎ смо Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΠΎΠ²Ρ€Π°Ρ‚ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π·Π° 1,5 сат.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ: Π³Π΄Π΅ јС ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° корисна (Π° Π³Π΄Π΅ нијС)

ΠšΠΎΡ€ΠΈΡΡ‚ΠΈΡ‚Π΅ ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΊΠ°ΠΎ ΠΏΡ€Π²Ρƒ ΠΏΠΎΠΌΠΎΡ› Π°ΠΊΠΎ стС ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ ΠΈΠ·Π³ΡƒΠ±ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ овај ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΡƒΠ½ΡƒΡ‚Π°Ρ€ конфигурисаног одлагања.

Али ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ Π½Π° ΡƒΠΌΡƒ: Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° нијС Ρ€Π΅Π·Π΅Ρ€Π²Π½Π° копија.

Π Π΅Π·Π΅Ρ€Π²Π½Π° копија ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΈΠΌΠ°Ρ˜Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ сврхС. Π₯Π»Π°Π΄Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Π° копија Ρ›Π΅ Π²Π°ΠΌ Π΄ΠΎΠ±Ρ€ΠΎ Π΄ΠΎΡ›ΠΈ Π°ΠΊΠΎ стС ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ DELETE ΠΈΠ»ΠΈ DROP TABLE. ΠŸΡ€Π°Π²ΠΈΠΌΠΎ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρƒ ΠΊΠΎΠΏΠΈΡ˜Ρƒ са Ρ…Π»Π°Π΄Π½ΠΎΠ³ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° ΠΈ Π²Ρ€Π°Ρ›Π°ΠΌΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΡΡ‚Π°ΡšΠ΅ Ρ‚Π°Π±Π΅Π»Π΅ ΠΈΠ»ΠΈ Ρ†Π΅Π»Π΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Али истоврСмСно ΠΈ Π·Π°Ρ…Ρ‚Π΅Π² DROP TABLE сС скоро Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡƒΡ˜Π΅ Ρƒ свим Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌΠ° Π½Π° Ρ€Π°Π΄Π½ΠΎΠΌ кластСру, Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΎΠ±ΠΈΡ‡Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΎΠ²Π΄Π΅ Π½Π΅Ρ›Π΅ ΠΏΠΎΠΌΠΎΡ›ΠΈ. Π‘Π°ΠΌΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΎΠ΄Ρ€ΠΆΠ°Π²Π° Π±Π°Π·Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° доступном ΠΊΠ°Π΄Π° сС ΠΏΠΎΡ˜Π΅Π΄ΠΈΠ½Π°Ρ‡Π½ΠΈ сСрвСри ΠΈΠ·Π½Π°Ρ˜ΠΌΡ™ΡƒΡ˜Ρƒ ΠΈ Ρ€Π°ΡΠΏΠΎΡ€Π΅Ρ’ΡƒΡ˜Π΅ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ΅.

Π§Π°ΠΊ ΠΈ са ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΎΠΌ, ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ Π½Π°ΠΌ јС заиста ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Ρ…Π»Π°Π΄Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Π° копија Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΠΌ мСсту Π°ΠΊΠΎ Π΄ΠΎΡ’Π΅ Π΄ΠΎ ΠΊΠ²Π°Ρ€Π° Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, скривСних ΠΎΡˆΡ‚Π΅Ρ›Π΅ΡšΠ° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜Π° који нису ΠΎΠ΄ΠΌΠ°Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ‚Π½ΠΈ. Π‘Π°ΠΌΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΎΠ²Π΄Π΅ нијС ΠΎΠ΄ користи.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‚ΠΈΡ‚ΠΈ. Он Π“ΠΈΡ‚Π›Π°Π±.Ρ†ΠΎΠΌ Π’Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ ΡˆΡ‚ΠΈΡ‚ΠΈΠΌΠΎ само ΠΎΠ΄ Π³ΡƒΠ±ΠΈΡ‚ΠΊΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎΡƒ систСма ΠΈ Π½Π΅ ΠΎΠ±Π½Π°Π²Ρ™Π°ΠΌΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π½Π° Π½ΠΈΠ²ΠΎΡƒ корисника.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€