HOME | LINUX | CISCO NETWORKING |   
PosgreSQL | Nginx | MariaDB | Bash Shell | GlusterFS | XEN | Cluster | VIM | Iptables | Nagios | Qmail  


For PostgreSQL Admin
  • PosgreSQL 설치하기

    	
     아래 URL에서 소스 최신 소스를 다운로드 (현재까지 9.4.4가 최신, CentOS6.5에는 8.4.18버전이 패키징됨) 
     
     http://ftp.postgresql.org/pub/source/v9.4.4/postgresql-9.4.4.tar.bz2
     
     cd /usr/local/src 
     wget http://ftp.postgresql.org/pub/source/v9.4.4/postgresql-9.4.4.tar.bz2 
     tar xjvfp postgresql-9.4.4.tar.bz2
     
     groupadd -g 5432 pgsql 
     useradd -g pgsql -u 5432 pgsql 
     
     yum -y install bison readline readline-devel ncurses-devel
     cd postgresql-9.4.4 
     ./configure 
     make 
     make install 
     
     vi /etc/profile 에 아래내용 추가
     PGDATA=/usr/local/pgsql/data 
     PATH=$PATH:/usr/local/pgsql/bin
     export PATH PGDATA
     
     chown -R pgsql.pgsql /usr/local/pgsql 
     
     # 데이터베이스를 초기화 시킨다. 
     initdb -D $PGDATA 
     
     # 데이터베이스를 접속할 서버의 아이피를 지정해준다. 
     vi /usr/local/pgsql/data/pg_hba.conf 
     host	all	all	192.168.123.10/32		trust
     
     
     # /etc/init.d/pgsql script는 아래와 같이 
     보통 /bin/sh 아래 comments들이 쓸모가 없을거라 생각하나, 
     아래의 내용은 chkconfig 가 파싱하니 필요한 부분이다. 
     
     #!/bin/sh 
     # 
     # postgresql - This is the init script for starting up the PostgreSQL 
     # chkconfig: - 64 36
     # description: PostgreSQL database server 
     # processname: postmaster
     # pidfile: /usr/local/pgsql/data/postmaster.pid 
     #
     SERVER=/usr/local/pgsql/bin/postmaster
     PGCTL=/usr/local/pgsql/pg_ctl 
     PGDATA=/usr/local/pgsql/data 
     PGPORT=5432
     OPTIONS=-i
     LOGFILE=/usr/local/pgsql/data/pgsql.log 
     
     case "$1" in
     	start)
     		echo -n "Starting PostgreSQL ..." 
     		su -l pgsql -c "nohup $SERVER $OPTIONS -p $PGPORT -D $PGDATA > $LOGFILE 2>&1 &"
     		;;
     	stop)
     		echo -n "Stopping PostgreSQL ..."
     		su - pgsql -c "$PGCTL -D $PGDATA stop"
     		;;
     	restart)
     		stop
     		start
     		;;
     	*)
     		echo "Usage: $0 {start|stop}"
     		exit 1
     		;;
     esac
     exit 0 
     
     # 위 스크립트를 /etc/init.d/pgsql 파일로 생성후 
     # startup/shutdown 시에 등록시킬수 있다. 
    
     chkconfig --level 2345 pgsql on 
     ln -s /etc/init.d/pgsql /etc/rc.d/rc3.d/K36pgsql 
     ln -s /etc/init.d/pgsql /etc/rc.d/rc2.d/K36pgsql
     
     
     /etc/init.d/pgsql start 
     
     # 사용자와 데이터베이스 생성 (user : drupal, database : drupal) 
     su - pgsql 
     createuser -P drupal 
     
     # createdb -O [owenr] [dbname] 
     createdb -O drupal drupal 
     
     # 차후 사용자의 패스워드 변경시에는 
     psql template1
     ALTER USER drupal WITH PASSWORD 'drupalpassword';
     
     # 권한 변경시에는 
     ALTER ROLE drupal CREATEROLE CREATEDB;
     
     # ROLE 확인, 특정 사용자의 ROLE 확인 
     select * from pg_roles; 
     select * from pg_roles where rolname='drupal';
     
     # SYNTAX : ALTER ROLE name [WITH] options [ ...];
     # OPTIONS : SUPERUSER | NOSUPERUSER
     #    CREATEDB | NOCREATEDB
     #    CREATEROLE | NOCREATEROLE 
     #    CREATEUSER | NOCREATEUSER 
     #    INHERIT | NOINHERIT 
     #    LOGIN | NOLOGIN
     #    CONNECTION LIMIT connlimit
     #    ENCRYPTED | UNENCRYPTED PASSWORD 'password' 
     #    VALID UNTIL 'timestamp'
     
     
     
     SELECT * FROM pg_stat_activity;
     
     
     
     
     
     
    
    For PostgreSQL Admin
  • pg_dump를 이용한 Backup

    
     # 데이터베이스를 백업하고, 압축한다. 
     pg_dump -h localhost -p 5432 -U userid -F c -b -v -f mydb.bak mydb
    
     # 데이터베이스를 텍스트 파일로 백업한다. 
     pg_dump -h localhost -p 5432 -U userid -C -F p -b -v -f mydb.bak mydb
    
     # 
     pg_dump -h localhost -p 5432 -U userid -F c -b -v -t *.payments* -f payment_tables.bak mydb 
    
     # 
     pg_dump -h localhost -p 5432 -U userid -F c -b -v -n hr -n payroll -f hr_payroll_schemas.bak mydb 
    
     # 
     pg_dump -h localhost -p 5432 -U userid -F c -b -v -N public -f all_schema_except_public.backup mydb 
    
     # 
     pg_dump -h localhost -p 5432 -U userid -F p --column-inserts -f select_tables.bak mydb 
    
     # 
     pg_dump -h localhost -p 5432 -U userid -F d -f /home/juria mydb 
    
     # Systemwide Backup 
     pg_dumpall -h localhost -U pgsql --port=5432 -f myglobals.sql --globals-only 
    
     # 
     pg_dumpall -h localhost -U pgsql --port=5432 -f myroles.sql --roles-only
    
  • pg_dump를 이용한 Restore

    
     # Full backup 을 복원하고 에러는 무시한다. 
     psql -U pgsql -f myglobals.sql 
    
     # 복원하고 첫번재 에러에서 정지한다. 
     psql -U pgsql --set ON_ERROR_STOP=on -f myglobals.sql 
    
     # 부분적 복원을 실행한다. 
     psql -U pgsql -d mydb -f select_objects.sql 
    
     # pg_restore 활용하기 
     mydb --# CREATE DATABASE mydb;
     pg_restore --dbname=mydb --jobs=4 --verbose mydb.backup 
    
     # If the database is the same as the one you backed up, you can create the database in ones step with the following:
     pg_restore --dbname=postgres --create --jobs=4 --verbose mydb.backup 
    
    


  • Home | Linux | Network | About Me |