OmnibusインストールされたGitLab 13.5.3のPostgreSQLを12.4にアップグレードした話

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

# 0. はじめに
ここ1年ぐらいのOmnibus GitLabは立て続けにPostgreSQLがアップグレードされました。
2019年末にPostgreSQL 9.6系だったGitLabがPostgreSQL 10系にアップグレードされました。
2020年5月に、PostgreSQL 10系が11系にアップグレードされ、
2020年10月に、PostgreSQL 12系のサポートが追加されました。

■2019年12月10日 
OmnibusインストールされたGitLabのPostgreSQLを9.6.14から10.9にアップグレードした話 - Qiita
https://qiita.com/ynott/items/653236f1a5c2ab8cf69f

■2020年05月03日
OmnibusインストールされたGitLab 12.10のPostgreSQLを10.12から11.7にアップグレードした話 - Qiita
https://qiita.com/ynott/items/3b076ef52ad0cd7f9220

今年はちょっとアップグレードの回数が多かったのですが、これからはPostgreSQLのメジャーバージョンアップに対応して毎年1回アップグレードされていく予定です。

古いPostgreSQLは、順次使えなくなっていくのでPostgreSQLのアップグレードは必須です。

■GitLabで利用できるPostgreSQLの最小バージョン

|GitLabのバージョン|PostgreSQLの最小バージョン|
|-----------------|---------------------|
|GitLab 10        |9.6系                 |
|GitLab 11        |10系                 |
|GitLab 12        |10系                 |
|GitLab 13        |11系                 |
|GitLab 14        |12系                |

PostgreSQL versions shipped with Omnibus GitLab | GitLab
https://docs.gitlab.com/omnibus/package-information/postgresql_versions.html


# 1. GitLab 13.5.3 で PostgreSQL 12.4にアップグレード
## 1-1. アップグレードする方法を確認する

データベースアップグレードの方法は、以下にあります。

Database settings | GitLab
https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server

`gitlab-ctl pg-upgrade` を実行すれば基本的にいいのですが、事前にチェックしておく項目がいくつかあります。

1. 最新のGitLabをバージョンアップする
2. sudo gitlab-ctl reconfigureがちゃんと通る事を確認する
3. ディスク容量が空いている事を確認する

現在のバージョンは以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/569f4386-8e24-c96e-26e1-24a769f21bf5.png)

## 1-2. `sudo gitlab-ctl reconfigure` を実行する

反映されていない設定が存在しないか､reconfigureします｡

```
sudo gitlab-ctl reconfigure
```

実行結果
```bash
user@gitlab:~$ sudo gitlab-ctl reconfigure
[sudo] user のパスワード:
Starting Chef Infra Client, version 15.14.0
resolving cookbooks for run list: ["gitlab-ee"]
Synchronizing Cookbooks:
  - gitlab-ee (0.0.1)
  - package (0.1.0)
  - gitlab (0.0.1)
<<<中略>>>
Running handlers:
Running handlers complete
Chef Infra Client finished, 5/879 resources updated in 32 seconds
gitlab Reconfigured!
```

## 1-3. 空き容量を確認する

```bash
user@gitlab:~$ sudo du -sh /var/opt/gitlab/postgresql/data
657M    /var/opt/gitlab/postgresql/data
user@gitlab:~$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/sde                   250G   55G  196G  22% /var/opt/gitlab
```



## 1-4. `sudo gitlab-ctl pg-upgrade` を実行する

GitLab 13.3以降の場合は、`sudo gitlab-ctl pg-upgrade -V 12` というコマンドオプションを付けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/85b2342a-fa01-a91a-8e6f-c7baa546ff41.png)

`sudo gitlab-ctl pg-upgrade -V 12` コマンドを打って、PostgeSQLのバージョンアップ開始されるまでに30秒猶予が与えられます。なんか止まったとか焦らないようにしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/197de748-b790-dcd1-b3f6-8268f27cacaf.png)


```bash
user@gitlab:~$ sudo gitlab-ctl pg-upgrade -V 12
<<<中略>>>
Toggling services: OK
==== Upgrade has completed ====
Please verify everything is working and run the following if so
sudo rm -rf /var/opt/gitlab/postgresql/data.11
sudo rm -f /var/opt/gitlab/postgresql-version.old
```


## 1-5. 確認する

そのままだと、PostgreSQLが11のままの表示だったので、`sudo gitlab-ctl restart`しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/2b3855ff-a35b-fe33-d14e-379f3f401bd8.png)

# 2. まとめ

PostgreSQLをバージョンアップしたら、スピードもアップしてレスポンスも良くなった気がします。
今年はバージョンアップが多かったですが、来年以降は1年に1回なのでスケジューリングして対応していくのがよいと思います。