|
pg_dump
$ pg_dump -U 소유주 DB명 > 백업파일명 # sample $ pg_dump -U agens postgres > DB_NAME_bak.sql
테이블 단위 pg_dump 백업
pg_dump -U [user_name][db_name] -t [table_name] > [new_file]
e.g. pg_dump -U agens postgres -t oscar > ./oscar.sql
테이블 단위 pg_dump 복구
psql -U [user_name] -f [dump_file_location][db_name]
e.g. psql -U agens -f ./oscar.sql postgres
pg_dump에서 제공하는 연결 옵션
$ pg_dump --help Connection options: -d, --dbname=DBNAME database to dump -h, --host=HOSTNAME database server host or socket directory -p, --port=PORT database server port number -U, --username=NAME connect as specified database user -w, --no-password never prompt for password -W, --password force password prompt (should happen automatically) pg_dump 백업의 장점
pg_dump 백업의 단점
pg_dump 주의점
# 백업 시 $ pg_dump DB_NAME | gzip > DB_NAME_bak.gz # 복원 시 $ gunzip -c DB_NAME_bak.gz | psql DB_NAMEpg_dumpall
$ pg_dumpall > ALL_DB_NAME_bak.sql
pg dump와 pg_dumpall의 차이점
pg_dumppg_dumpall
적용범위 | 지정한 데이터베이스 1개 | PostgreSQL에 구성된 데이터베이스 전체 |
롤 생성 스크립트 (X) | 롤 생성 스크립트 (O) | |
데이터베이스 생성 스크립트 (X) | 데이터베이스 생성 스크립트 (O) | |
SQL 지원 범위 | 테이블/SP 생성 스크립트 (O) | 테이블/SP 생성 스크립트 (O) |
권한 부여 스크립트 (O) | 권한 부여 스크립트 (O) | |
적재 스크립트 (O) | 적재 스크립트(O) |
SQL 덤프 복원 방법
$ psql -U 소유주 DB_NAME > DB_NAME_bak.sql
$ psql --set ON_ERROR_STOP=1 --single-transaction < DB_NAME_bak.sql
Filesystem backup (cold backup)
ag_ctl -D $PGDATA stop # 서버 정지 tar cf backup.tar $AGHOME # 백업 실행 mkdir -m 700 -p $AGHOME/backup/data tar xf backup.tar -C $AGHOME/backup/data ag_ctl start -D $AGHOME/backup/data
cf ) $PGDATA 는 AG의 data file 경로
Archive Mode Backup(Hot Backup)
postgresql.conf 설정
# archive 설정 wal_level = replica archive_mode = on archive_command = 'cp %p $PGDATA/archive/%f.arc' archive_timeout = 1min
cf) $PGDATA 경로 밑에 archive 폴더 생성
# asql -U agens -d postgres # archive 설정 show_archive_mode; SELECT name, setting FROM pg_settings where name IN ('archive_command'); # 백업 시작 (Hot Backup) SELECT pg_start_backup(now()::text); # 백업 현황 (in terminal) cat backup_label cat tablespace_map # 백업 종료 SELECT pg_stop_backup();
|