Mongo ghostsync and slaveDelay (Japanease)
Upcoming SlideShare
Loading in...5
×
 

Mongo ghostsync and slaveDelay (Japanease)

on

  • 937 views

 

Statistics

Views

Total Views
937
Views on SlideShare
754
Embed Views
183

Actions

Likes
1
Downloads
1
Comments
0

3 Embeds 183

http://www3441ui.sakura.ne.jp 175
http://ikemon.fy12.cybird.ne.jp 6
https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Mongo ghostsync and slaveDelay (Japanease) Mongo ghostsync and slaveDelay (Japanease) Presentation Transcript

  • MongoDBghost sync & slaveDelay
  • こんなログ見たことある?“replica set ghost target no good” -2 -
  • What is GHOST ?
  • replica set ghost target no good Sync targetPrimary Secondary Sync target Secondary -4 -
  • replica set ghost target no good Sync targetPrimary Secondary Sync fail Secondary -5 -
  • replica set ghost target no good Sync targetPrimary Secondary Sync target Secondary -6 -
  • replica set ghost target no good Sync targetPrimary Secondary Ghost slave Sync target Ghost target Secondary -7 -
  • NO GOOD ?
  • replica set ghost target no good Sync targetPrimary Secondary Sync target Secondary -9 -
  • replica set ghost target no good Sync failPrimary Secondary Sync target Secondary -10 -
  • replica set ghost target no goodPrimary Secondary Sync target Sync target Secondary -11 -
  • replica set ghost target no goodPrimary 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 targetPrimary Secondary Sync fail Secondary -16 -
  • proper ghost sync Sync targetPrimary Secondary Sync target Secondary -17 -
  • proper ghost sync Sync targetPrimary Secondary Ghost slave Sync target Ghost target Secondary -18 -
  • proper ghost sync Sync targetPrimary 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 ?
  • slaveDelayPrimary Secondary Sync target Secondary slaveDelay=60 -22 -
  • slaveDelay Inset A APrimary Secondary Secondary slaveDelay=60 -23 -
  • slaveDelay Sync immediately A APrimary Secondary Secondary slaveDelay=60 -24 -
  • slaveDelay Inset B B A APrimary Secondary Secondary slaveDelay=60 -25 -
  • slaveDelay Sync immediately B A A BPrimary Secondary Secondary slaveDelay=60 -26 -
  • slaveDelay B A A BPrimary 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 targetPrimary Secondary Ghost slave Sync target Ghost target Secondary slaveDelay=60 -30 -
  • Ghost sync & slaveDelay Inset A APrimary Secondary Secondary slaveDelay=60 -31 -
  • Ghost sync & slaveDelay Sync immediately A APrimary Secondary Secondary slaveDelay=60 -32 -
  • Ghost sync & slaveDelay Inset B B A APrimary Secondary Secondary slaveDelay=60 -33 -
  • Ghost sync & slaveDelay Sync immediately B A A BPrimary Secondary Secondary slaveDelay=60 -34 -
  • Ghost sync & slaveDelay B A A BPrimary Secondary Sync A after 60 secs from “Insert A” A Secondary slaveDelay=60 -35 -
  • Its OK !!
  • Ghost sync & slaveDelayPrimary Secondary Secondary slaveDelay=60 -37 -
  • Ghost sync & slaveDelay Inset A APrimary Secondary Secondary slaveDelay=60 -38 -
  • Ghost sync & slaveDelay Inset B B APrimary Secondary Secondary slaveDelay=60 -39 -
  • Ghost sync & slaveDelay B A A Primary Secondary Sync immediately, but delayed implicitlySync 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 syncPrimary SecondarySecondary Secondary Secondary -45 -
  • Vote with ghost syncPrimary SecondarySecondary Secondary Secondary -46 -
  • Vote with ghost syncPrimary SecondarySecondary Secondary Secondary -47 -
  • Vote with ghost syncPrimary SecondarySecondary Secondary Secondary -48 -
  • Vote with ghost syncSecondary PrimarySecondary Secondary Secondary -49 -
  • Vote with ghost syncSecondary SecondarySecondary Primary Secondary -50 -