🏠 ホーム
nginx
apache
ネットワーク
Linux
根本の仕組み
クラウド

MongoDBのバックアップ戦略:コスパと速さを両立するには

  インフラ >     ネットワーク >  

MongoDBのバックアップは悩みどころです。mongodump のような論理バックアップは小規模では便利ですが、データ量が増えると処理時間が膨大になり、本番DBに大きな負荷をかけてしまいます。差分バックアップができないため、毎回フルで吐き出す必要があるのも難点です。そこで今回は LVMスナップショットとクラウドストレージ(Wasabi)を組み合わせる ことで、コスパと速さを両立する戦略を紹介します。


なぜLVMスナップショットなのか?

LVMスナップショットの仕組みと注意点


スナップショットの保存先にWasabiを選ぶ理由

ローカルディスクにスナップショットを保持していても、物理障害が起これば一緒に失われるリスクがあります。そこで、スナップショットをイメージファイルとして外部ストレージに退避するのが重要です。候補としてはAWS S3やGoogle Cloud Storageなどがありますが、コスト面で注目すべきは Wasabi です。

つまり「安い・速い・シンプル」の三拍子が揃っているのがWasabiの魅力です。


実運用イメージ

  1. MongoDBデータ用のLVMボリュームを作成

    lvcreate -L 100G -n mongodata vg0
    mkfs.xfs /dev/vg0/mongodata
    mount /dev/vg0/mongodata /var/lib/mongodb
    
  2. スナップショットを作成(一瞬で完了)

    lvcreate -s -n mongodata_snap -L 10G /dev/vg0/mongodata
    
  3. スナップショットをファイル化して保存

    dd if=/dev/vg0/mongodata_snap of=/backup/mongodata_snap.img bs=1M
    
  4. Wasabiへアップロード(AWS CLI互換で可能)

    aws --endpoint-url=https://s3.wasabisys.com s3 cp /backup/mongodata_snap.img s3://my-mongo-backup/
    
  5. スナップショットを削除してI/O負荷を解消

    lvremove /dev/vg0/mongodata_snap
    

リカバリ手順

  1. Wasabi から取得

    aws --endpoint-url=https://s3.wasabisys.com s3 cp s3://my-mongo-backup/mongodata_snap.img /restore/mongodata_snap.img
    
  2. 復元先ボリュームを作成

    lvcreate -L 100G -n mongodata_restore vg0
    
  3. イメージを書き戻し

    dd if=/restore/mongodata_snap.img of=/dev/vg0/mongodata_restore bs=1M
    
  4. マウントして確認

    mount /dev/vg0/mongodata_restore /mnt/mongodata_restore
    ls /mnt/mongodata_restore
    

    /var/lib/mongodb と同じデータが確認できます。

  5. 必要に応じてMongoDBを起動

    • フルリストア: /var/lib/mongodb を空にしてコピーし戻す

    • 部分的にデータを取り出す: /mnt/mongodata_restore から必要なファイルだけ取得


コストと速さのバランス


まとめ

MongoDBのバックアップを「コスパ」と「速さ」の両面で最適化するなら、

という構成がベストバランスです。クラウド事業者が提供するスナップショット機能に頼らず、自前の物理サーバやオンプレ環境でも実現可能なのもポイントです。特に中小規模システムでは、コストを抑えつつ堅牢なバックアップ戦略を構築できます。

登録日:

更新日:

by

コメント         tweetでコメント