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

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

# 0. はじめに
いつも書いているGitLabのPostgresqlのバージョンアップを実施したという話になります。

■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

■2023年05月28日
OmnibusインストールされたGitLab 13.5.3のPostgreSQLを12.4にアップグレードした話 #PostgreSQL - Qiita
https://qiita.com/ynott/items/73e5f1856637fd218d35

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

https://docs.gitlab.com/ee/administration/package_information/postgresql_versions.html

16.7でのフレッシュインストールが14.9になったのでアップグレードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/a69c02b8-9a36-151c-082f-2a84190d36f5.png)

# 1. GitLab 16.7 で PostgreSQL 14.9にアップグレード
## 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/49257463-da42-db4a-d538-dfa5c3d0183f.png)


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

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

```
sudo gitlab-ctl reconfigure
```

実行結果
```bash
$ sudo gitlab-ctl reconfigure
[2023-12-29T12:58:12+09:00] INFO: Started Cinc Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook)
Cinc Client, version 17.10.0
Patents: https://www.chef.io/patents
Infra Phase starting
[2023-12-29T12:58:12+09:00] INFO: *** Cinc Client 17.10.0 ***
<<<中略>>>
[2023-12-29T12:58:33+09:00] INFO: Report handlers complete
Infra Phase complete, 12/719 resources updated in 20 seconds
[2023-12-29T12:58:33+09:00] WARN: This release of Cinc Client became end of life (EOL) on May 1st 2023. Please update to a supported release to receive new features, bug fixes, and security updates.
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` を実行する

以下のコマンドでアップグレードします。
バージョンを指定しなくても問題ないはず。
```
sudo gitlab-ctl pg-upgrade
```

`sudo gitlab-ctl pg-upgrade` コマンドを打って、PostgeSQLのバージョンアップ開始されるまでに30秒猶予が与えられます。なんか止まったとか焦らないようにしましょう。
心の準備ができてない場合は、ctrl+cでキャンセルできます。
アップグレードが開始されるのを30秒正座して待ちましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/750f0183-aeb5-301c-0635-9cd895f7d253.png)

以下のように出れば成功です！！

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

古いファイルは消しましょう。と思って`/var/opt/gitlab/postgresql/`を見たら、Postgresql 12の時のバックアップが残っていました...。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/f8abd69e-0cdd-e9f2-6c8d-c19fac490d58.png)

安全が確認できたら削除する事にします...。

## 1-5. 確認する

以前は、`sudo gitlab-ctl restart`しないとバージョンが切り替わりませんでしたが、今回は何もしなくてもリロードするだけで反映されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/65c996f9-ca71-109f-f93f-ea64a9a5971a.png)

## 1-6. 古いファイルを削除する

サーバーを管理していていつも緊張するのがファイルの削除です。

さすがに不要なバージョン12の方を先に削除します。

```
sudo rm -rf /var/opt/gitlab/postgresql/data.12
```

バージョンファイルも削除していいでしょう。
```
sudo rm -f /var/opt/gitlab/postgresql-version.old
```

`/var/opt/gitlab/postgresql/data.13`はそのうち削除する事にします。


# 2. まとめ

バージョン12にしたときほどのスピードアップは体感では感じられませませんでしたが、バージョンに追従しておくのは重要です。