GreenPlum 大數據平臺--非並行備份(六)

一,非並行備份(pg_dump)

  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

 

  

 

相關文章
相關標籤/搜索