PostgreSQL Upgrade 하는 방법에 대한 가이드 입니다.
방식은 Mysql, MariaDB 와 크게 다르지 않습니다.
기본적으로 데이터를 Dump 한 후 시스템을 새로 설치 후 데이터를 다시 밀어넣는 Flow 로 진행이 됩니다.
mysqldump 와 비슷한 동작을 하는 명령어로 진행을 합니다.
pg_dumpall > outputfile
파일을 dump 한다음에 해당 시스템을 shutdown 합니다.
pg_ctl stop
해당 시스템을 init.d 에등록하였다면 아래와 같은 방식으로 진행을 할 수도 있습니다.
/etc/rc.d/init.d/PostgreSQL stop
PostgreSQL 서비스를 종료하였으면, 기존 버전이 설치된 디렉토리를 삭제 or 이름변경 을 해줍니다.
디렉토리를 변경하려는 경우 아래의 명령어를 사용해서 진행하면 됩니다.
mv /usr/local/pgsql /usr/local/pgsql.old
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
PostgreSQL 서버를 다시 시작합니다.
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
데이터를 복원 합니다.
/usr/local/pgsql/bin/psql -d postgres -f outputfile
- pg_upgrade 를 통한 데이터 업그레이드가 가능합니다.
https://www.postgresql.org/docs/10/static/pgupgrade.html
pg_upgrade 는 (이전버전 pg_migrator) 메이저 버전 업그레이드에 사용이 됩니다. 마이너 버전업그레이드에는 필요하지 않습니다. ex. 9.0.1 -> 9.0.4 사용안됨
pg_upgrade 는 8.4.X 버전 이후부터 스냅 샷 및 알파 릴리즈를 포함한 PostgreSQL 의 주요 릴리즈의 업그레이드를 지원합니다.
pg_upgrade 를 사용하는 방법 입니다.
1. 기존에 설치된 Package 를 이동합니다.
mv /usr/local/pgsql /usr/local/pgsql.old
make prefix=/usr/local/pgsql.new install
4. 새 서버의 cluster 를 initialize(초기화) 를 진행합니다.
initdb 를 이용하여서 새 클러스터를 초기화 합니다. 이전 클러스터와 호환되는 initdb 플래그를 사용해야 합니다.
5. 이전 Cluster 의 사용자 정의 공유 오브젝트 파일 (or DLLs) 을 new cluster 로 설치 합니다. ex. pgcrypto.so 등등
Schema 정의 파일은 업그레이드 되기에 따로 설치를 하지는 않습니다.
6. 인증에 대한 내용을 확인
pg_upgrade 를 통해 old_server 가 new_server 로 연결을 하기위해 인증을 수정합니다. pg_hba.conf
7. 서버를 중지 합니다.
Linux
pg_ctl -D /opt/PostgreSQL/9.6 stop
pg_ctl -D /opt/PostgreSQL/10 stop
Windows
NET STOP postgresql-9.6
NET STOP postgresql-10
8 pg_upgrade 를 실행 합니다.
RUNAS /USER:postgres "CMD.EXE"
SET PATH=%PATH%;C:\Program Files\PostgreSQL\10\bin;
pg_upgrade.exe
--old-datadir "C:/Program Files/PostgreSQL/9.6/data"
--new-datadir "C:/Program Files/PostgreSQL/10/data"
--old-bindir "C:/Program Files/PostgreSQL/9.6/bin"
--new-bindir "C:/Program Files/PostgreSQL/10/bin"
..... 복원하는 과정이 몇가지 더 남아 있습니다. 추가적인 내용은 위의 링크를 통해서 확인하시기 바랍니다.
만약 추 후 upgrade 테스트를 하게된다면 이 포스팅 내용은 업데이트 됩니다.
'Database > PostgreSQL' 카테고리의 다른 글
7. PostgreSQL Server Shutdown (0) | 2017.11.06 |
---|---|
6. PostgreSQL 커널 리소스 관리 (0) | 2017.11.03 |
5. PostgreSQL 데몬구동 설정 및 운영 (0) | 2017.10.31 |
4. PostgreSQL 설치 시 요구사항 (0) | 2017.10.31 |
3. PostgreSQL 설치하기 (0) | 2017.10.27 |