文章目錄
- openGauss學習筆記-151 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_basebackup
- 151.1 背景信息
- 151.2 前提條件
- 151.3 語法
- 151.4 示例
- 151.5 從備份文件恢復數據
openGauss學習筆記-151 openGauss 數據庫運維-備份與恢復-物理備份與恢復之gs_basebackup
151.1 背景信息
openGauss部署成功后,在數據庫運行的過程中,會遇到各種問題及異常狀態。openGauss提供了gs_basebackup工具做基礎的物理備份。gs_basebackup的實現目標是對服務器數據庫文件的二進制進行拷貝,其實現原理使用了復制協議。遠程執行gs_basebackup時,需要使用系統管理員賬戶。gs_basebackup當前支持熱備份模式和壓縮格式備份。
說明:
- gs_basebackup僅支持主機和備機的全量備份,不支持增量。
- gs_basebackup當前支持熱備份模式和壓縮格式備份。
- gs_basebackup在備份包含絕對路徑的表空間時,如果在同一臺機器上進行備份,可以通過tablespace-mapping重定向表空間路徑,或使用歸檔模式進行備份。
- 若打開增量檢測點功能且打開雙寫,gs_basebackup也會備份雙寫文件。
- 若pg_xlog目錄為軟鏈接,備份時將不會建立軟鏈接,會直接將數據備份到目的路徑的pg_xlog目錄下。
- 備份過程中收回用戶備份權限,可能導致備份失敗或者備份數據不可用。
- 如果因為網絡臨時故障等原因導致Server端無應答,gs_basebackup將在最長等待120秒后退出。
151.2 前提條件
- 可以正常連接openGauss數據庫。
- 備份過程中用戶權限沒有被回收。
- pg_hba.conf中需要配置允許復制鏈接,且該連接必須由一個系統管理員建立。
- 如果xlog傳輸模式為stream模式,需要配置max_wal_senders的數量, 至少有一個可用。
- 如果xlog傳輸模式為fetch模式,有必要把wal_keep_segments參數設置得足夠高,這樣在備份末尾之前日志不會被移除。
- 在進行還原時,需要保證各節點備份目錄中存在備份文件,若備份文件丟失,則需要從其他節點進行拷貝。
151.3 語法
-
顯示幫助信息
gs_basebackup -? | --help
-
顯示版本號信息
gs_basebackup -V | --version
參數說明
gs_basebackup參數可以分為如下幾類:
-
-D directory
備份文件輸出的目錄,必選項。
-
常用參數:
-
-c,–checkpoint=fast|spread
設置檢查點模式為fast或者spread(默認)。
-
-l,–label=LABEL
為備份設置標簽。
-
-P,–progress
啟用進展報告。
-
-v, –verbose
啟用冗長模式。
-
-V, –version
打印版本后退出。
-
-?,–help
顯示gs_basebackup命令行參數。
-
-T,–tablespace-mapping=olddir=newdir
在備份期間將目錄olddir中的表空間重定位到newdir中。為使之有效,olddir必須正好匹配表空間所在的路徑(但如果備份中沒有包含olddir中的表空間也不是錯誤)。olddir和newdir必須是絕對路徑。如果一個路徑湊巧包含了一個=符號,可用反斜線對它轉義。對于多個表空間可以多次使用這個選項。
-
-F,–format=plain|tar
設置輸出格式為plain(默認)或者tar。沒有設置該參數的情況下,默認–format=plain。plain格式把輸出寫成平面文件,使用和當前數據目錄和表空間相同的布局。當集簇沒有額外表空間時,整個數據庫將被放在目標目錄中。如果集簇包含額外的表空間,主數據目錄將被放置在目標目錄中,但是所有其他表空間將被放在它們位于服務器上的相同的絕對路徑中。tar模式將輸出寫成目標目錄中的 tar 文件。主數據目錄將被寫入到一個名為base.tar的文件中,并且其他表空間將被以其 OID 命名。生成的tar包,需要用gs_tar命令解壓。
-
-X, –xlog-method=fetch|stream
設置xlog傳輸方式。沒有設置該參數的情況下,默認–xlog-method=stream。在備份中包括所需的預寫式日志文件(WAL文件)。這包括所有在備份期間產生的預寫式日志。fetch方式在備份末尾收集預寫式日志文件。因此,有必要把wal_keep_segments參數設置得足夠高,這樣在備份末尾之前日志不會被移除。如果在要傳輸日志時它已經被輪轉,備份將失敗并且是不可用的。stream方式在備份被創建時流傳送預寫式日志。這將開啟一個到服務器的第二連接并且在運行備份時并行開始流傳輸預寫式日志。因此,它將使用最多兩個由max_wal_senders參數配置的連接。只要客戶端能保持接收預寫式日志,使用這種模式不需要在主控機上保存額外的預寫式日志。
-
-x,
–xlog 使用這個選項等效于和方法fetch一起使用-X。
-
-Z –compress=level
啟用對 tar 文件輸出的 gzip 壓縮,并且制定壓縮級別(0 到 9,0 是不壓縮,9 是最佳壓縮)。只有使用 tar 格式時壓縮才可用,并且會在所有tar文件名后面自動加上后綴.gz。
-
-z
啟用對 tar 文件輸出的 gzip 壓縮,使用默認的壓縮級別。只有使用 tar 格式時壓縮才可用,并且會在所有tar文件名后面自動加上后綴.gz。
-
-t,–rw-timeout
設置備份期間checkpoint的時間限制,默認限制時間為120s。當數據庫全量checkpoint耗時較長時,可以適當增大rw-timeout限制時間。
-
-
連接參數
-
-h, –host=HOSTNAME
指定正在運行服務器的主機名或者Unix域套接字的路徑。
-
-p,–port=PORT
指定數據庫服務器的端口號。
可以通過port參數修改默認端口號。
-
-U,–username=USERNAME
指定連接數據庫的用戶。
-
-s, –status-interval=INTERVAL
發送到服務器的狀態包的時間(以秒為單位)。
-
-w,–no-password
不出現輸入密碼提示。
-
-W, –password
當使用-U參數連接本地數據庫或者連接遠端數據庫時,可通過指定該選項出現輸入密碼提示。
-
151.4 示例
gs_basebackup -D /home/test/trunk/install/data/backup -h 127.0.0.1 -p 21233
INFO: The starting position of the xlog copy of the full build is: 0/1B800000. The slot minimum LSN is: 0/1B800000.
151.5 從備份文件恢復數據
當數據庫發生故障時需要從備份文件進行恢復。因為gs_basebackup是對數據庫按二進制進行備份,因此恢復時可以直接拷貝替換原有的文件,或者直接在備份的庫上啟動數據庫。
說明:
- 若當前數據庫實例正在運行,直接從備份文件啟動數據庫可能會存在端口沖突,這時需要修改配置文件的port參數,或者在啟動數據庫時指定一下端口。
- 若當前備份文件為主備數據庫,可能需要修改一下主備之間的復制連接。即配置文件中的postgre.conf中的replconninfo1、 replconninfo2等。
- 若配置文件postgresql.conf的參數data_directory打開且有配置,當使用備份目錄啟動數據庫時候,data_directory和備份目錄不同會導致啟動失敗。可以修改data_directory的值為新的數據目錄,或者注釋掉該參數。
若要在原庫的地方恢復數據庫,參考步驟如下:
- 停止數據庫服務器, 具體操作請參見《數據庫運維指南》。
- 將原數據庫和所有表空間復制到另外一個位置,以備后面需要。
- 清理原庫中的所有或部分文件。
- 使用數據庫系統用戶權限從備份中還原需要的數據庫文件。
- 若數據庫中存在鏈接文件,需要修改使其鏈接到正確的文件。
- 重啟數據庫服務器,并檢查數據庫內容,確保數據庫已經恢復到所需的狀態。
說明:
- 暫不支持備份文件增量恢復。
- 恢復后需要檢查數據庫中的鏈接文件是否鏈接到正確的文件。
👍 點贊,你的認可是我創作的動力!
?? 收藏,你的青睞是我努力的方向!
?? 評論,你的意見是我進步的財富!