Π—Π°Ρ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ полусинхронна рСпликация?

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ всички. Владислав Π ΠΎΠ΄ΠΈΠ½ Π΅ във Π²Ρ€ΡŠΠ·ΠΊΠ°. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°ΠΌ курсовС ΠΏΠΎ софтуСрна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ софтуСрна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° с висок стрСс Π² OTUS. Π’ ΠΎΡ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Π½ΠΎΠ² курс ΠΏΠΎΡ‚ΠΎΠΊ β€žΠΡ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ с голямо Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅β€œ Π Π΅ΡˆΠΈΡ… Π΄Π° напиша ΠΊΡ€Π°Ρ‚ΡŠΠΊ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅Π½ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», ΠΊΠΎΠΉΡ‚ΠΎ искам Π΄Π° сподСля с вас.

Π—Π°Ρ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ полусинхронна рСпликация?

въвСдСниС

ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Ρ‚Π²ΡŠΡ€Π΄ΠΈΡΡ‚ диск ΠΌΠΎΠΆΠ΅ Π΄Π° изпълнява само ΠΎΠΊΠΎΠ»ΠΎ 400-700 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² сСкунда (ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ нСсравнимо с Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈΡ‚Π΅ rps Π½Π° систСма с голямо Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅), класичСската дискова Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π΅ тясното място Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΎΠ±ΡŠΡ€Π½Π΅ спСциално Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ° 2 ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ: рСпликация ΠΈ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³. Π¨Π°Ρ€Π΄ΠΈΠ½Π³ΡŠΡ‚ Π²ΠΈ позволява Π΄Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚Π΅ опСрацията Π·Π° запис ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ rps Π·Π° запис Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ във вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. РСпликацията Π²ΠΈ позволява Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎΡ‚ΠΎ, Π½ΠΎ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. ИмСнно Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» Π΅ посвСтСна Ρ‚Π°Π·ΠΈ статия.

рСпликация

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ рСпликацията Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ високо Π½ΠΈΠ²ΠΎ, Ρ‚ΠΎΠ²Π° Π΅ просто Π½Π΅Ρ‰ΠΎ: ΠΈΠΌΠ°Ρ…Ρ‚Π΅ Π΅Π΄ΠΈΠ½ ΡΡŠΡ€Π²ΡŠΡ€, имашС Π΄Π°Π½Π½ΠΈ Π½Π° Π½Π΅Π³ΠΎ ΠΈ слСд Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠ·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ Π²Π΅Ρ‡Π΅ Π½Π΅ моТСшС Π΄Π° сС справи с Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ДобавятС ΠΎΡ‰Π΅ няколко ΡΡŠΡ€Π²ΡŠΡ€Π°, синхронизиратС Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ всички ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ потрСбитСлят ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅ ΠΎΡ‚ всСки ΡΡŠΡ€Π²ΡŠΡ€ във вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ΄Π½Π°Ρ‚Π° си простота, ΠΈΠΌΠ° няколко ΠΎΠΏΡ†ΠΈΠΈ Π·Π° класифициранС Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ изпълнСния Π½Π° Ρ‚Π°Π·ΠΈ схСма:

  • По Ρ€ΠΎΠ»ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° (master-master ΠΈΠ»ΠΈ master-slave)
  • Π§Ρ€Π΅Π· ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ (Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° изявлСния ΠΈΠ»ΠΈ смСсСни)
  • Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° синхронизация Π½Π° възСла

ДнСс Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚ΠΎΡ‡ΠΊΠ° 3.

Как възниква Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ Π·Π° транзакция?

Π’Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ° Π½Π΅ Π΅ пряко ΡΠ²ΡŠΡ€Π·Π°Π½Π° с рСпликацията; ΠΌΠΎΠΆΠ΅ Π΄Π° сС напишС ΠΎΡ‚Π΄Π΅Π»Π½Π° статия Π·Π° нСя, Π½ΠΎ Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎΡ‚ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π΅ Π±Π΅Π·ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π±Π΅Π· Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ ΠΌΠΈ Π΄Π° Π²ΠΈ напомня Π½Π°ΠΉ-основнитС Π½Π΅Ρ‰Π°. АнгаТиранСто Π½Π° транзакция сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Π½Π° 3 Π΅Ρ‚Π°ΠΏΠ°:

  1. РСгистриранС Π½Π° транзакция Π² рСгистрационния Ρ„Π°ΠΉΠ» Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  2. ИзползванС Π½Π° транзакция Π² Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
  3. Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Π΅ транзакцията Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π°.

Π’ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Ρ‚ΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° нюанси: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² двигатСля InnoDB Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π½Π° MySQL ΠΈΠΌΠ° 2 ΠΆΡƒΡ€Π½Π°Π»Π°: Π΅Π΄ΠΈΠ½ Π·Π° рСпликация (Π΄Π²ΠΎΠΈΡ‡Π΅Π½ ΠΆΡƒΡ€Π½Π°Π»), Π° другият Π·Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° ACID (Π΄Π½Π΅Π²Π½ΠΈΠΊ Π·Π° отмяна/повторяванС), Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π² PostgreSQL ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ Π΄Π½Π΅Π²Π½ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ изпълнява ΠΈ Π΄Π²Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΆΡƒΡ€Π½Π°Π» Π·Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ запис = WAL). Но Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ прСдставСно ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ‰Π°Ρ‚Π° концСпция, която позволява Π΄Π° Π½Π΅ сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ‚Π°ΠΊΠΈΠ²Π° нюанси.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Π° (синхронна) рСпликация

НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° транзакция:

  1. РСгистриранС Π½Π° транзакция Π² рСгистрационния Ρ„Π°ΠΉΠ» Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  2. ИзползванС Π½Π° транзакция Π² Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
  3. Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π΄ΠΎ всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.
  4. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, Ρ‡Π΅ Π²ΡŠΡ€Ρ…Ρƒ тях Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° транзакция.
  5. Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Π΅ транзакцията Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π°.

Π‘ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Ρ€Π΅Π΄ΠΈΡ†Π° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ:

  • ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΈΠ·Ρ‡Π°ΠΊΠ²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ към всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.
  • Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ броят Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°, Π½ΠΈΠ΅ намалявамС вСроятността опСрацията Π·Π° запис Π΄Π° бъдС ΡƒΡΠΏΠ΅ΡˆΠ½Π°.

Ако всичко Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ясно с 1-Π²Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° 2-Ρ€Π° Ρ‚ΠΎΡ‡ΠΊΠ° си струва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ обяснСни. Ако ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° синхронна рСпликация Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΎΡ‚ ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ възСл, Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ транзакцията. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Ρ‡Ρ€Π΅Π· ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° броя Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π²ΠΈΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‚Π΅ вСроятността опСрацията Π·Π° запис Π΄Π° сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ.

МоТСм Π»ΠΈ Π΄Π° Ρ‡Π°ΠΊΠ°ΠΌΠ΅ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ само ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ възли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ 51% (ΠΊΠ²ΠΎΡ€ΡƒΠΌ)? Π”Π°, ΠΌΠΎΠΆΠ΅ΠΌ, Π½ΠΎ Π² класичСската вСрсия Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ всички възли, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° осигурим пълна консистСнция Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ бСзспорно прСдимство Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ рСпликация.

Асинхронна (асинхронна) рСпликация

НСка ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ. Π©Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠΌ Π΄Π°Π½Π½ΠΈ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ β€žΠ½ΡΠΊΠΎΠ³Π° ΠΏΠΎ-ΠΊΡŠΡΠ½ΠΎβ€œ, Π° β€žΠ½ΡΠΊΠΎΠ³Π° ΠΏΠΎ-ΠΊΡŠΡΠ½ΠΎβ€œ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ към Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅:

  1. РСгистриранС Π½Π° транзакция Π² рСгистрационния Ρ„Π°ΠΉΠ» Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  2. ИзползванС Π½Π° транзакция Π² Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
  3. Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Π΅ транзакцията Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π°.
  4. Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π΄ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ към тях.

Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±ΡŠΡ€Π·ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ ΠΊΠ°Ρ€Π°ΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄Π° Ρ‡Π°ΠΊΠ° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π΄Π° достигнат Π΄ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½ΠΈ.

Но условиСто Π·Π° ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ β€žΠ½ΡΠΊΠΎΠ³Π° ΠΏΠΎ-ΠΊΡŠΡΠ½ΠΎβ€œ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° транзакция ΠΈ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° транзакция, ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½Π° ΠΎΡ‚ потрСбитСля, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π΅ са ΠΈΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π°Π½ΠΈ, ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ към ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π·Π° успСха Π½Π° опСрацията бСшС ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΎ ΠΈ Π²ΡŠΠ·Π΅Π»ΡŠΡ‚, Π΄ΠΎ ΠΊΠΎΠΉΡ‚ΠΎ пристигнаха ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, сС срина HDD, Π³ΡƒΠ±ΠΈΠΌ транзакцията, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ нСприятни послСдици.

ΠŸΠΎΠ»ΡƒΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Π° рСпликация

Накрая стигамС Π΄ΠΎ полусинхронна рСпликация. Π’ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ рСпликация Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ чСсто срСщан, Π½ΠΎ прСдставлява Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ интСрСс, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° прСдимствата ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° синхронната, Ρ‚Π°ΠΊΠ° ΠΈ Π½Π° асинхронната рСпликация.

НСка сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π²Π°Ρ‚Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Няма Π΄Π° Π·Π°Π΄ΡŠΡ€ΠΆΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° дълго, Π½ΠΎ Ρ‰Π΅ изисквамС Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π°Π½ΠΈ:

  1. РСгистриранС Π½Π° транзакция Π² рСгистрационния Ρ„Π°ΠΉΠ» Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  2. ИзползванС Π½Π° транзакция Π² Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
  3. Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ към Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.
  4. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, Ρ‡Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ са ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ (Ρ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ β€žΠΏΠΎ-ΠΊΡŠΡΠ½ΠΎβ€œ).
  5. Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Π΅ транзакцията Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π°.

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ с Ρ‚ΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π°Π³ΡƒΠ±Π° Π½Π° транзакция възниква само Π°ΠΊΠΎ ΠΈ Π²ΡŠΠ·Π΅Π»ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, ΠΈ Π²ΡŠΠ·Π΅Π»ΡŠΡ‚ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° сС провалят. ВСроятността ΠΎΡ‚ Ρ‚Π°ΠΊΡŠΠ² ΠΎΡ‚ΠΊΠ°Π· сС счита Π·Π° ниска ΠΈ Ρ‚Π΅Π·ΠΈ рисковС сС ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚.

Но ΠΏΡ€ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° възмоТСн риск ΠΎΡ‚ Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½ΠΈ чСтСния. НСка си прСдставим слСдния сцСнарий: Π² ΡΡ‚ΡŠΠΏΠΊΠ° 4 Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π½ΠΈΠΊΠ°ΠΊΠ²Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°. Врябва Π΄Π° ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠΌ Ρ‚Π°Π·ΠΈ транзакция ΠΈ Π΄Π° Π½Π΅ Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Въй ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ бяха ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΡΡ‚ΡŠΠΏΠΊΠ° 2, ΠΈΠΌΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ края Π½Π° ΡΡ‚ΡŠΠΏΠΊΠ° 2 ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π°Π·Π°Π΄ Π½Π° транзакцията, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° видят ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.

ΠŸΠΎΠ»ΡƒΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Π½Π° рСпликация Π±Π΅Π· Π·Π°Π³ΡƒΠ±Π°

Ако помислитС ΠΌΠ°Π»ΠΊΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° ΠΈ Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½ΠΈΡ‚Π΅ чСтСния Π² Ρ‚ΠΎΠ·ΠΈ сцСнарий:

  1. РСгистриранС Π½Π° транзакция Π² рСгистрационния Ρ„Π°ΠΉΠ» Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  2. Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ.
  3. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, Ρ‡Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ са ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ (Ρ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ β€žΠΏΠΎ-ΠΊΡŠΡΠ½ΠΎβ€œ).
  4. ИзползванС Π½Π° транзакция Π² Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
  5. Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Π΅ транзакцията Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π°.

Π‘Π΅Π³Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ само Π°ΠΊΠΎ са Π±ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π°Π½ΠΈ.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ

ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ, няма ΠΈΠ΄Π΅Π°Π»Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ; ΠΈΠΌΠ° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, всяко ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° своитС прСдимства ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ ΠΈ Π΅ подходящо Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ класовС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Π’ΠΎΠ²Π° Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ вярно Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° синхронизиранС Π½Π° Π΄Π°Π½Π½ΠΈ Π² Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π°Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΠ°Π±ΠΎΡ€ΡŠΡ‚ ΠΎΡ‚ прСдимства, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° полусинхронната рСпликация, Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ солидСн ΠΈ интСрСсСн, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС счита Π·Π° достоСн Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ слабото си разпространСниС.

Π’ΠΎΠ²Π° Π΅ всичко. Π©Π΅ сС Π²ΠΈΠ΄ΠΈΠΌ Π² курс!

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€