PostgreSQL v15 to v16 upgrade (pg_upgrade)

개요

Mastodon 단독 용도의 데이터베이스 업그레이드를 위해 진행하였다.

사고를 방지하기 위한 진행 전 백업 필수.

절차

데이터베이스 콜레이션 업데이트

sudo su - postgres
psql mastodon_production
ALTER DATABASE mastodon_production REFRESH COLLATION VERSION;
REINDEX DATABASE mastodon_production;
psql template1
ALTER DATABASE template1 REFRESH COLLATION VERSION;
REINDEX DATABASE template1;
psql postgres
ALTER DATABASE postgres REFRESH COLLATION VERSION;
REINDEX DATABASE postgres;
exit

REINDEX는 필수가 아니고, 메모리와 스토리지를 사용하므로 용량에 주의한다.

데이터베이스 정지

업그레이드 사전 확인 후 진행

sudo su - postgres
/usr/lib/postgresql/16/bin/pg_upgrade \
  --old-datadir=/var/lib/postgresql/15/main \
  --new-datadir=/var/lib/postgresql/16/main \
  --old-bindir=/usr/lib/postgresql/15/bin \
  --new-bindir=/usr/lib/postgresql/16/bin \
  --old-options '-c config_file=/etc/postgresql/15/main/postgresql.conf' \
  --new-options '-c config_file=/etc/postgresql/16/main/postgresql.conf' \
  --check
exit

사전 확인 문제 없으면 –check 제거하여 업그레이드 진행한다.

포트 구성 스왑 및 기존 구성 마이그레이션

  • /etc/postgresql/15/main/postgresql.conf
  • /etc/postgresql/16/main/postgresql.conf
  • /etc/postgresql/16/main/pg_hba.conf

데이터베이스 시작

청소

sudo su - postgres
/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages
exit
sudo apt remove postgresql-15
sudo rm -rf /etc/postgresql/15/
sudo su - postgres
./delete_old_cluster.sh
exit

게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다