pg_dump
여러 데이터 센터에 걸쳐 복제 클러스터를 구축할 수 있지만,
우발적인 DELETE DROP 후에는 백업만이 해결책
이중화 구성이 백업을 대체할 수 없음.
# 논리적(Logical) 백업
[1] pg_dump 사용
[2] 기본적으로 일반 텍스트 파일에 저장하지만, 압축된 tar파일로도 생성 할 수 있음
[3] 이 백업은 psql과 pg_restore를 사용하여 복원 ( SQL 내용을 쉽게 추출할 수 있음 )
[4] pg_dump --help
pg_dump [OPTION] ... [DBNAME]
g_dump dumps a database as a text file or to other formats.
Usage:
pg_dump [OPTION]... [DBNAME]
General options:
-f, --file=FILENAME output file or directory name
-F, --format=c|d|t|p output file format (custom, directory, tar,
plain text (default))
-j, --jobs=NUM use this many parallel jobs to dump
-v, --verbose verbose mode
-V, --version output version information, then exit
-Z, --compress=0-9 compression level for compressed formats
--lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock
--no-sync do not wait for changes to be written safely to disk
-?, --help show this help, then exit
Options controlling the output content:
-a, --data-only dump only the data, not the schema
-b, --blobs include large objects in dump
-B, --no-blobs exclude large objects in dump
-c, --clean clean (drop) database objects before recreating
-C, --create include commands to create database in dump
-e, --extension=PATTERN dump the specified extension(s) only
-E, --encoding=ENCODING dump the data in encoding ENCODING
-n, --schema=PATTERN dump the specified schema(s) only
-N, --exclude-schema=PATTERN do NOT dump the specified schema(s)
-O, --no-owner skip restoration of object ownership in
plain-text format
-s, --schema-only dump only the schema, no data
-S, --superuser=NAME superuser user name to use in plain-text format
-t, --table=PATTERN dump the specified table(s) only
-T, --exclude-table=PATTERN do NOT dump the specified table(s)
-x, --no-privileges do not dump privileges (grant/revoke)
--binary-upgrade for use by upgrade utilities only
--column-inserts dump data as INSERT commands with column names
--disable-dollar-quoting disable dollar quoting, use SQL standard quoting
--disable-triggers disable triggers during data-only restore
--enable-row-security enable row security (dump only content user has
access to)
--exclude-table-data=PATTERN do NOT dump data for the specified table(s)
--extra-float-digits=NUM override default setting for extra_float_digits
--if-exists use IF EXISTS when dropping objects
--include-foreign-data=PATTERN
include data of foreign tables on foreign
servers matching PATTERN
--inserts dump data as INSERT commands, rather than COPY
--load-via-partition-root load partitions via the root table
--no-comments do not dump comments
--no-publications do not dump publications
--no-security-labels do not dump security label assignments
--no-subscriptions do not dump subscriptions
--no-table-access-method do not dump table access methods
--no-tablespaces do not dump tablespace assignments
--no-toast-compression do not dump TOAST compression methods
--no-unlogged-table-data do not dump unlogged table data
--on-conflict-do-nothing add ON CONFLICT DO NOTHING to INSERT commands
--quote-all-identifiers quote all identifiers, even if not key words
--rows-per-insert=NROWS number of rows per INSERT; implies --inserts
--section=SECTION dump named section (pre-data, data, or post-data)
--serializable-deferrable wait until the dump can run without anomalies
--snapshot=SNAPSHOT use given snapshot for the dump
--strict-names require table and/or schema include patterns to
match at least one entity each
--use-set-session-authorization
use SET SESSION AUTHORIZATION commands instead of
ALTER OWNER commands to set ownership
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)
--role=ROLENAME do SET ROLE before dump
If no database name is supplied, then the PGDATABASE environment
variable value is used.
Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>
=====================================================================================
pg_dump는 PostgreSQL 데이터베이스를 백업하기 위한 유틸리티입니다 . 데이터베이스가 동시에 사용되는 경우에도 일관된 백업을 만듭니다. pg_dump는 데이터베이스에 액세스하는 다른 사용자(reader 또는 writer)를 차단하지 않습니다.
pg_dump는 단일 데이터베이스만 덤프합니다. 전체 클러스터를 백업하거나 클러스터의 모든 데이터베이스에 공통적인 글로벌 개체(예: 역할 및 테이블스페이스)를 백업하려면 pg_dumpall 을 사용하십시오 .
덤프는 스크립트 또는 아카이브 파일 형식으로 출력될 수 있습니다.
=========================================================================================
Database/Schema/Table 별 백업
[1] pg_dump -d [DB명] -n/-t/-d [이름] (-U [유저명]) > test.sql
[2] 이관할 [DB에] 접속하여 \i test.sql
또는 psql -f test.sql
데이터베이스 기준 [role 따로지정해줘야됨]
pg_dump -d test > ~~ .sql
psql -d gbtv -f test_20221208.sql
따로 search_path 설정은 해줘야 함
ALTER ROLE 유저명 set search_path = "$user", "스키마명";
pg_dump -d gbtv -U gbtv -s -n gbtv -f /experdata/gbtv_local.sql <- gbtv create schema,table (데이터 x)
pg_dump -d gbtv -U gbtv2017 -s -n gbtv2017 -f /experdata/gbtv2017_local.sql <- gbtv2017 create schema,table
pg_dump -d gbtv -U gbtv -n gbtv -a -f /experdata/gbtv_data.sql <-- gbtv 데이터
pg_dump -d gbtv -U gbtv2017 -n gbtv2017 -a -f /experdata/local_gbtv2017_data.sql <-- gbtv2017 데이터
=====================================================================================
Cluster 전체에 대한 백업
[1] pg_dumpall > test.sql
psql -f test.sql
'PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 단일 사용자 모드 (single mode) 란 ? (0) | 2023.04.19 |
---|---|
[PostgreSQL] postgres_fdw 설치 & 가이드 (0) | 2023.04.12 |
[Postgresql] postgres 15 version 설치 (0) | 2023.04.03 |
[PostgreSQL] Primary Key 설정 추가 생성 (0) | 2023.03.30 |
[PostgreSQL] tablespace 란? 생성법과 개념 정리 (0) | 2023.03.21 |