1 概述

數據庫備份是數據安全與業務連續性的生命線,它如同為珍貴數字資產撐起的一把保護傘。備份的意義不僅在於應對硬件故障、系統崩潰等常見風險,更在於防範人為誤操作、惡意攻擊、自然災害等意外威脅。定期可靠的備份策略能在災難發生時,將業務中斷時間縮至最短,做到數據不丟失。在實際應用情況下,備份需要拷貝到異地,保證數據冗餘,保證數據庫服務器宕機不能啓動時,也可以通過異地備份進行數據庫恢復。

GBase 8c多模多態數據庫支持行存、列存、向量、時序等多種存儲模式,以及集中式、分佈式等多種部署形態。本文主要介紹如何使用備份服務器,在GBase 8c集中式場景下進行物理備份和恢復操作。備份工具使用GBase 8c內置的命令行工具gs_probackup。過程中,使用一台備份服務器遠程對GBase 8c數據庫進行備份,備份數據保存在備份服務器上。

2 備份配置

2.1 備份配置

開啓數據庫歸檔相關配置參數

gs_guc reload -N all -I all -c "archive_mode=on"
gs_guc reload -N all -I all -c "archive_timeout=1800"
gs_guc reload -N all -I all -c "archive_command = 'scp %p gbase@192.168.138.202:/data/archivelog/%f'"
gs_guc reload -N all -I all -c “enable_cbm_tracking=on”

參數説明:

archive_mode: 是否開啓歸檔操作。
archive_timeout:歸檔週期。
archive_command:設置的用於歸檔WAL日誌的命令,建議歸檔路徑為絕對路徑。
enable_cbm_tracking:數據庫實例的全量和增量備份時需要開啓此參數。

配置備份服務器的訪問權限

遠程備份需要開啓備份機器對數據庫的replication登陸權限,這裏可以對指定備份機器開啓。

gs_guc reload -N all -I all -h “host replication all 0.0.0.0/0 md5”

遠程備份還需要開通備份用户到gbase安裝用户的用户的免密ssh權限,配置免密

ssh-keygen -t rsa
ssh-copy-id user@remote_host

初始化備份

在備份服務器上初始化一個備份目錄,以及GBase8c數據庫信息

gs_probackup init  -B /home/gbase/backup
gs_probackup add-instance -B /home/gbase/backup -D /home/gbase/backup --instance gbase_cluster --remote-host 192.168.138.201 --remote-user gbase
gs_probackup set-config -B /home/gbase/backup --instance gbase_cluster --retention-redundancy 7 --retention-window 7
gs_probackup show-config -B /home/gbase/backup --instance gbase_cluster

參數説明:
int:表示初始化一個數據目錄用於數據庫備份;
add-instance:添加一個備份實例,這裏可以一次備份多個實例,但是需要實例名稱不能相同;
set-config:寫入備份的配置信息,主要是備份實例的名稱,備份保留策略;
show-config:打印備份的配置基本信息;

3 物理備份

3.1 全量備份

gs_probackup backup -B /home/gbase/backup -b FULL -h 192.168.138.201 -p 15400 -U backup -W XXXX --instance gbase_cluster --delete-expired -d postgres --compress-algorithm=zlib --compress-level=5 --remote-host  192.168.138.201 --remote-user gbase

參數説明:

-B :備份保存的目錄;
-b:指定備份模式,FULL表示全量備份,PTRACK表示增量備份;
-h:指定數據庫的ipd地址;
-p:指定數據庫端口;
-U:指定數據庫備份時使用的gbase的用户名;
-W:指定備份用户的密碼;
--instance:數據庫實例名稱;
--delete-expired:備份後刪除過期的備份文件;
-d:備份時連接的數據庫名稱;
--compress-algorithm:指定備份文件的壓縮方法;
--compress-leve:備份文件的壓縮級別;
--remote-host:遠程服務器,通常和-h參數相同
--remote-user:遠程用户,這裏指系統用户,非gbase8c的數據庫用户

3.2 增量備份

增量備份的前提條件:需要一次完整且正常的全量備份

gs_probackup backup -B /home/gbase/backup -b PTRACK -h 192.168.138.201 -p 15400 -U backup -W XXXX --instance gbase_cluster --delete-expired -d postgres --compress-algorithm=zlib --compress-level=5  --remote-host 192.168.138.201 --remote-user gbase

參數説明:

-b PTRACK 表示備份時採取增量備份

其他參數如全量備份。

4 恢復

避免數據發送二次損壞,把數據庫恢復到其他機器或者目錄,進行數據核對驗證後再導入生產數據庫。恢復時可以先將備份文件拷貝指恢復的目標服務器,也可以直接在備份服務器做遠程恢復。

4.1 遠程恢復

從備份服務器直接恢復到192.168.138.202服務器。

gs_probackup restore -B /home/gbase/backup/ --instance=gbase_cluster -D /home/gbase/restore_test -i SMV8NY --remote-host=192.168.138.202 --remote-user=gbase

啓動數據庫後比對校驗數據:

gs_ctl start -D /home/gbase/restore_test/

參數説明:

-i SMV8NY :表示恢復到備份編號為SMV8NY這次備份。

其他參數和備份一致

4.2 本地恢復

先把備份拷貝到192.168.138.202服務器以後,在202服務器恢復

gs_probackup restore -B /home/gbase/backup/ --instance=gbase_cluster -D /home/gbase/restore_test -i SMV8NY

啓動數據庫後對比校驗數據:

gs_ctl start -D /home/gbase/restore_test/