2

本番環境で実行されている TokuMX サーバーのリモート データベースのバックアップに関していくつか質問があります (シャーディングとレプリケーションはありません)。単一の句は、実行中の Tokumx インスタンスを停止しないことです。

  1. 実行中の TokuMX サーバーのホット バックアップを作成する最良の方法は何ですか (エンタープライズ バージョンの TokuMX ホット バックアップを除く)。

  2. MongoDB の推奨されるバックアップ アプローチに関する質問:

    [backup-host]# mongodump --host mongodb-host --port 27017 --db mongodevdb --username mongouser --password mongopwd
    
    • このコマンドは、ホット バックアップの作成に適していますか?
    • このコマンドを発行するときは、どのポートを使用すればよいですか?
    • このコマンドを cron で使用して毎日実行するのは良い方法ですか?
    • このコマンドに落とし穴はありますか?
4

1 に答える 1

2

免責事項: 私は Tokutek で働いており、TokuMX に取り組んでいるエンジニアです。

TokuMX のバックアップを作成する「最善の」方法はありません。各アプリケーションは異なるため、すべてのオプションを理解し、自分で決定することをお勧めします。

TokuMX のバックアップ オプションは次のとおりです。

  1. エンタープライズ ホット バックアップ。
  2. ファイルシステム レベルのスナップショット (LVM、EBS、xfs_freeze) で、dbpath と logDir のすべてをコピーします。
  3. モンゴダンプを使用。

クライアント スレッドが何もしていない場合でも、バックグラウンド スレッドは引き続きファイル システムに書き込みを行うため、 fsyncLock は機能しないことに注意してください。fsyncLock のみを使用すると、バックアップが破損する可能性があります。

ファイルシステム スナップショットとエンタープライズ ホット バックアップの両方には、シリアル化された圧縮データをコピーするという利点があるため、すべてのコレクションをクエリし、圧縮されていない BSON データをネットワーク経由で転送するコストを回避できます。さらに、これらのオプションは最も重要なデータに関するキャッシュ テーブル内の情報を破壊しませんが、mongodump はすべてをページインさせ、アプリケーションに役立つデータを削除する可能性があります。

エンタープライズ ホット バックアップには、ファイル システム レベルのスナップショットよりも安価であり (スナップショットの場合のように余分なスペースを予約する必要がない)、I/O クォータを満たすために調整できるという追加の利点があります。バックアップの状態は、バックアップの開始時ではなく、バックアップの完了時の状態です。したがって、バックアップのためにデータをコピーするのに 12 時間かかる場合、ファイルシステム レベルのスナップショット バックアップは、ホット バックアップ プラグインで作成された同等のバックアップよりも 12 時間遅れます。

パフォーマンス、キャッシュの無効化、ネットワーク帯域幅、または最新性を気にしないのであれば、単純な用途では mongodump が最適なオプションかもしれません。また、単一のデータベースまたはコレクションのバックアップをサポートする唯一のオプションでもあります。

mongodump の場合、その使用法は MongoDB の場合と同じです。サーバーが実行されているホストとポートを使用する必要があります。デフォルトは 27017 です。これがデフォルトの場合、 --port オプションを指定する必要はありません。

間違いなくcronで毎日実行できます。次のようなことをお勧めします:

SHELL=/bin/bash
0 0 * * * /usr/bin/mongodump --host <host> -o "/var/lib/backup/tokumx-backup-$(date +%Y%m%d)"

mongodump の主な落とし穴は、より高価であり、どのデータが重要であるかを示すキャッシュ テーブル内の情報を破壊することです。また、ホット バックアップやファイル システム レベルのスナップショット バックアップのように、複数のコレクションにわたって完全に一貫性のあるスナップショットを取得することもできません。mongodump には、あるコレクションの一部の書き込みの影響が含まれていて、別のコレクションの以前の書き込みの影響が含まれていない場合があります。

また、古いバックアップを期限切れにするためのスキームを定義することも必要になると思います。

于 2014-03-22T20:02:06.667 に答える