1) GP依然支持常規的PostgreSQL備份命令pg_dump和pg_dumpall
2) 備份將在Master主機上建立一個包含全部Segment數據的大的備份文件
3) 不適合於所有數據備份,適用於小部分數據的遷移或備份sql
pg_dump是用於備份數據庫的標準PostgreSQL實用程序,在Greenplum數據庫中也受支持。它建立一個(非並行)轉儲文件。對於Greenplum數據庫的常規備份,最好使用Greenplum Database備份實用程序gpcrondump以得到最佳性能。
若是要將數據遷移到其餘數據庫供應商的系統,或者使用具備不一樣段配置的另外一個Greenplum Database系統(例如,若是要遷移到的系統具備更多或更少的段實例),請使用pg_dump。要還原,必須使用相應的pg_restore實用程序(若是轉儲文件採用存檔格式),或者可使用客戶端程序(如psql)(若是轉儲文件採用純文本格式)。
因爲pg_dump與常規PostgreSQL兼容,所以可用於將數據遷移到Greenplum數據庫。 Greenplum數據庫中的pg_dump實用程序與PostgreSQL pg_dump實用程序很是類似,但有如下例外和限制:
若是使用pg_dump備份Greenplum數據庫數據庫,請記住,對於很是大的數據庫,轉儲操做可能須要很長時間(幾個小時)。此外,您必須確保有足夠的磁盤空間來建立轉儲文件。
若是要將數據從一個Greenplum數據庫系統遷移到另外一個,請使用--gp-syntax命令行選項在CREATE TABLE語句中包含DISTRIBUTED BY子句。這可確保Greenplum Database表數據在還原時與正確的分發鍵列一塊兒分發。
即便同時使用數據庫,pg_dump也會進行一致的備份。 pg_dump不會阻止訪問數據庫的其餘用戶(讀者或編寫者)。
當與其中一種存檔文件格式一塊兒使用並與pg_restore結合使用時,pg_dump提供了靈活的存檔和傳輸機制。 pg_dump可用於備份整個數據庫,而後pg_restore可用於檢查存檔和/或選擇要還原數據庫的哪些部分。最靈活的輸出文件格式是自定義格式(-Fc)。它容許選擇和從新排序全部已歸檔項目,並在默認狀況下進行壓縮。 tar格式(-Ft)未壓縮,加載時沒法從新排序數據,但在其餘方面很是靈活。它可使用標準的UNIX工具(如tar)進行操做數據庫
參數:session
1 [gpadmin@greenplum01 ~]$ pg_dump --help 2 pg_dump dumps a database as a text file or to other formats. 3 4 Usage: 5 pg_dump [OPTION]... [DBNAME] 6 7 General options: 8 -f, --file=FILENAME output file name 9 -F, --format=c|t|p output file format (custom, tar, plain text) 10 -i, --ignore-version proceed even when server version mismatches 11 pg_dump version 12 -v, --verbose verbose mode 13 -Z, --compress=0-9 compression level for compressed formats 14 --help show this help, then exit 15 --version output version information, then exit 16 17 Options controlling the output content: 18 -a, --data-only dump only the data, not the schema 19 -b, --blobs include large objects in dump 20 -c, --clean clean (drop) schema prior to create 21 -C, --create include commands to create database in dump 22 -d, --inserts dump data as INSERT, rather than COPY, commands 23 -D, --column-inserts dump data as INSERT commands with column names 24 -E, --encoding=ENCODING dump the data in encoding ENCODING 25 -n, --schema=SCHEMA dump the named schema(s) only 26 -N, --exclude-schema=SCHEMA do NOT dump the named schema(s) 27 -o, --oids include OIDs in dump 28 -O, --no-owner skip restoration of object ownership 29 in plain text format 30 -s, --schema-only dump only the schema, no data 31 -S, --superuser=NAME specify the superuser user name to use in 32 plain text format 33 -t, --table=TABLE dump only matching table(s) (or views or sequences) 34 -T, --exclude-table=TABLE do NOT dump matching table(s) (or views or sequences) 35 -x, --no-privileges do not dump privileges (grant/revoke) 36 --disable-dollar-quoting disable dollar quoting, use SQL standard quoting 37 --disable-triggers disable triggers during data-only restore 38 --use-set-session-authorization 39 use SESSION AUTHORIZATION commands instead of 40 ALTER OWNER commands to set ownership 41 --gp-syntax dump with Greenplum Database syntax (default if gpdb) 42 --no-gp-syntax dump without Greenplum Database syntax (default if postgresql) 43 --function-oids dump only function(s) of given list of oids 44 --relation-oids dump only relation(s) of given list of oids 45 46 Connection options: 47 -h, --host=HOSTNAME database server host or socket directory 48 -p, --port=PORT database server port number 49 -U, --username=NAME connect as specified database user 50 -W, --password force password prompt (should happen automatically) 51 52 If no database name is supplied, then the PGDATABASE environment 53 variable value is used. 54 55 Report bugs to <bugs@greenplum.org>.
實例:app
1. 只導出postgres數據庫的數據,不包括模式 -s pg_dump -U gpadmin -f /postgres.sql -s postgres(數據庫名) 2. 導出postgres數據庫(包括數據) pg_dump -U gpadmin -f /postgres.sql postgres(數據庫名) 3. 導出postgres數據庫中表test01的數據 create database "test1" with owner="gpadmin" encoding='utf-8';(單引號,雙引號不能錯) pg_dump -U gpadmin -f /postgres.sql -t test1 postgres(數據庫名) 4. 導出postgres數據庫中表test1的數據,以insert語句的形式 pg_dump -U gpadmin -f /postgres.sql -t test1 --column-inserts postgres(數據庫名) 5. 恢復數據到gpdb數據庫 psql -U gpadmin -f /postgres.sql gpdb
備份1:socket
[gpadmin@greenplum01 ~]$ pg_dump -U gpadmin -F t -f /gpbackup/back2/gpdb.tar gpdb [gpadmin@greenplum01 ~]$
恢復:工具
[gpadmin@greenplum01 ~]$ pg_restore -U gpadmin -d gpdb /gpdb.tar [gpadmin@greenplum01 ~]$
備份2:post
[gpadmin@greenplum01 ~]$ pg_dump -U gpadmin -F c -f /gpbackup/back2/gpdb.tar gpdb
備份壓縮1:性能
[gpadmin@greenplum01 ~]$ pg_dump -U gpadmin gpdb | gzip > /gpbackup/back2/gpdb.gz [gpadmin@greenplum01 ~]$
恢復this
gunzip -c /gpdb.gz | psql -U gpadmin postgres
cat /gpdb.gz | gunzip | psql -U gpadmin postgres
備份切割:spa
pg_dump -U gpadmin -d gpdb | split -b 100k - gpback/gpb
恢復:
cat /gpback/gpb* | psql -U gpadmin postgres