PostgreSQL 13에서 15로 업그레이드할 때 겪었던 문제를 해결했습니다. 실패한 업그레이드 상태로 서버를 백업에서 복원한 후, PostgreSQL en_GB.UTF-8 로케일 환경에서 다음과 같은 단계가 제게 효과적이었습니다:
sudo -i
su - discourse
cd /var/discourse
git stash
git stash drop
git pull
./launcher stop app
docker run --rm \
--entrypoint=/bin/bash \
-e LANG='en_GB.UTF-8' \
-v /var/discourse/shared/standalone/postgres_data:/var/lib/postgresql/13/data \
-v /var/discourse/shared/standalone/postgres_data_new:/var/lib/postgresql/15/data \
tianon/postgres-upgrade:13-to-15 \
-c 'sed -i "s/^# $LANG/$LANG/" /etc/locale.gen && locale-gen &&
apt-get update && apt-get install -y postgresql-13-pgvector postgresql-15-pgvector &&
docker-upgrade'
exit
mv /var/discourse/shared/standalone/postgres_data /var/discourse/shared/standalone/postgres_data_old
mv /var/discourse/shared/standalone/postgres_data_new /var/discourse/shared/standalone/postgres_data
chown -R 101:104 /var/discourse/shared/standalone/postgres_data
su - discourse
cd /var/discourse
docker run --rm -v /var/discourse/shared/standalone:/shared \
local_discourse/app chown -R postgres:postgres /shared/postgres_data
./launcher rebuild app
과거에 PostgreSQL LANG 설정을 위해 수행했던 로컬 변경 사항을 git stash; git stash drop 명령을 사용하여 제거해야 했으며, PostgreSQL 데이터 디렉터리 이동은 root 권한으로 수행해야 하고 chown 명령이 필요했습니다.