1. 程式人生 > 其它 >postgresql 資料庫備份與恢復

postgresql 資料庫備份與恢復

postgresql 資料庫備份與恢復流程

1. 資料庫登入

1.1 切換到postgres使用者

su postgres

1.2 登入資料庫

psql -U postgres -d postgres -h 127.0.0.1 -p 5895

1.3 建立用於恢復資料的資料庫

create database newdb;

2. 資料備份

pg_dump -v -c -if-exist -f /data/olddb20220510.bak "host=127.0.0.1 port=5895 user=postgres password=abc123 dbname=olddb"

3. 資料恢復

psql -U postgres -d newdb-h 127.0.0.1 -p 5895 -f /data/olddb20220510.bak

-U 使用者名稱

-d 要恢復的資料庫名稱

-h 資料庫ip

-p pg服務埠號

-f --file=FILENAME 檔案或目錄名

4. pg_dump 備份引數意義

​ pg_dump 把一個數據庫轉儲為純文字檔案或者是其它格式.

用法:
​ pg_dump [選項]... [資料庫名字]

​ 一般選項:
-f, --file=FILENAME 輸出檔案或目錄名
-F, --format=c|d|t|p 輸出檔案格式 (定製, 目錄, tar)
​ 明文 (預設值))
-j, --jobs=NUM 執行多個並行任務進行備份轉儲工作
-v, --verbose 詳細模式
-V, --version 輸出版本資訊,然後退出
-Z, --compress=0-9 被壓縮格式的壓縮級別
--lock-wait-timeout=TIMEOUT 在等待表鎖超時後操作失敗
-?, --help 顯示此幫助, 然後退出

​ 控制輸出內容選項:
-a, --data-only 只轉儲資料,不包括模式
-b, --blobs 在轉儲中包括大物件
-c, --clean 在重新建立之前,先清除(刪除)資料庫物件
-C, --create 在轉儲中包括命令,以便建立資料庫
-E, --encoding=ENCODING 轉儲以ENCODING形式編碼的資料
-n, --schema=SCHEMA 只轉儲指定名稱的模式
-N, --exclude-schema=SCHEMA 不轉儲已命名的模式
-o, --oids 在轉儲中包括 OID
-O, --no-owner 在明文格式中, 忽略恢復物件所屬者

-s, --schema-only 只轉儲模式, 不包括資料
-S, --superuser=NAME 在明文格式中使用指定的超級使用者名稱
-t, --table=TABLE 只轉儲指定名稱的表
-T, --exclude-table=TABLE 不轉儲指定名稱的表
-x, --no-privileges 不要轉儲許可權 (grant/revoke)
--binary-upgrade 只能由升級工具使用
--column-inserts 以帶有列名的INSERT命令形式轉儲資料
--disable-dollar-quoting 取消美元 (符號) 引號, 使用 SQL 標準引號
--disable-triggers 在只恢復資料的過程中禁用觸發器
--enable-row-security 啟用行安全性(只轉儲使用者能夠訪問的內容)
--exclude-table-data=TABLE 不轉儲指定名稱的表中的資料
--if-exists 當刪除物件時使用IF EXISTS
--inserts 以INSERT命令,而不是COPY命令的形式轉儲資料
--no-security-labels 不轉儲安全標籤的分配
--no-synchronized-snapshots 在並行工作集中不使用同步快照
--no-tablespaces 不轉儲表空間分配資訊
--no-unlogged-table-data 不轉儲沒有日誌的表資料
--quote-all-identifiers 所有識別符號加引號,即使不是關鍵字
--section=SECTION 備份命名的節 (資料前, 資料, 及 資料後)
--serializable-deferrable 等到備份可以無異常執行
--snapshot=SNAPSHOT 為轉儲使用給定的快照
--strict-names 要求每個表和/或schema包括模式以匹配至少一個實體
--use-set-session-authorization
使用 SESSION AUTHORIZATION 命令代替
ALTER OWNER 命令來設定所有權

​ 聯接選項:
-d, --dbname=DBNAME 對資料庫 DBNAME備份
-h, --host=主機名 資料庫伺服器的主機名或套接字目錄
-p, --port=埠號 資料庫伺服器的埠號
-U, --username=名字 以指定的資料庫使用者聯接
-w, --no-password 永遠不提示輸入口令
-W, --password 強制口令提示 (自動)
--role=ROLENAME 在轉儲前執行SET ROLE

​ 如果沒有提供資料庫名字, 那麼使用 PGDATABASE 環境變數
的數值.