immich の db として tensorchord/pgvecto-rs の image を利用していたのですが,immich-app/postgres がリリースされていたのでこちらに変更します.

Upgrading | Immich

You can see versions that had breaking changes here.

docs.immich.app favicon image docs.immich.app

helm

helmfile でセットアップしていたので values.yaml を変更します. 利用している Chart は bitnami/postgresql です. releases も追加して postgres が 2 つ立っている状態にします.

image:
  registry: ghcr.io
  repository: immich-app/postgres
  tag: 14-vectorchord0.4.3-pgvectors0.2.0
extraEnvVars:
  - name: DB_STORAGE_TYPE
    value: "HDD"

scale

一応 scale しておきます.

kubectl -n immich scale deployment immich-machine-learning --replicas 0
kubectl -n immich scale deployment immich-server --replicas 0

backup

Pod が上がったら pg_dump します.

$ kubectl exec -i -n immich postgresql-0 -- pg_dump --clean --if-exists --dbname=immich --username=immich | gzip > dump.sql.gz

restore

新しい postgres に restore します.

$ gunzip --stdout dump.sql.gz \
      | sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
      | kubectl exec -i -n immich pgvectors-postgresql-0 -- \
        psql --dbname=immich \
             --username=immich \
             --single-transaction \
             --set ON_ERROR_STOP=on

切り替え

DB_HOSTNAME 環境変数で新しい方を向くように変更します.

env:
  DB_HOSTNAME: pgvecto-rs-postgresql