1.并行備份
pg_dump -Fd?--gp-syntax -U gpadmin -p 5432 -h 172.19.0.2 -d postgres -j 4?-f /opt/greenplum/data/postgres_backup_$(date +%Y-%m-%d)
?
參數 含義
-Fd 使用 directory 格式(支持并行)
--gp-syntax 使用 Greenplum 特定語法(保留分布策略等)
-U gpadmin 指定連接用戶
-p 5432 數據庫端口
-h 172.19.0.2 數據庫主機地址
-d postgres 要備份的數據庫名
-j 4 使用 4 個并行任務進行備份(加快速度)
-f <dir> 指定輸出目錄(必須是一個目錄,不是文件)
?
2.并行恢復
?pg_restore -Fd?-U gpadmin -p 5432 -h 172.19.0.2 -d postgres -c --if-exists -j 4?/opt/greenplum/data/postgres_backup_2025-07-03
?
3.參數詳細解釋
3.1通用選項 (General options)
參數 | 全稱 | 含義 |
-f | --file=FILENAME | 指定輸出文件或目錄名 |
-F | `--format=c | c|d|t|p ?,默認為d |
-j | --jobs=NUM | 并行任務數(用于快速導出大數據庫) 只有 directory 格式(-Fd)才支持并行備份(即 -j 參數)。 |
-v | --verbose | 顯示詳細輸出信息 |
-V | --version | 顯示版本號并退出 |
-Z | --compress=0-9 | 設置壓縮級別(僅適用于支持壓縮的格式) |
--lock-wait-timeout=TIMEOUT | - | 表鎖等待超時時間(避免長時間阻塞) |
--no-sync | - | 不等待數據寫入磁盤(加快速度但有風險) |
?3.2控制輸出內容的選項 (Options controlling the output content)
參數 全稱 含義
-a --data-only 只導出數據,不包括 schema(表結構)
-b --blobs 包含大對象(BLOBs)
-B --no-blobs 不包含大對象
-c --clean 在恢復前刪除已有對象(DROP)
-C --create 導出中包含創建數據庫的命令
-E --encoding=ENCODING 使用指定編碼導出數據(如 UTF8)
-n --schema=PATTERN 只導出匹配的 schema(例如:-n public)
-N --exclude-schema=PATTERN 排除某些 schema
-O --no-owner 忽略對象所有權(在 plain 文本格式中使用)
-s --schema-only 只導出 schema,不包括數據
-S --superuser=NAME 指定超級用戶名稱(plain 格式中使用)
-t --table=PATTERN 只導出匹配的表(支持通配符)
-T --exclude-table=PATTERN 排除指定表
-x --no-privileges 不導出權限信息(GRANT/REVOKE)
--binary-upgrade - 僅供升級工具內部使用
--column-inserts - 數據以帶列名的 INSERT 形式導出
--disable-dollar-quoting - 禁用美元符號引用,使用標準 SQL 引號
--disable-triggers - 數據恢復時不觸發觸發器(適用于 --data-only)
--enable-row-security - 啟用行級安全策略(只導出當前用戶可訪問的數據)
--exclude-table-and-children=PATTERN - 不導出指定表及其子表(分區表)
--exclude-table-data=PATTERN - 不導出指定表的數據
--exclude-table-data-and-children=PATTERN - 不導出指定表及其子表的數據
--extra-float-digits=NUM - 控制浮點數精度
--if-exists - DROP 對象時加上 IF EXISTS
--inserts - 數據以 INSERT 語句形式導出(不是 COPY)
--load-via-partition-root - 通過主表加載分區數據
--no-comments - 不導出注釋
--no-publications - 不導出 publication 信息
--no-security-labels - 不導出安全標簽信息
--no-subscriptions - 不導出訂閱信息
--no-synchronized-snapshots - 并行作業中不使用同步快照
--no-tablespaces - 不導出表空間分配信息
--no-unlogged-table-data - 不導出未記錄日志的表數據
--on-conflict-do-nothing - INSERT 加上 ON CONFLICT DO NOTHING
--quote-all-identifiers - 所有標識符加引號(即使不是關鍵字)
--rows-per-insert=NROWS - 每個 INSERT 插入多少行(隱含 --inserts)
--section=SECTION - 只導出指定部分:<br>pre-data, data, post-data
--serializable-deferrable - 保證 dump 能在可串行化事務中運行
--snapshot=SNAPSHOT - 使用指定快照進行導出
--strict-names - 要求 schema/table 模式必須匹配至少一個對象
--table-and-children=PATTERN - 只導出指定表及其子表
--use-set-session-authorization - 使用 SET SESSION AUTHORIZATION 而非 ALTER OWNER
--gp-syntax - 使用 Greenplum 語法導出(默認如果是 gpdb)
--no-gp-syntax - 不使用 Greenplum 語法(默認是 PostgreSQL)
--function-oids - 只導出指定 OIDs 的函數
--relation-oids - 只導出指定 OIDs 的關系(表等)
3.3連接選項 (Connection options)
參數 全稱 含義
-d --dbname=DBNAME 要導出的數據庫名稱
-h --host=HOSTNAME 數據庫服務器地址(IP 或主機名)
-p --port=PORT 數據庫端口號
-U --username=NAME 連接數據庫使用的用戶名
-w --no-password 不提示輸入密碼
-W --password 強制提示輸入密碼
--role=ROLENAME - 在 dump 前執行 SET ROLE