Status | Authors | Coach | DRIs | Owning Stage | Created |
---|---|---|---|---|---|
proposed | - |
このドキュメントは作業中のものであり、セルズの設計のごく初期の状態を表しています。重要な点は文書化されていませんが、将来的には追加される予定です。これはCellsの可能性のあるアーキテクチャの一つであり、どのアプローチを実装するか決める前に、代替案と比較検討するつもりです。この文書化は、このアプローチを選ばなかった理由を文書化できるよう、これを実装しないと決めた場合でも残しておきます。
セルズバックアップ
各セルは独自にバックアップを取り、その結果、独立したバックアップ/リストア手順を持ちます。
1.定義
GitLabバックアップはアプリケーションで使用されるPostgreSQLデータベースとGitリポジトリデータのバックアップを取ります。
2.データフロー
各セルにはバックアップするアプリケーションデータベースがいくつかあります(例えば、main
、ci
)。さらに、PostgreSQLを介して直接アクセスできるクラスター全体のメタデータテーブル(例えば、users
テーブル)があるかもしれません。
3.提案
3.1.クラスター全体のメタデータ
クラスター全体のメタデータテーブルにどのようにアクセスするかは現在のところ不明です。クラスター全体のメタデータテーブルを個別にバックアップするか、各セルにクラスター全体のメタデータテーブルのコピーをバックアップさせるかを選択する可能性があります。
3.2 一貫性
3.2.1 独立したバックアップ
各CellはAPIを介して相互に通信し、users
テーブルへの結合は行わないため、各Cellが互いに独立してバックアップを取ることは問題ありません。
3.2.2 スナップショットの強制
各セルがPostgreSQLデータベースのスナップショットをほぼ同時に取得することを義務付けることで、十分な一貫性のあるバックアップを取ることができます。
4.評価
セルの数が増えるにつれて、全てのセルに対して同時にスナップショットを取ることは不可能になるでしょう。従って、個別にバックアップを取る方が良い選択です。