Cassandraのキースペース全体をバックアップする最良の方法は何だろうと思っていました...どう思いますか?
以前は、データフォルダをバックアップハードドライブにコピーしましたが、更新後にデータベースを復元するのに問題がありました。
最良の方法は、スナップショットを作成することです(nodetool snapshot
)。これがどのように機能するか、そしてこれをどのように使用するのが最善かについて多くを学ぶことができます Datastaxドキュメント (免責事項:私はDatastaxで働いています)。
JNAが有効になっていることを確認する必要があります(いくつかの関連する手順は このページ にあります)。そうした場合、スナップショットは非常に高速です。それらは既存の安定版へのハードリンクにすぎません。コピーする必要はありません。特定の方法でバックアップを追跡したい場合は、スナップショットを他のバックアップツール(または単にrsync、cpなど)と組み合わせることができます。
クラスターのスナップショットとバックアップを自動化してS3に保存するための簡単なpythonツールを作成しました。
https://github.com/tbarbugli/cassandra_snapshotter はgithubページであり、ドキュメントもあります。
Datastaxドキュメント を読む以外に、記事 "増分バックアップcassandra with amanda" 洞察に満ちています。増分バックアップの使用方法についてです。とスナップショット。
最後に、次の手順をお勧めします。
nodetool snapshot
nodetool clearsnapshot
そしてシンボリックリンクを削除します。nodetool flush
もう1つのオプションは、書き込まれているsstableを監視し、それらのファイルを段階的にバックアップすることです。
たとえば、 tablesnap をチェックしてください。
ドキュメントから:
Tablesnapは、inotifyを使用してディレクトリのIN_MOVED_TOイベントを監視し、新しいスレッドを生成してそのファイルをAmazon S3にアップロードすることで、その時点でディレクトリにあった他のファイルのJSON形式のリストとともにそれらに反応するスクリプトです。コピー。
Cassandraクラスターを実行する場合、この動作はSSTableの自動化されたポイントインタイムバックアップを可能にするため、非常に便利です。理論的には、tablesnapは、ファイルが一時的に書き込まれるすべてのアプリケーションで機能するはずです。 Tablesnapは、ファイルが書き込まれると不変であると想定します。