[OS X] PostgreSQL 설치
brew install postgresql
brew는 최신 버전의 PostgreSQL을 설치하는데 만약 특정 버전의 패키지를 설치하고 싶다면 brew search postgresql 명령으로 검색을 한 후 해당 버전의 패키지명을 지정한다.
brew list postgresql
brew list 명령은 설치 위치와 설치된 모듈등을 표시한다. 기본적으로 /usr/local/Cellar/postgresql/<version>/에 설치되고, /usr/local/의 대응하는(Peer) 디렉토리에서 심볼릭 링크된다.
[OS X] PostgreSQL 서버 시작/중지
mkdir -p ~/Library/LaunchAgents
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
ln -sfv /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
이 절차는 로그온시 자동으로 PostgreSQL 서버를 실행하는 절차이다.
자동으로 서버가 시작되는 것을 멈추려면 아래 명령을 사용한다.
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
만약 수동으로 서버를 시작/중지하려면 아래 명령어를 사용한다.
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
pg_ctl -D /usr/local/var/postgres stop -s -m fast
[OS X] PostgreSQL 기본 데이타베이스와 사용자
홈브루를 사용해서 PostgreSQL 패키지를 설치하게 되면 디폴트로 postgres라는 이름의 데이타베이스와 로그인 사용자 명과 같은 이름의 롤(Role) 사용자가 생성된다. 이 데이타베이스가 사용하는 데이타 디렉토리는 /usr/local/var/postgres/에 형성된다.
만약 데이타베이스가 생성되지 않았거나 새로운 명칭의 데이타베이스를 만들고 싶으면 아래의 명령어를 사용한다.
initdb /usr/local/var/postgres -E utf8
psql은 명령어 기반의 PostgreSQL 클라이언트로서 서버에 접속해서 데이타베이스, 테이블, 롤(Role) 사용자등을 관리하는 유틸리티이다. psql을 사용해서 postgres 데이타베이스에 연결되는지 확인한다.
psql --dbname=postgres
[OS X] PostgreSQL 업그레이드
편의상 현재 9.3 버전이 설치되어 있고 이것을 9.4 버전으로 업그레이드하는 시나리오를 상정한다. 새로운 버전을 설치하기에 앞서 기존 데이타 백업을 하고 서버를 중지한다.
pg_dumpall --file=postgresql.9.3
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
기존 설치된 버전의 패키지를 제거하고 데이터 디렉토리는 삭제 또는 보관한다.
brew uninstall postgresql
rm -rf /usr/local/var/postgres/
brew upgrade 명령을 사용해서 업그레이드 작업을 수행한다.
brew update
brew info postgresql를 통해서 새로운 버전이 있는지 확인한다.
brew upgrade postgresql
작업이 완료되면 서버를 다시 시작하고 백업했던 데이타를 복구한다.
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
psql -d postgres -f postgresql.9.3
[Ubuntu] PostgreSQL 설치
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib libpq-dev
패키지가 설치되면서 자동으로 main 이란 명칭의 데이터베이스 클러스터가 /var/lib/postgresql/9.3/main에 생성되고, postgres 서비스 데몬이 실행된다.
패키지 설치 시 postgres라는 명칭의 데이타베이스와 postgres 로그인 사용자 그리고 동명의 PostgreSQL 롤(Role) 사용자가 디폴트로 만들어지기 때문에 psql 유틸리티를 사용해서 서버의 해당 데이타베이스에 접속할 수 있다.
sudo -u postgres psql --dbname=postgres --port=5432
서버에 접속이 성공하면 psql 프롬프트 상에서 다음과 같이 테스트용 롤(Role)과 테스트용 데이타베이스를 생성해본다.
=# \l  => 데이타베이스 리스트 보기
=# \du => 롤(Role) 유저 리스트 보기
=# CREATE USER deploy with PASSWORD 'xyz'; => deploy 롤(Role) 생성
=# CREATE DATABASE test_db OWNER deploy; => deploy가 오너쉽을 갖는 test_db 데이타베이스 생성
=# \q
위 작업이 성공적으로 수행되면 방금 생성한 테스트용 데이터베이스를 지정해서 서버에 접속한다.
psql --dbname=test_db psql --port=5432 --host='localhost' --username=deploy
[Ubuntu] PostgreSQL 업그레이드
먼저 데이터 백업을 수행한다.
sudo -u postgres pg_dumpall > postgresql.9.3
다음은 PostgreSQL 서버를 중지한다
sudo service postgresql stop
아래 명령을 사용해서 기존에 설치된 버전의 패키지를 제거한다.
sudo apt-get remove --purge postgresql postgresql-contrib libpq-dev postgresql-9.3 postgresql-client-9.3 postgresql-client-common postgresql-common postgresql-contrib-9.3
sudo apt-get autoremove
여기서의 기본 아이디어는 dpkg -l | grep 'postgres'에 검색된 패키지를 제거하는 것이다.
이제 새로운 버전의 패키지를 설치한다. 여기서는 9.4 버전을 설치하는 것을 가정한다.
sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main"
wget --quiet -O - postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4
이 작업이 성공적으로 끝나면 /var/lib/postgresql/9.4/main에 데이타 디렉토리가 생기고 서버가 자동으로 실행된다.
마지막 절차는 백업된 데이타를 복원하는 과정이다.
sudo -u postgres psql -d postgres -f postgresql.9.3