Cells: バックアップ
このドキュメントは作業中であり、Cells 設計の非常に初期の状態を表しています。重要な側面は文書化されていませんが、将来追加する予定です。これは Cells のアーキテクチャの 1 つの可能性であり、実装するアプローチを決定する前に代替案と比較検討する予定です。このアプローチを実装しないと決定した場合でも、このアプローチを選択しなかった理由を文書化できるよう、このドキュメントは保持されます。
各 Cell は独自のバックアップを取得し、その結果として独自の独立したバックアップ/リストア手順を持ちます。
1. 定義
GitLab バックアップは、アプリケーションで使用される PostgreSQL データベースと Git リポジトリデータのバックアップを取得します。
2. データフロー
各 Cell にはバックアップするアプリケーションデータベースが複数あります(例: main、ci)。
さらに、PostgreSQL 経由で直接アクセス可能なクラスター全体のメタデータテーブル(例: users テーブル)がある場合があります。
3. 提案
3.1. クラスター全体のメタデータ
クラスター全体のメタデータテーブルへのアクセス方法は現在不明です。 クラスター全体のメタデータテーブルを個別にバックアップするか、各 Cell がクラスター全体のメタデータテーブルのコピーをバックアップするかを選択することができます。
3.2 一貫性
3.2.1 独立してバックアップを取得する
各 Cell は API を通じて互いに通信し、users テーブルへの結合がないため、各 Cell が独立してバックアップを取得することは許容されるはずです。
3.2.2 スナップショットを強制する
一貫したバックアップを取得するために、各 Cell がほぼ同時に PostgreSQL データベースのスナップショットを取得することを要求することができます。
4. 評価
Cells の数が増加するにつれて、すべての Cells で同時にスナップショットを取得することは現実的でなくなる可能性があります。 そのため、独立してバックアップを取得する方が良い選択肢です。
