Ubuntu 서버에서 기존에 사용하던 PostgreSQL 14 버전을 PostgreSQL 16으로 업그레이드하면서 데이터 손실 없이 마이그레이션한 실제 과정을 정리한 가이드입니다.
전체 데이터 백업, 신규 버전 설치, 데이터 복원, 구버전 제거까지 전 과정을 단계별로 따라 할 수 있도록 구성했습니다.

PostgreSQL upgrade from 14 to 16 symbol

1. 현재 PostgreSQL 버전 및 클러스터 상태 확인

psql --version
pg_lsclusters

클러스터 상태에서 14/main이 활성화되어 있는지 확인합니다.


2. 전체 데이터 백업

PostgreSQL은 pg_dumpall 명령을 통해 전체 데이터베이스, 사용자, 권한 정보를 포함한 백업을 할 수 있습니다.

sudo -u postgres pg_dumpall > ~/pg_backup_all.sql

백업 검증 예시 (선택적)

head ~/pg_backup_all.sql
tail ~/pg_backup_all.sql

파일 존재 여부 및 용량 확인

ls -lh ~/pg_backup_all.sql

3. PostgreSQL 16 설치

3-1. 공식 레포지터리 등록

sudo apt update
sudo apt install wget ca-certificates -y
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/pgdg.gpg
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" |   sudo tee /etc/apt/sources.list.d/pgdg.list

3-2. PostgreSQL 16 설치

sudo apt update
sudo apt install postgresql-16 -y

설치가 완료되면 다시 클러스터 상태를 확인해 봅니다.

pg_lsclusters

4. 클러스터 전환

기존 14 버전을 중지하고 16 버전을 시작합니다.

sudo systemctl stop postgresql@14-main
sudo systemctl start postgresql@16-main

5. 데이터 복원 (PostgreSQL 16으로)

복원 전, 새로 설치된 16버전에 접속이 잘 되는지 확인합니다.
(포트번호는 pg_lsclusters에서 확인)

sudo -u postgres psql -p 5433

접속이 잘 되면 아래 명령으로 백업했던 데이터를 복원합니다:

sudo -u postgres psql < ~/pg_backup_all.sql

less ~/pg_backup_all.sql | grep ERROR 를 통해 에러 발생 여부를 확인할 수 있습니다.


6. PostgreSQL 14 제거 (선택 사항)

업그레이드 및 데이터 복원이 완료되었고 문제가 없다면, PostgreSQL 14를 제거할 수 있습니다:

sudo pg_dropcluster 14 main --stop
sudo apt remove postgresql-14 -y

마무리

이번 과정은 Ubuntu 서버에서 PostgreSQL 14에서 16으로의 업그레이드 및 마이그레이션이 필요한 분들에게 유용할 것입니다.
데이터 백업 → 신규 설치 → 복원 → 구버전 제거의 순서를 따라 안전하게 버전을 전환하세요.

서버의 사용자명, 포트번호 등은 여러분 환경에 맞게 조정하시면 됩니다.