앞으로 티스토리 대신 blog.stackframe.dev에서 블로깅을 합니다. 이 블로그는 남겨 둘 예정입니다.
이전 pg_dumpall을 통한 PostgreSQL 업그레이드에 이어 두 번째로 pg_upgrade를 통한 업그레이드를 설명하겠습니다.
목차
2. pg_upgrade
먼저 PostgreSQL 최신 버전을 설치합니다. 설치방법은 그냥 자신의 배포판에 맞게 수단과 방법을 가리지 않고 설치하시면 됩니다. 저는 Archlinux를 사용하므로 pacman 을 사용해 설치하겠습니다.
$ pacman -Syu $ pacman -S postgresql postgresql-old-upgrade
Archlinux는 pg_upgrade를 사용한 업그레이드를 위해 postgresql-old-upgrade라는 패키지 명으로 이전버전의 PostgreSQL을 제공하고 있습니다. 이 패키지를 설치하면 /opt/pg-sql-{버전} 에 이전 버전의 PostgreSQL이 설치됩니다.
$ ls /opt/pgsql-10 -l total 16 drwxr-xr-x 2 root root 4096 Nov 17 01:42 bin drwxr-xr-x 6 root root 4096 Nov 17 01:42 include drwxr-xr-x 4 root root 4096 Nov 17 01:42 lib drwxr-xr-x 6 root root 4096 Nov 17 01:42 share
pg_upgrade를 실행하기 전에 pg_dumpall를 사용했던 것과 같이 새로운 클러스터를 생성해 줘야합니다. 이미 이전 포스트에서 설명을 했으므로 명령어만 적고 넘어가겠습니다. 다만 이전 포스트와 다른 점은 이전 클러스터 디렉토리를 다른 곳으로 이동시켜 둔 것과 initdb를 한 후 postgres 계정을 로그아웃하지 않았다는 겁니다.
$ sudo mv -r /var/lib/postgres/data /var/lib/postgres/old-data $ sudo mkdir /var/lib/postgres/data $ sudo chown postgres:postgres /var/lib/postgres/data $ sudo su postgres - $ chmod 700 /var/lib/postgres/data $ cd /var/lib/postgres/data $ initdb -D /var/lib/postgres/data -E UTF-8 --locale=ko_KR.UTF-8 --lc-messages=en_US.UTF-8
드디어 pg_upgrade를 실행할 차례입니다. pg_upgrade는 총 4개의 인자가 필요합니다.
-b 이전 버전의 bin(실행파일) 디렉토리
-B 새 버전의 bin(실행파일) 디렉토리
-d 이전 버전의 클러스터 디렉토리
-D 새로 만든 클러스터 디렉토리
제 Archlinux 기준으로는 이전버전의 bin 디렉토리는 /opt/pgsql-10/bin, 새 버전의 bin 디렉토리는 /usr/bin, 이전 버전의 클러스터 디렉토리는 /var/lib/postgres/old-data, 새로 만든 클러스터 디렉토리는 /usr/lib/postgres/data 입니다. 그러므로 명령어는 아래와 같습니다.
$ pg_upgrade -b /opt/pgsql-10/bin -B /usr/bin -d /var/lib/postgres/old-data -D /var/lib/postgres/data $ exit
에러가없다면 완벽히 업그레이드가 끝났다는 것이므로 PostgreSQL을 시작사켜 봅시다.
$ sudo systemctl start postgresql
이걸로 pg_upgrade를 사용한 업그레이드는 끝났습니다. 뭔가 pg_dumpall과 그리 다르지 않은 느낌입니다. 솔직히 말하자면 pg_dumpall로 덤프뜨는 시간을 아낄 수 있다 뿐인 것 같은데 이건 정말 거대한 데이터베이스를 운영하지 않는 이상 속도 차이를 체감하기 어려울 것 같습니다. pg_upgrade의 설명을 보면 이전 데이터를 재활용한다고 하는데 저는 아직 그렇게 큰 데이터베이스는 가지고 있지 않아서 확인할 수는 없었습니다.
'PostgreSQL' 카테고리의 다른 글
PostgreSQL의 Schema (0) | 2020.09.05 |
---|---|
PostgreSQL 메이저 버전 업그레이드 방법 3. pg_upgradecluster (0) | 2018.11.20 |
PostgreSQL 메이저 버전 업그레이드 방법 1. pg_dumpall (2) | 2018.11.19 |