MongoDB の定期バックアップ

前提条件

必要なもの

  • docker
  • バックアップファイルをアップロードするための AWS S3 バケット
    • S3 バケットへのアクセス権を持った IAM ユーザーのアクセスキーおよびシークレットキー

TIP

事前に MongoDB のバックアップ/リストア ページを確認することをお勧めします

バックアップ用コンテナによる管理

  1. CRONMODE を true に設定したコンテナを起動します

    docker run --rm \
      -e MONGODB_HOST=<Target MongoDB Host> \
      -e AWS_ACCESS_KEY_ID=<Your IAM Access Key ID> \
      -e AWS_SECRET_ACCESS_KEY=<Your IAM Secret Access Key> \
      -e S3_TARGET_BUCKET_URL=<Target S3 Bucket URL (s3://...)> \
      -e CRONMODE=true \
      -e "CRON_EXPRESSION=0 4 * * *" \
      weseek/mongodb-awesome-backup
    
  2. 対象となる MongoDB サーバーの全てのデータベースを、毎日 AM 4:00 にバックアップするコンテナが起動します

バックアップの世代管理

  • (執筆者・PR募集)

TIP

その他のオプションは weseek/mongodb-awesome-backup (opens new window) を参照してください

docker-compose による管理

TIP

GROWI を growi-docker-compose で管理している場合、更に簡単にバックアップ用コンテナを起動できます

  1. clone

    git clone https://github.com/weseek/growi-docker-compose.git growi
    cd growi
    
  2. docker-compose.override.yml をルートディレクトリにコピー

    cp -p examples/backup-mongodb-data/docker-compose.override.yml .
    
  1. docker-compose.override.yml を編集し、CRON_EXPRESSION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, S3_TARGET_BUCKET_URLへ環境に合わせた値を入力します

    (略)
    ...
    environment:
      - CRONMODE=true
      - CRON_EXPRESSION=0 4 * * *
      - AWS_ACCESS_KEY_ID=${Your IAM Access Key ID}
      - AWS_SECRET_ACCESS_KEY=${Your IAM Secret Access Key}
      - S3_TARGET_BUCKET_URL=s3://${Your Bucket Name}/
    ...
    (略)
    
  2. docker-compose up
    

Google Cloud Platform による管理

  • (執筆者・PR募集)