Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cells-feature-backups.md « cells « blueprints « architecture « doc - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d596bdd20789a4c47e16adf1d67393bc6346fca8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
---
stage: enablement
group: Tenant Scale
description: 'Cells: Backups'
---

<!-- vale gitlab.FutureTense = NO -->

This document is a work-in-progress and represents a very early state of the
Cells design. Significant aspects are not documented, though we expect to add
them in the future. This is one possible architecture for Cells, and we intend to
contrast this with alternatives before deciding which approach to implement.
This documentation will be kept even if we decide not to implement this so that
we can document the reasons for not choosing this approach.

# Cells: Backups

Each cells will take its own backups, and consequently have its own isolated
backup / restore procedure.

## 1. Definition

GitLab Backup takes a backup of the PostgreSQL database used by the application,
and also Git repository data.

## 2. Data flow

Each cell has a number of application databases to back up (e.g. `main`, and `ci`).

Additionally, there may be cluster-wide metadata tables (e.g. `users` table)
which is directly accesible via PostgreSQL.

## 3. Proposal

### 3.1. Cluster-wide metadata

It is currently unknown how cluster-wide metadata tables will be accessible. We
may choose to have cluster-wide metadata tables backed up separately, or have
each cell back up its copy of cluster-wide metdata tables.

### 3.2 Consistency

#### 3.2.1 Take backups independently

As each cell will communicate with each other via API, and there will be no joins
to the users table, it should be acceptable for each cell to take a backup
independently of each other.

#### 3.2.2 Enforce snapshots

We can require that each cell take a snapshot for the PostgreSQL databases at
around the same time to allow for a consistent-enough backup.

## 4. Evaluation

As the number of cells increases, it will likely not be feasible to take a
snapshot at the same time for all cells. Hence taking backups independently is
the better option.

## 4.1. Pros

## 4.2. Cons