毎日の終わりにデータベースの読み取り専用スナップショットを作成し、それらを数か月間保持したいと思います。
次に、特定の(名前付き)スナップショットに対してクエリを実行できるようにしたいと思います。
これは、最小限のリソース使用量でエレガントに実現できますか(データベースの変更は非常に遅いですが、数GBのデータがあるため、ほとんどすべてのデータがすべてのスナップショットに共通です)。
毎日の終わりにデータベースの読み取り専用スナップショットを作成し、それらを数か月間保持したいと思います。
次に、特定の(名前付き)スナップショットに対してクエリを実行できるようにしたいと思います。
これは、最小限のリソース使用量でエレガントに実現できますか(データベースの変更は非常に遅いですが、数GBのデータがあるため、ほとんどすべてのデータがすべてのスナップショットに共通です)。
PostgreSQLでスナップショットを作成する通常の方法は、pg_dump/pg_restoreを使用することです。
より迅速な方法は、CREATEDATABASEを使用してデータベースのクローンを作成することです。
CREATE DATABASE my_copy_db TEMPLATE my_production_db;
これは、ダンプ/復元よりもはるかに高速です。このソリューションの唯一の欠点は、ソースデータベースに開いている接続があってはならないことです。
コピーはデフォルトでは読み取り専用ではありませんが、ユーザーからそれぞれの特権を取り消すだけで、次のことを確認できます。