際際滷

際際滷Share a Scribd company logo
カジュアルに
 MongoDBの
BackupC嬬h苧
      Masakazu Matsushita
          Cyberagent, Inc.
About Me
?防和 囘才 / @matsukaz
?Cyberagent, Inc.
 ?Ameba Pico (今翌井ピグ)
 ?Animal Land
?DevLOVE Sta?
MongoDBで
Backupと冱えば
mongoexport
    or
mongodump
mongoexportは
JSON/CSV侘塀で
  デ`タを竃薦
ただし
畠てのデ`タ侏を
サポ`トしている
 わけではない
參和のデ`タ侏は
   デ`タの嶢g來が
   匯何払われてしまう
data_binary    data_regex
data_date      data_oid
data_timestamp data_ref
方ミ佑
   畠てdoubleになる
> db.hoge.save( { val : 100 } );
> db.hoge.save( { val : NumberInt( 200 ) } );
                                        1 = double
> db.hoge.?nd( val : { $type : 1} );
{ _id : ObjectId("..."), val : 100 }
                                          16 = int
> db.hoge.?nd( val : { $type : 16} );
{ _id : ObjectId("..."), val : 200 }
mongoexport
(?A ?)????
mongodumpは
 BSON侘塀で
 デ`タを竃薦
デ`タは
屎しい秤鵑里泙
  竃薦される
Onlineでの
g佩も辛嬬
ただし
弌トでの旋喘を
 覿┐靴燭發
畠デ`タが匯w侭に
 竃薦されるので
 デ`タ楚に廣吭
g佩嶄は
パフォ`マンスにも
  唹する
mongorestoreも
 rgがかかる
Shardingh廠だと
  さらに}が
--看沿鉛看乙オプションは
      聞えない
 dump_兵r゛頼阻rの
餓蛍のoplogも竃薦するC嬬
mongorestoreだけ
でなくrestore瘁の
マイグレ`ションも
  rgがかかる
デ`タ楚が謹いと
ひどいことに???
    orz
MongoDBを
唯峭させていいなら
   三は酒g
Shard 1    Shard 2    Shard 3

  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc



       Shard坪のmongod1岬と
    mongocのデ`タを麗尖コピ`でOK
Shard 1    Shard 2    Shard 3

  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc



           リカバるときはデ`タを
             コピ`するだけ
Onlineで、かつ
サ`ビスへの唹を
雙えたBackupって
  竃栖ないの
そんなうまい
 なんて???
あるんです。
或?界庄温鉛な返乏
1. balancerを峭める

use con?g;
db.settings.update( { _id: "balancer" },
            { $set : { stopped: true } } , true );
2. 畠Primaryをlock
db.fsyncLock();


Shard 1      Shard 2       Shard 3

  mongod          mongod     mongod   mongoc


  mongod     厚仟されない mongod
              mongod                  mongoc

              ようにする
  mongod          mongod     mongod   mongoc
3. con?g秤鵑
         Backup
mongodump -d con?g dump_con?gdata
4. Secondaryの
     デ`タをBackup
Shard 1    Shard 2    Shard 3

  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc
5. 畠PrimaryをUnlock
db.fsyncLock();


Shard 1      Shard 2       Shard 3

  mongod          mongod     mongod   mongoc


  mongod          mongod     mongod   mongoc


  mongod          mongod     mongod   mongoc
6. balancerを嗤浸

use con?g;
db.settings.update( { _id: "balancer" },
            { $set : { stopped: false } } , true );
Backupに
  rgがかかると
lockrgがLすぎる
そこで
mongodを鯛として
 あとからゆっくり
Backupを函ったら
返乏はほぼ匯偖
1. balancerを峭める

use con?g;
db.settings.update( { _id: "balancer" },
            { $set : { stopped: true } } , true );
2. 畠Primaryをlock
db.fsyncLock();


Shard 1      Shard 2       Shard 3

  mongod          mongod     mongod   mongoc


  mongod     厚仟されない mongod
              mongod                  mongoc

              ようにする
  mongod          mongod     mongod   mongoc
3. con?g秤鵑
         Backup
mongodump -d con?g dump_con?gdata
4. Secondaryを鯛とす

Shard 1    Shard 2    Shard 3

  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc
5. 畠PrimaryをUnlock
db.fsyncLock();


Shard 1      Shard 2       Shard 3

  mongod          mongod     mongod   mongoc


  mongod          mongod     mongod   mongoc


  mongod          mongod     mongod   mongoc
6. balancerを嗤浸

use con?g;
db.settings.update( { _id: "balancer" },
            { $set : { stopped: false } } , true );
7. 鯛としたSecondary
     をBackup
Shard 1    Shard 2    Shard 3

  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc


  mongod     mongod     mongod   mongoc
8. 鯛としたSecondary
     を軟
Shard 1    Shard 2    Shard 3

  mongod     mongod     mongod   mongoc
           拱屬僕豚が
  mongod    mongod      mongod   mongoc
            函られる
  mongod     mongod     mongod   mongoc
カジュアルに
編^した泙蠅
  }なし
なお、この圭隈を
して}が軟きても
  輝圭でh┌鬘
咢采さん秤烏だと
   Secondaryの
Lockでいけるんだとか
???
そっちのがいいよね
アプリケ`ションに
    唹ないし`
 ...?= =????
Primaryと
  Secondaryの
 揖豚ズレだけS否
できるかどうかだけ
寄丘できると房うので
   Secondaryの
Lockの圭鬚妊疋Ε
ご賠
 ありがとう
ございました

More Related Content

カジュアルにMongo dbのbackupC嬬h苧