ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ полусинхронная рСпликация?

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚. На связи Владислав Π ΠΎΠ΄ΠΈΠ½. Π’ настоящСС врСмя я ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°ΡŽ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ OTUS курсы, посвящСнныС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ПО ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ПО, ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. Π’ ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° курса «АрхитСктор высоких Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊΒ» я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшой авторский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ полусинхронная рСпликация?

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Из-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° HDD ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ лишь порядка 400-700 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду (Ρ‡Ρ‚ΠΎ нСсравнимо с Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ rps’Π°ΠΌΠΈ, приходящимися Π½Π° Π²Ρ‹ΡΠΎΠΊΠΎΠ½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΡƒΡŽ систСму), классичСская дисковая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… являСтся ΡƒΠ·ΠΊΠΈΠΌ Π³ΠΎΡ€Π»Ρ‹ΡˆΠΊΠΎΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ 2 ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Ρ‹: рСпликация ΠΈ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π¨Π°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ позволяСт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ записи, ΠΈ, ΠΊΠ°ΠΊ слСдствиС, ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ rps Π½Π° запись, приходящийся Π½Π° ΠΎΠ΄ΠΈΠ½ сСрвСр вашСго кластСра. РСпликация позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ самоС, Π½ΠΎ с опСрациями чтСния. ИмСнно этому ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρƒ ΠΈ посвящСна данная ΡΡ‚Π°Ρ‚ΡŒΡ.

РСпликация

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

НСсмотря Π½Π° ΠΊΠ°ΠΆΡƒΡ‰ΡƒΡŽΡΡ простоту, сущСствуСт нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² классификации Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΉ схСмы:

  • По ролям Π² кластСрС (master-master ΠΈΠ»ΠΈ master-slave)
  • По пСрСсылаСмым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ (row-based, statement-based ΠΈΠ»ΠΈ mixed)
  • По ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ синхронизации Π½ΠΎΠ΄

БСгодня ΠΌΡ‹ разбСрСмся ΠΈΠΌΠ΅Π½Π½ΠΎ с 3-ΠΈΠΌ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ.

Как происходит ΠΊΠΎΠΌΠΌΠΈΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Данная Ρ‚Π΅ΠΌΠ° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π΅ относится ΠΊ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠΎ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написана ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Π΅Π· понимания ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ дальнСйшСС ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ бСсполСзно, позволю сСбС Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ самыС основныС Π²Π΅Ρ‰ΠΈ. ΠšΠΎΠΌΠΌΠΈΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ происходит Π² 3 этапа:

  1. Π—Π°ΠΏΠΈΡΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΆΡƒΡ€Π½Π°Π» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  2. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  3. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Π’ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π°Π·Π°Ρ… Π² Π΄Π°Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π½ΡŽΠ°Π½ΡΡ‹: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π΄Π²ΠΈΠΆΠΊΠ΅ InnoDB Π±Π°Π·Ρ‹ MySQL имССтся 2 ΠΆΡƒΡ€Π½Π°Π»Π°: ΠΎΠ΄ΠΈΠ½ для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (binary log), Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ для поддСрТания ACID (undo/redo log), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² PostgreSQL имССтся ΠΎΠ΄ΠΈΠ½ ΠΆΡƒΡ€Π½Π°Π», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (write ahead log = WAL). Но Π²Ρ‹ΡˆΠ΅ прСдставлСна ΠΈΠΌΠ΅Π½Π½ΠΎ общая концСпция, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ‚Π°ΠΊΠΈΠ΅ Π½ΡŽΠ°Π½ΡΡ‹ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Бинхронная (sync) рСпликация

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

  1. Π—Π°ΠΏΠΈΡΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΆΡƒΡ€Π½Π°Π» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  2. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  3. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° всС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.
  4. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΎΡ‚ всСх Ρ€Π΅ΠΏΠ»ΠΈΠΊ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π° Π½ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  5. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ряд нСдостатков:

  • ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΆΠ΄Π΅Ρ‚ примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° всСх Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ….
  • с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ числа Π½ΠΎΠ΄ Π² кластСрС ΠΌΡ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ опСрация записи ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Если с 1-Ρ‹ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ всС Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ясно, Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ 2-Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° стоит ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ. Если ΠΏΡ€ΠΈ синхронной Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡ‚Π²Π΅Ρ‚ хотя Π±Ρ‹ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΎΠ΄Ρ‹, ΠΌΡ‹ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, увСличивая число Π½ΠΎΠ΄ Π² кластСрС, Π²Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ опСрация записи сорвСтся.

МоТСм Π»ΠΈ ΠΌΡ‹ ΠΆΠ΄Π°Ρ‚ΡŒ подтвСрТдСния лишь ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΈ Π½ΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ 51% (ΠΊΠ²ΠΎΡ€ΡƒΠΌ)? Π”Π°, ΠΌΠΎΠΆΠ΅ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² классичСском Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ трСбуСтся ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡ‚ всСх Π½ΠΎΠ΄, вСдь ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΌΡ‹ смоТСм ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² кластСрС, Ρ‡Ρ‚ΠΎ являСтся нСсомнСнным прСимущСством Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π”Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ Β«ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΒ», ΠΈ Β«ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΒ» измСнСния Π±ΡƒΠ΄ΡƒΡ‚ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹:

  1. Π—Π°ΠΏΠΈΡΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΆΡƒΡ€Π½Π°Π» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  2. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  3. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  4. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠΌΠΈ.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ кластСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро, вСдь ΠΌΡ‹ Π½Π΅ Π΄Π΅Ρ€ΠΆΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΠΏΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠΉΠ΄ΡƒΡ‚ Π΄ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π΄Π° Π΅Ρ‰Π΅ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Ρ‹.

Но условиС сбрасывания Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Β«ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΒ» ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, вСдь Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ успСли Π·Π°Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ, Π° Ρƒ Π½ΠΎΠ΄Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΈΡˆΠ»ΠΈ измСнСния, Π²Ρ‹Π»Π΅Ρ‚Π΅Π» HDD, ΠΌΡ‹ тСряСм Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΎΡ‡Π΅Π½ΡŒ нСприятным послСдствиям.

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

НаконСц-Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎ полусинхронной Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ извСстСн ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ распространСн, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ прСдставляСт Π½Π΅ΠΌΠ°Π»Ρ‹ΠΉ интСрСс, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ прСимущСства ΠΊΠ°ΠΊ синхронной, Ρ‚Π°ΠΊ ΠΈ асинхронной Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΉ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ 2 ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. НС Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ»Π³ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ:

  1. Π—Π°ΠΏΠΈΡΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΆΡƒΡ€Π½Π°Π» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  2. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  3. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.
  4. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Β«ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΒ»).
  5. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ потСря Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС падСния ΠΊΠ°ΠΊ Π½ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ измСнСния, Ρ‚Π°ΠΊ ΠΈ Π½ΠΎΠ΄Ρ‹-Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ сбоя признаСтся ΠΌΠ°Π»ΠΎΠΉ, ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ риски ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ.

Но ΠΏΡ€ΠΈ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ риск Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½Ρ‹Ρ… Ρ‡Ρ‚Π΅Π½ΠΈΠΉ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сцСнарий: Π½Π° шагС 4 ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΈ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° шагС 2, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠΌ шага 2 ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π·ΠΎΡ€, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π±Π°Π·Π΅ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ.

Lose-less semisync рСпликация

Если Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ всСго лишь помСняв шаги Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° мСстами, ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½Ρ‹Ρ… Ρ‡Ρ‚Π΅Π½ΠΈΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ сцСнарии:

  1. Π—Π°ΠΏΠΈΡΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΆΡƒΡ€Π½Π°Π» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  2. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.
  3. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Β«ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΒ»).
  4. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  5. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ подтвСрТдСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ измСнСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΎΠ½ΠΈ Π·Π°Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ.

Π’Ρ‹Π²ΠΎΠ΄

Как всСгда, ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚, Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ своими прСимущСствами ΠΈ нСдостатками ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов Π·Π°Π΄Π°Ρ‡. Π­Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π²Π΅Ρ€Π½ΠΎ ΠΈ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Набор прСимущСств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ полусинхронная рСпликация, являСтся достаточно солидным ΠΈ интСрСсным, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ внимания, нСсмотря Π½Π° Π΅Π΅ ΠΌΠ°Π»ΡƒΡŽ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½Π½ΠΎΡΡ‚ΡŒ.

На этом всС. Π”ΠΎ встрСчи Π½Π° курсС!

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ