PostgreSQL Upgrade  하는 방법에 대한 가이드 입니다.


방식은 Mysql, MariaDB 와 크게 다르지 않습니다.


기본적으로 데이터를 Dump 한 후 시스템을 새로 설치 후 데이터를 다시 밀어넣는 Flow 로 진행이 됩니다. 


mysqldump 와 비슷한 동작을 하는 명령어로 진행을 합니다. 


pg_dumpall > outputfile


파일을 dump 한다음에 해당 시스템을 shutdown 합니다.


pg_ctl stop

해당 시스템을 init.d 에등록하였다면 아래와 같은 방식으로 진행을 할 수도 있습니다.

/etc/rc.d/init.d/PostgreSQL stop
서버 시작과 중단에 대한 자세한 내용은 아래의 링크를 참조하시길 부탁드립니다.
http://postgresql.kr/docs/9.6/runtime.html


PostgreSQL 서비스를 종료하였으면, 기존 버전이 설치된 디렉토리를 삭제 or 이름변경 을 해줍니다.

디렉토리를 변경하려는 경우 아래의 명령어를 사용해서 진행하면 됩니다.

mv /usr/local/pgsql /usr/local/pgsql.old
Upgrade 할 버전의 PostgreSQL 을 신규 설치 합니다. 

설치 완료후 Database Cluster 를 새로 생성합니다.
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
이전 설정 파일을 수정합니다. "pg_hba.conf, postgresql.conf"


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
2. 소스 설치일 경우 새로운 버전의 PostgreSQL 를 설치 합니다.
pg_upgrade 를 쓰기위해서는 pg_controldata 를 통해 모든 설정이 호환되는지 확인합니다.

3. 새 서버의 binaries 를 설치 합니다. 
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

+ Recent posts