天天看點

gaussdb 實體備份恢複【gs_rman 備份】【03】

備份

gs_rman支援線上備份,它主要包含三種備份類型:全量備份、增量備份和備份WAL歸檔日志。在每一次備份後都應使用validate指令進行驗證。

前提條件

已參照初始化配置完成備份目錄初始化;在每個時間線上的增量備份和WAL歸檔日志備份之前必須至少完成了一次全量備份;gs_rman與gaussdb在同一台伺服器上。

gaussdb 實體備份恢複【gs_rman 備份】【03】

參數說明

備份時特有的參數

參數名/縮寫 描述
-b / --backup-mode mode "指定備份方式。 MODE的取值範圍和預設值如下: 取值範圍: Full:全量備份,備份整個資料庫和WAL歸檔檔案,縮寫為F/f。 Incremental:增量備份,對在上一次驗證過的備份之後的修改過的檔案或頁進行備份,縮寫為I/i。 Archive:僅對歸檔檔案進行備份,縮寫為A/a。 預設值:如果沒有指定,将持續還原到最新的備份時間。"
-s / --with-serverlog "備份指定的服務日志檔案。 取值範圍:如果指定了-S參數,則必須指定此參數。 預設值:無。"
-C / --smooth-checkpoint 在備份前執行smooth checkpoint。如果不指定此參數則備份前不執行smooth checkpoint操作。

-Z / --compress-data

-R / --compress-data-bzip

-L / --compress-data-lzma

"-Z指定使用zlib壓縮庫壓縮備份檔案。 -R指定使用bzip壓縮庫壓縮備份檔案。 -L指定使用lzma壓縮庫壓縮備份檔案。 如果不指定這3個參數的任意一個,則表示不對備份檔案進行壓縮。"
--keep-data-generations=N "儲存指定代數(備份的數量)的全量備份資料。 N的取值範圍和預設值如下: 取值範圍:正整數,1~2147483647。 預設值:2147483647。"
--keep-data-day=DAY "儲存指定天數的全量備份資料。 說明: 系統将自動删除兩個條件(keep-data-generations和keep-data-days)都不符合的備份資料。 DAY的取值範圍和預設值如下: 取值範圍:正整數,1~2147483647。 預設值:2147483647。"
--keep-arclog-files=NUM "儲存指定數量的WAL歸檔檔案。 NUM的取值範圍和預設值如下: 取值範圍:正整數,1~2147483647。 預設值:2147483647。"
--keep-arclog-days=DAY "儲存指定天數的WAL歸檔檔案,預設不限制。 說明: 系統将自動删除兩個條件(keep-arclog-files和keep-arclog-days)都不符合的備份資料。 DAY的取值範圍和預設值如下: 取值範圍:正整數,1~2147483647。 預設值:2147483647。"
--keep-srvlog-files=NUM "儲存指定數量的日志檔案。 NUM的取值範圍和預設值如下: 取值範圍:正整數,1~2147483647。 預設值:2147483647。"
--keep-srvlog-days=DAY "儲存指定天數的日志檔案。 說明: 系統将自動删除兩個條件(keep-srvlog-files和keep-srvlog-days)都不符合的備份資料。 DAY的取值範圍和預設值如下: 取值範圍:正整數,1~2147483647。 預設值:2147483647。"

備份時公共參數

參數名/縮寫 描述
-d / --dbname dbname "指定要連接配接的資料庫名稱,如postgres。 DBNAME的取值範圍和預設值如下: 取值範圍:GaussDB中存在的資料庫名稱。 預設值:與目前作業系統使用者同名的資料庫名稱。"
-h / --host HOSTNAME "指定資料庫服務所在的IP位址或者主機名。 HOSTNANME的取值範圍和預設值如下: 取值範圍: 127.0.0.1 localhost 預設值:localhost。"
-p / --port port "指定資料庫服務的端口号。 PORT的取值範圍和預設值如下: 取值範圍:GaussDB的端口号。 預設值:5432。"
-U / --username username "指定連接配接到資料庫的資料庫使用者名。 USERNAME的取值範圍和預設值如下: 取值範圍:GaussDB中存在的資料庫使用者名稱。 預設值:與目前作業系統使用者同名的資料庫使用者的名稱。"
-d / --gaussdata path "指定資料庫資料存放位置。 說明: gs_rman在root使用者下使用sudo指令切換到某一使用者運作時,需要增加此參數,以指定資料庫資料存放位置。 PATH的取值範圍和預設值如下: 取值範圍:GaussDB的資料目錄。 預設值:與GaussDB的環境變量GAUSSDATA的值相同。"
-A / --arclog-path path "指定資料庫WAL歸檔日志檔案存放位置。 PATH的取值範圍和預設值如下: 取值範圍:GaussDB的WAL歸檔日志目錄。 預設值:可以通過環境變量ARCLOG_PATH 指定預設值,詳細請參見初始化配置。"
-S / --srvlog-path path "指定資料庫日志存放位置。 PATH的取值範圍和預設值如下: 取值範圍:GaussDB的運作日志目錄。 預設值:$GAUSSDATA/pg_log。也可以通過環境變量SRVLOG_PATH指定預設值,詳細請參見初始化配置。"
-b / --backup-path path "指定備份資料存放位置。 PATH的取值範圍和預設值如下: 取值範圍:GaussDB的資料目錄。 預設值:可以通過環境變量BACKUP_PATH指定預設值,詳細請參見初始化配置。"
--debug 顯示指令的調試資訊。
--verbose / -v 顯示指令的執行資訊。

1. 檢查參數

檢查WAL日志歸檔相關參數是否配置正确,否則無法對WAL歸檔日志進行備份,将導緻備份變得沒有意義;gs_rman的備份操作可以在單機上執行,也可以在雙機環境的主機上執行。

參數名 取值要求 檢查方法
archive_mode

單機:on

雙機:on

以檢查archive_mode參數為例,使用下面的指令檢查:

cd /opt/gaussdb/data

cat postgresql.conf |grep archive_mode

wal_level

單機:archive

雙機:hot_standby

hot_standby

單機:off

雙機:on

2. 全量備份

說明:在進行增量備份和備份WAL之前應該至少進行一次全量備份,否則備份操作無法正常執行。

執行如下指令進行全量備份:

gs_rman backup -d postgres -p 5432 -B /home/gaussdba/rman_backup -b F
           

系統輸出如下資訊則表示備份成功,否則請根據提示資訊排查錯誤:

gaussdba: database backup start 
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
           

3. 增量備份

說明:增量備份隻備份上一次全量備份或增量備份之後修改的檔案,包括新增的WAL歸檔日志。

執行如下指令進行增量備份:

gs_rman backup -d postgres -p 1258 -B /home/gaussdba/rman_backup -b I
           

系統輸出如下資訊則表示備份成功,否則請根據提示資訊排查錯誤:

gaussdba: database backup start 
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
           

4. 備份WAL歸檔日志

執行如下指令進行WAL歸檔日志的備份:

gs_rman backup -d postgres -p 1258 -B /home/gaussdba/rman_backup -b a
           

系統輸出如下資訊則表示備份成功,否則請根據提示資訊排查錯誤:

INFO: database backup start 
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
           

5. 對備份檔案的正确性進行驗證

gs_rman validate -B /home/gaussdba/rman_backup
           

系統輸出類似如下資訊表示驗證成功,否則請根據提示資訊排查錯誤:

gaussdba: validate: 2013-01-16 19:26:31 backup and archive log files by CRC
           

繼續閱讀