SlideShare a Scribd company logo
MongoDB
ghost sync & slaveDelay
こんなログ見たことある?
“replica set ghost target no good”



               -2 -
What is GHOST ?
replica set ghost target no good


                 Sync target

Primary                        Secondary

          Sync target




           Secondary
                    -4 -
replica set ghost target no good


                 Sync target

Primary                        Secondary

           Sync fail




           Secondary
                       -5 -
replica set ghost target no good


              Sync target

Primary                               Secondary

                            Sync target




           Secondary
                -6 -
replica set ghost target no good


                 Sync target

Primary                                  Secondary
          Ghost slave


                               Sync target


                                         Ghost target


           Secondary
                   -7 -
NO GOOD ?
replica set ghost target no good


              Sync target

Primary                               Secondary

                            Sync target




           Secondary
                -9 -
replica set ghost target no good


               Sync fail

Primary                              Secondary

                           Sync target




           Secondary
                -10 -
replica set ghost target no good



Primary                               Secondary
              Sync target


                            Sync target




           Secondary
                -11 -
replica set ghost target no good



Primary                               Secondary
              Sync target


                            Sync target



 “replica set ghost target no good”
           Secondary
                -12 -
NO GOOD !!
 (2.0.X系 )
replica set ghost target no good

■ Ghost sync
  ●   Replica-Setの可用性を向上する為のユニークな機能
      –   ネットワーク部分障害時などに威力を発揮
      –   primary oplog 溢れ対策に一部のsecondaryに巨大なoplogを用意し
       ピーク時間帯をやり過ごしたり
      –   新規secondaryをjoinする際の大量同期に使ったり


  ●   ただ2.0系には循環参照のバグあり!!
      –   2.2系を使うこと




                                -14 -
Ghost sync on 2.3/2.4
proper ghost sync


                   Sync target

Primary                          Secondary

             Sync fail




             Secondary
                         -16 -
proper ghost sync


                Sync target

Primary                                 Secondary

                              Sync target




             Secondary
                  -17 -
proper ghost sync


                   Sync target

Primary                                    Secondary
            Ghost slave


                                 Sync target


                                           Ghost target


             Secondary
                     -18 -
proper ghost sync


                   Sync target

Primary                          Secondary
                          経路が復旧すれば
            Sync target   直ちに同期先が戻る



             Secondary
                     -19 -
Ghost sync on 2.3/2.4

■ Sync details
   ●   “settings.chainingAllowed=false” (2.2系以上)の場合
        常にPrimaryから同期する
       –   syncFrom()による指定はchainingAllowedより優先
       –   syncFrom()の設定は単にonメモリに保存され、クリアできない。(要再起動)
       –   syncForm()の設定は同期に失敗するとクリアされる。


   ●   PrimaryのopTimeをチェックし
        新鮮で近いノードを同期ターゲットとして選択する
       –   新鮮:自ノードより新しくPrimaryから30秒以内の鮮度
       –   近い:ping の応答時間
       –   slaveDelayやhiddenではない
       –   vetoリスト(拒否リスト)に入っていない
                                   -20 -
What is slaveDelay ?
slaveDelay



Primary                         Secondary

          Sync target




             Secondary
                slaveDelay=60


                   -22 -
slaveDelay
   Inset A

      A


Primary                        Secondary



             Secondary
               slaveDelay=60


                  -23 -
slaveDelay

          Sync immediately
     A                         A

Primary                      Secondary



           Secondary
             slaveDelay=60


                -24 -
slaveDelay
  Inset B

  B    A                        A

Primary                       Secondary



            Secondary
              slaveDelay=60


                 -25 -
slaveDelay

          Sync immediately
  B   A                        A   B

Primary                      Secondary



           Secondary
             slaveDelay=60


                -26 -
slaveDelay

  B   A                            A      B

Primary                      Secondary

            Sync A after 60 secs from “Insert A”

                   A
          Secondary
            slaveDelay=60


               -27 -
slaveDelay
■ Replica-Set コンフィグで指定する
  ●   slaveDelay=<seconds> を指定したノードはPRIMARYから
       指定秒遅れたコピーを持つ様に動作する。
  ●   priority=0 を同時に指定しなければならない。
      –   これはslaveDelayノードはPRIMARYに成れない事を意味する
  ●   殆どの場合hidden=true と併用した方が良い。
      –   大抵、クライアント(アプリ)は最新のデータを読みたいはず。
  ●   slaveDelayはヒューマンエラー対策として有用!
       例えば、間違えて“db.dropDatabase()” を発行してしまった場合
       通常、全てのsecondary達は直ちにデータファイルを削除してしまう。
       よって、データは完全に失われてしまう。
       しかしslaveDelayノードでは遅延期間内はまだ消えてない!
           急いでslaveDelayノードを落とせ!!(同期を防ぐ)

                             -28 -
Ghost sync & slaveDelay
Ghost sync & slaveDelay


                 Sync target

Primary                                  Secondary
          Ghost slave


                               Sync target


                                         Ghost target

             Secondary
               slaveDelay=60


                   -30 -
Ghost sync & slaveDelay
   Inset A

      A


Primary                       Secondary



             Secondary
              slaveDelay=60


                 -31 -
Ghost sync & slaveDelay

          Sync immediately
     A                         A

Primary                      Secondary



           Secondary
             slaveDelay=60


                -32 -
Ghost sync & slaveDelay
  Inset B

  B    A                        A

Primary                       Secondary



             Secondary
              slaveDelay=60


                 -33 -
Ghost sync & slaveDelay

            Sync immediately
  B   A                          A   B

Primary                        Secondary



             Secondary
               slaveDelay=60


                  -34 -
Ghost sync & slaveDelay

  B   A                              A      B

Primary                        Secondary

              Sync A after 60 secs from “Insert A”

                     A
             Secondary
              slaveDelay=60


                 -35 -
It's OK !!
Ghost sync & slaveDelay



Primary                     Secondary



           Secondary
            slaveDelay=60


               -37 -
Ghost sync & slaveDelay
   Inset A

      A


Primary                       Secondary



             Secondary
              slaveDelay=60


                 -38 -
Ghost sync & slaveDelay
  Inset B

  B    A


Primary                       Secondary



             Secondary
              slaveDelay=60


                 -39 -
Ghost sync & slaveDelay

     B     A                                    A

 Primary                                  Secondary
                                         Sync immediately,
                                         but delayed implicitly
Sync A after 60 secs from “Insert A”

                                A
                      Secondary
                         slaveDelay=60


                            -40 -
No good ...
Ghost sync & slaveDelay
■ Ghost syncとslaveDelayは相性が悪い
  slaveDelay ノードはPRIMARYノードから遅れているので同期元として
  選ばれるべきでは無い。


   slaveOkで動作しているクライアントはPrimaryのデータ更新しても
  secondaryからはからは古いデータしか読めない状況になる!!


  slaveDelayノードを同期元として選んでしまったノードは、クライアン
  ト(アプリ)からリクエストを受けてはならない。
  ( MAINTAINANCE か HIDDENとして扱われるべき)




                   -42 -
[slaveDelay with Ghostsync]
    https://jira.mongodb.org/browse/SERVER-8476



              対策よろ。。
補足.
Vote with ghost sync



Primary                 Secondary




Secondary Secondary Secondary
              -45 -
Vote with ghost sync



Primary                 Secondary




Secondary Secondary Secondary
              -46 -
Vote with ghost sync



Primary                 Secondary




Secondary Secondary Secondary
              -47 -
Vote with ghost sync



Primary                 Secondary




Secondary Secondary Secondary
              -48 -
Vote with ghost sync



Secondary                Primary




Secondary Secondary Secondary
              -49 -
Vote with ghost sync



Secondary               Secondary




Secondary   Primary   Secondary
              -50 -

More Related Content

Viewers also liked

элективный курс по химии
элективный курс по химииэлективный курс по химии
элективный курс по химии
loksal
 
презентация элективного курса по биологии
презентация элективного курса по биологиипрезентация элективного курса по биологии
презентация элективного курса по биологии
loksal
 
Indefinite quantities
Indefinite quantitiesIndefinite quantities
Indefinite quantities
teacherhector
 
презентация элективного курса по черчению
презентация элективного курса по черчениюпрезентация элективного курса по черчению
презентация элективного курса по черчению
loksal
 
Copyright crash course part 3
Copyright crash course part 3Copyright crash course part 3
Copyright crash course part 3
gsalas10
 
презентация элективного курса по математике
презентация элективного курса по математикепрезентация элективного курса по математике
презентация элективного курса по математике
loksal
 
Hist 141 panama & los angeles
Hist 141   panama & los angelesHist 141   panama & los angeles
Hist 141 panama & los angeles
flip7rider
 
Copyright crash course g salas
Copyright crash course g salasCopyright crash course g salas
Copyright crash course g salas
gsalas10
 
El primer condicional
El primer condicionalEl primer condicional
El primer condicional
teacherhector
 
Optimal Management on Startup Village
Optimal Management on Startup VillageOptimal Management on Startup Village
Optimal Management on Startup Village
Andrey Sukhobokov
 

Viewers also liked (17)

элективный курс по химии
элективный курс по химииэлективный курс по химии
элективный курс по химии
 
Bucerias
BuceriasBucerias
Bucerias
 
Jaarverslag 2011/2012
Jaarverslag 2011/2012Jaarverslag 2011/2012
Jaarverslag 2011/2012
 
презентация элективного курса по биологии
презентация элективного курса по биологиипрезентация элективного курса по биологии
презентация элективного курса по биологии
 
Indefinite quantities
Indefinite quantitiesIndefinite quantities
Indefinite quantities
 
My life project
My life projectMy life project
My life project
 
Core values 2011 08-01
Core values 2011 08-01Core values 2011 08-01
Core values 2011 08-01
 
презентация элективного курса по черчению
презентация элективного курса по черчениюпрезентация элективного курса по черчению
презентация элективного курса по черчению
 
Copyright crash course part 3
Copyright crash course part 3Copyright crash course part 3
Copyright crash course part 3
 
javascriptの基礎
javascriptの基礎javascriptの基礎
javascriptの基礎
 
презентация элективного курса по математике
презентация элективного курса по математикепрезентация элективного курса по математике
презентация элективного курса по математике
 
Hist 141 panama & los angeles
Hist 141   panama & los angelesHist 141   panama & los angeles
Hist 141 panama & los angeles
 
Copyright crash course g salas
Copyright crash course g salasCopyright crash course g salas
Copyright crash course g salas
 
El primer condicional
El primer condicionalEl primer condicional
El primer condicional
 
L’aparell digestiu
L’aparell  digestiuL’aparell  digestiu
L’aparell digestiu
 
Optimal Management on Startup Village
Optimal Management on Startup VillageOptimal Management on Startup Village
Optimal Management on Startup Village
 
Html5fun@東京 Bootstrapにアニメーションを付けよう
Html5fun@東京 Bootstrapにアニメーションを付けようHtml5fun@東京 Bootstrapにアニメーションを付けよう
Html5fun@東京 Bootstrapにアニメーションを付けよう
 

More from Hiroaki Kubota (10)

Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clustersDb tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
 
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
 
MongoDBで自然言語処理
MongoDBで自然言語処理MongoDBで自然言語処理
MongoDBで自然言語処理
 
MongoDBJP 納涼もんご祭り
MongoDBJP 納涼もんご祭りMongoDBJP 納涼もんご祭り
MongoDBJP 納涼もんご祭り
 
Why mincore() returns different value of stat ?
Why mincore() returns different value of stat ?Why mincore() returns different value of stat ?
Why mincore() returns different value of stat ?
 
Mongo ghostsync and slaveDelay
Mongo ghostsync and slaveDelayMongo ghostsync and slaveDelay
Mongo ghostsync and slaveDelay
 
C10K on Mongo's sharding
C10K on Mongo's shardingC10K on Mongo's sharding
C10K on Mongo's sharding
 
Cockatoo
CockatooCockatoo
Cockatoo
 
MongoTokyo
MongoTokyoMongoTokyo
MongoTokyo
 
Albatross
AlbatrossAlbatross
Albatross
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (11)

論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 

Mongo ghostsync and slaveDelay (Japanease)

  • 1. MongoDB ghost sync & slaveDelay
  • 4. replica set ghost target no good Sync target Primary Secondary Sync target Secondary -4 -
  • 5. replica set ghost target no good Sync target Primary Secondary Sync fail Secondary -5 -
  • 6. replica set ghost target no good Sync target Primary Secondary Sync target Secondary -6 -
  • 7. replica set ghost target no good Sync target Primary Secondary Ghost slave Sync target Ghost target Secondary -7 -
  • 9. replica set ghost target no good Sync target Primary Secondary Sync target Secondary -9 -
  • 10. replica set ghost target no good Sync fail Primary Secondary Sync target Secondary -10 -
  • 11. replica set ghost target no good Primary Secondary Sync target Sync target Secondary -11 -
  • 12. replica set ghost target no good Primary Secondary Sync target Sync target “replica set ghost target no good” Secondary -12 -
  • 13. NO GOOD !! (2.0.X系 )
  • 14. replica set ghost target no good ■ Ghost sync ● Replica-Setの可用性を向上する為のユニークな機能 – ネットワーク部分障害時などに威力を発揮 – primary oplog 溢れ対策に一部のsecondaryに巨大なoplogを用意し  ピーク時間帯をやり過ごしたり – 新規secondaryをjoinする際の大量同期に使ったり ● ただ2.0系には循環参照のバグあり!! – 2.2系を使うこと -14 -
  • 15. Ghost sync on 2.3/2.4
  • 16. proper ghost sync Sync target Primary Secondary Sync fail Secondary -16 -
  • 17. proper ghost sync Sync target Primary Secondary Sync target Secondary -17 -
  • 18. proper ghost sync Sync target Primary Secondary Ghost slave Sync target Ghost target Secondary -18 -
  • 19. proper ghost sync Sync target Primary Secondary 経路が復旧すれば Sync target 直ちに同期先が戻る Secondary -19 -
  • 20. Ghost sync on 2.3/2.4 ■ Sync details ● “settings.chainingAllowed=false” (2.2系以上)の場合  常にPrimaryから同期する – syncFrom()による指定はchainingAllowedより優先 – syncFrom()の設定は単にonメモリに保存され、クリアできない。(要再起動) – syncForm()の設定は同期に失敗するとクリアされる。 ● PrimaryのopTimeをチェックし  新鮮で近いノードを同期ターゲットとして選択する – 新鮮:自ノードより新しくPrimaryから30秒以内の鮮度 – 近い:ping の応答時間 – slaveDelayやhiddenではない – vetoリスト(拒否リスト)に入っていない -20 -
  • 22. slaveDelay Primary Secondary Sync target Secondary slaveDelay=60 -22 -
  • 23. slaveDelay Inset A A Primary Secondary Secondary slaveDelay=60 -23 -
  • 24. slaveDelay Sync immediately A A Primary Secondary Secondary slaveDelay=60 -24 -
  • 25. slaveDelay Inset B B A A Primary Secondary Secondary slaveDelay=60 -25 -
  • 26. slaveDelay Sync immediately B A A B Primary Secondary Secondary slaveDelay=60 -26 -
  • 27. slaveDelay B A A B Primary Secondary Sync A after 60 secs from “Insert A” A Secondary slaveDelay=60 -27 -
  • 28. slaveDelay ■ Replica-Set コンフィグで指定する ● slaveDelay=<seconds> を指定したノードはPRIMARYから  指定秒遅れたコピーを持つ様に動作する。 ● priority=0 を同時に指定しなければならない。 – これはslaveDelayノードはPRIMARYに成れない事を意味する ● 殆どの場合hidden=true と併用した方が良い。 – 大抵、クライアント(アプリ)は最新のデータを読みたいはず。 ● slaveDelayはヒューマンエラー対策として有用!  例えば、間違えて“db.dropDatabase()” を発行してしまった場合 通常、全てのsecondary達は直ちにデータファイルを削除してしまう。  よって、データは完全に失われてしまう。  しかしslaveDelayノードでは遅延期間内はまだ消えてない! 急いでslaveDelayノードを落とせ!!(同期を防ぐ) -28 -
  • 29. Ghost sync & slaveDelay
  • 30. Ghost sync & slaveDelay Sync target Primary Secondary Ghost slave Sync target Ghost target Secondary slaveDelay=60 -30 -
  • 31. Ghost sync & slaveDelay Inset A A Primary Secondary Secondary slaveDelay=60 -31 -
  • 32. Ghost sync & slaveDelay Sync immediately A A Primary Secondary Secondary slaveDelay=60 -32 -
  • 33. Ghost sync & slaveDelay Inset B B A A Primary Secondary Secondary slaveDelay=60 -33 -
  • 34. Ghost sync & slaveDelay Sync immediately B A A B Primary Secondary Secondary slaveDelay=60 -34 -
  • 35. Ghost sync & slaveDelay B A A B Primary Secondary Sync A after 60 secs from “Insert A” A Secondary slaveDelay=60 -35 -
  • 37. Ghost sync & slaveDelay Primary Secondary Secondary slaveDelay=60 -37 -
  • 38. Ghost sync & slaveDelay Inset A A Primary Secondary Secondary slaveDelay=60 -38 -
  • 39. Ghost sync & slaveDelay Inset B B A Primary Secondary Secondary slaveDelay=60 -39 -
  • 40. Ghost sync & slaveDelay B A A Primary Secondary Sync immediately, but delayed implicitly Sync A after 60 secs from “Insert A” A Secondary slaveDelay=60 -40 -
  • 42. Ghost sync & slaveDelay ■ Ghost syncとslaveDelayは相性が悪い slaveDelay ノードはPRIMARYノードから遅れているので同期元として 選ばれるべきでは無い。 slaveOkで動作しているクライアントはPrimaryのデータ更新しても secondaryからはからは古いデータしか読めない状況になる!! slaveDelayノードを同期元として選んでしまったノードは、クライアン ト(アプリ)からリクエストを受けてはならない。 ( MAINTAINANCE か HIDDENとして扱われるべき) -42 -
  • 43. [slaveDelay with Ghostsync] https://jira.mongodb.org/browse/SERVER-8476 対策よろ。。
  • 45. Vote with ghost sync Primary Secondary Secondary Secondary Secondary -45 -
  • 46. Vote with ghost sync Primary Secondary Secondary Secondary Secondary -46 -
  • 47. Vote with ghost sync Primary Secondary Secondary Secondary Secondary -47 -
  • 48. Vote with ghost sync Primary Secondary Secondary Secondary Secondary -48 -
  • 49. Vote with ghost sync Secondary Primary Secondary Secondary Secondary -49 -
  • 50. Vote with ghost sync Secondary Secondary Secondary Primary Secondary -50 -