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

sql_migrations.md « doc - gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e6832fdd4bf02d070705314e7df71e69423e909b (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# SQL migrations in Praefect

SQL migration files are stored in `/internal/praefect/datastore/migrations`.

The underlying migration engine we use is [github.com/rubenv/sql-migrate](https://github.com/rubenv/sql-migrate).

To generate a new migration, run the `_support/new-migration` script from the top level of your Gitaly checkout.

Praefect SQL migrations should be applied automatically when you deploy Praefect. If you want to run them manually, run:

```
praefect -config /path/to/config.toml sql-migrate
```

By default, the migration will ignore any unknown migrations that are
not known by the Praefect binary.

The `-ignore-unknown=false` will disable this behavior:

```shell
praefect -config /path/to/config.toml sql-migrate -ignore-unknown=false
```

## Showing the status of migrations

To see which migrations have been applied, run:

```
praefect -config /path/to/config.toml sql-migrate-status
```

For example, the output may look like:

```
+----------------------------------------+--------------------------------------+
|               MIGRATION                |               APPLIED                |
+----------------------------------------+--------------------------------------+
| 20200109161404_hello_world             | 2020-02-26 16:00:32.486129 -0800 PST |
| 20200113151438_1_test_migration        | 2020-02-26 16:00:32.486871 -0800 PST |
| 20200224220728_job_queue               | 2020-03-25 16:27:21.384917 -0700 PDT |
| 20200324001604_add_sql_election_tables | no                                   |
| 20200401010230_add_some_table          | unknown migration                    |
+----------------------------------------+--------------------------------------+
```

The first column contains the migration ID, and the second contains one of three items:

1. The date on which the migration was applied
2. `no` if the migration has not yet been applied
3. `unknown migration` if the migration is not known by the current Praefect binary

## Rolling back migrations

Rolling back SQL migrations in Praefect works a little differently
from ActiveRecord. It is a three step process.

### 1. Decide how many steps you want to roll back

Count the number of migrations you want to roll back.

### 2. Perform a dry run and verify that the right migrations are getting rolled back

```
praefect -config /path/to/config.toml sql-migrate-down NUM_ROLLBACK
```

This will perform a dry run and print the list of migrations that
would be rolled back. Verify that these are the migrations you want to
roll back.

### 3. Perform the rollback

We use the same command as before, but we pass `-f` to indicate we
want destructive changes (the rollbacks) to happen.

```
praefect -config /path/to/config.toml sql-migrate-down -f NUM_ROLLBACK
```