マイクロサービスマルチテナントアプリケーションでのテナントごとのバックアップ/復元に関して、ベストプラクティス、経験、またはガイドラインはありますか?
私の場合、全体として定期的にバックアップされる複数のPostgresサーバーがあります。それぞれにFlywayを使用して移行される単一のデータベースが含まれています。単一のデータベースには、すべてのテナントのデータを含むすべてのテーブルを持つ1つのスキーマが含まれています。テナントはUUIDで識別され、すべてのデータには外部キーの関係があるため、 1つのテナントを簡単に削除できます。
ここで、個々のテナントの復元を実行できるようにする必要があります。これまでのところ、トピック全体についてはほとんどわかりませんが、これまでに思いついた唯一のプロセスは次のとおりです。
ただし、これを実行または自動化することは、私にとっては不釣り合いな努力のようです。私は特に、このプロセスを単純化できる代替(より単純な)アプローチ、ツール、またはデータベース、または他の人々がこの問題に取り組む方法を実際に経験することを探しています。
Postgresには、テーブルの行のサブセットを意味的にフェレットアウトする機能はありません。私が聞いた他のデータベースもしません。
関連する各テーブルから1つのテナントの行のみを取得するには、独自のコードを記述する必要があります。このコードはアプリ内にある場合もあれば、Postgres内のサーバー上で実行される場合もあります。
また、テナントによって分割されていない他のテーブルも、各テナントのバックアップにコピーする必要があるかどうかを決定する必要があります。
一部のデータベースベンダーがマルチテナンシーを明示的にサポートする機能を検討していると聞きました。データベースは、各テナントのデータを個別に検討し、論理的または物理的なサイロに保管する必要があることを理解します。しかし、私はそのような製品が生産の準備ができていることをまだ知りません。