Copy Database

데이터베이스 복사가 필요한 경우가 있을 때 사용하는 명령어를 정리한다.

copy database

CREATE DATABASE book_db_test with TEMPLATE book_db;

🔥 There is 1 other session using the database

복사하려는 데이터베이스에 활성 연결이 있는 경우 다음 오류가 발생한다.

ERROR:  source database "dvdrental" is being accessed by other users
DETAIL:  There is 1 other session using the database.

PID 확인 및 중지

SELECT pid, usename, client_addr FROM pg_stat_activity WHERE datname = 'book_db';
SELECT pid, usename, client_addr FROM pg_stat_activity;

SELECT pg_terminate_backend (pid) FROM pg_stat_activity WHERE datname = 'dvdrental';
SELECT pg_terminate_backend (pid) FROM pg_stat_activity;

pg_dump and pg_restore

  • pg_dump와 pg_restore는 모두 PostgreSQL에서 DB를 백업하고 복원하는 사용되는 유틸리티

  • pg_dump는 데이터베이스나 특정 테이블의 내용을 백업하는데 사용

  • pg_restore는 pg_dump로 백업한 파일을 사용하여 DB를 복원하는데 사용 이것은 백업 파일에서 SQL명령어를 읽어들여 DB를 다시 생성하고 데이터를 삽입한다.

  • 간단히, pg_dump는 DB를 백업하는데 사용되고, pg_restore는 pg_dump로 백업한 파일을 사용하여 복원하는데 사용된다.

pg_dump -U postgres -d dbname -f dbname.sql
psql -U postgres -d targetdb -f dbname.sql

pg_dump -h hostname -p port -U username -d dbname > backup_file.sql
psql -h localhost -U username -d dbname < backup_file.sql

pg_dump -h <hostname> -d <db_name> -U <user> -W(-Fc) > ~/Desktop/bk.dump

pg_restore --no-owner --no-privileges --role=<role> -d <dbname> ~/path

pg_dump options

일반 옵션:

-h, --host=HOSTNAME: 데이터베이스 호스트 이름 지정. -p, --port=PORT: 데이터베이스 포트 번호 지정. -U, --username=USERNAME: 데이터베이스에 접근할 사용자 이름 지정. -d, --dbname=DBNAME: 백업할 데이터베이스 이름 지정.

백업 옵션:

-F, --format=FORMAT: 백업 파일 형식 지정 (plain, custom, directory). -f, --file=FILENAME: 백업 파일 이름 지정. -c, --clean: 이전에 생성된 파일을 지우고 새로운 파일 생성.

기타 옵션:

-n, --schema=SCHEMA: 특정 스키마만 백업. -t, --table=TABLE: 특정 테이블만 백업. -N, --exclude-schema=SCHEMA: 특정 스키마 제외. -T, --exclude-table=TABLE: 특정 테이블 제외.

압축 옵션:

--no-compression: 압축하지 않음. -Z, --compress=COMPRESSLEVEL: 백업 파일 압축 레벨 지정.

추가 옵션:

-v, --verbose: 자세한 출력. -V, --version: 버전 정보 출력. -?, --help: 도움말 출력.

Last updated