OmnibusインストールされたGitLab v17.7.0のPostgreSQLを16.4にアップグレードした話

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

# 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

■2023年12月29日
OmnibusインストールされたGitLab 16\.7のPostgreSQLを14\.9にアップグレードした話 \#omnibus\-gitlab \- Qiita 
https://qiita.com/ynott/items/8ac94ff782468e0af19d


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

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

17.7でのフレッシュインストールが16.4になったのでアップグレードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/8ba31ec1-19b3-5686-4b09-876e6a0a696c.png)

# 1. GitLab 17.7 で PostgreSQL 16.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/dd01eb30-65b8-a338-c794-e603a8e480f4.png)

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

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

```
sudo gitlab-ctl reconfigure
```

実行結果
```bash
$ sudo gitlab-ctl reconfigure
[2025-01-03T14:14:32+09:00] INFO: Started Cinc Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook)
Cinc Client, version 18.3.0
Patents: https://www.chef.io/patents
Infra Phase starting
[2025-01-03T14:14:32+09:00] INFO: *** Cinc Client 18.3.0 ***
[2025-01-03T14:14:32+09:00] INFO: Platform: x86_64-linux
[2025-01-03T14:14:32+09:00] INFO: Cinc-client pid: 1921
＜＜＜中略＞＞＞
[2025-01-03T14:14:55+09:00] INFO: Cinc Client Run complete in 20.607743866 seconds

Running handlers:
[2025-01-03T14:14:55+09:00] INFO: Running report handlers
Running handlers complete
[2025-01-03T14:14:55+09:00] INFO: Report handlers complete
Infra Phase complete, 8/728 resources updated in 22 seconds
gitlab Reconfigured!
```

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

```bash
sudo du -sh /var/opt/gitlab/postgresql/data
436M	/var/opt/gitlab/postgresql/data
```

```bash
df -h
/dev/nvme0n1p1   49G   14G   35G  29% /
```

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

以下のコマンドでアップグレードします。
今回は`-V 16`でバージョン指定が必要でした。

```
sudo gitlab-ctl pg-upgrade -V 16
```

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

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

```
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.14
sudo rm -f /var/opt/gitlab/postgresql-version.old
```

古いファイルを消せとメッセージがでていますが、いったん残しておきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/7cbe40ee-d806-22cb-5aca-dad972a0dc78.png)

## 1-5. 確認する

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15176/421e3da2-6967-9167-d1a6-d36bb66173bd.png)

# 2. まとめ

Postgresqlのバージョンが16.4になりました。