GBase新聞
GBASE南大通用數據庫“閃回”功能使用介紹
在數據庫管理領域,數據的保護與恢復一直是至關重要的任務。針對數據庫開發人員“誤刪”數據這一高危情境,南大通用基于共享存儲的數據庫集群GBase 8s內置“閃回”工具,提供閃回功能來確保數據的完整性和可靠性,(馬大哈們)再也不用擔心“跑路”了。
GBASE南大通用閃回工具 onflsbk.sh 能夠完成表的閃回功能,給用戶提供單張表回退到歷史某一位置的快照。具體包括 5 個步驟,如下表:
閃回工具安裝和配置
這一步驟涉及工具的安裝與配置文件的參數設置。閃回工具的安裝包為綠色版的 tar包,只需放到指定的服務器解壓即可,但需要注意解壓后目錄以及文件屬主需要擁有執行 onlog 的權限 。
閃回工具可以通過配置目錄:[安裝目錄名]/conf/ 下的參數文件config.properties來配置參數,包括:jdbc 的url,數據庫用戶名/密碼,字符集,是否支持 32K,數據庫目錄等等。
flashback.conf 配置文件參數說明
閃回工具使用
閃回工具通過執行 shell 腳本:[安裝目錄名]/onflsbk.sh 來實現閃回功能。
閃回語法圖
閃回程序分為“按照時間閃回”和“按照lsn號閃回”。
a. 按照時間閃回:
./onflsbk.sh -D database_name -d 'date_time' -r table_name
-D database_name 是閃回命令用來選擇數據庫的參數,輸入database_name 是被選擇的數據庫名;
-d 'date_time' 是閃回命令指定還原時間點的參數,輸入的 'date_time' 是用來指定還原的目標時間點,格式: 'yyyy-mm-dd hh24:mi:ss',如果選擇該參數,說明這條閃回命令是將表的數據,命令行中不能出現 -l 'lsn_number';
-r table_name 是閃回命令用來選擇表的參數,該參數必須配合 -l 'lsn_number' 或 -d 'date_time' 中的一個參數使用,輸入的 table_name 是被選擇將要還原的表名,命令行中不能出現 -d 'date_time';
b. 按照 lsn 號閃回:
./onflsbk.sh -D database_name -l 'lsn_number' -r table_name
-D database_name 是閃回命令用來選擇數據庫的參數,輸入的 database_name 是 被選擇的數據庫名;
-l 'lsn_number' 是閃回命令指定邏輯日志的 LSN 位置的參數,輸入的'lsn_number' 是用來指定邏輯日志 LSN 位置,如果選擇該參數說明這條閃回命令是通過指定邏 輯日志的 LSN 位置進行表的數據還原;
-r table_name 是閃回命令用來選擇表的參數,該參數必須配合-l'lsn_number' 或 -d 'date_time' 中的一個參數使用,輸入的 table_name 是被選擇將要還原的表名,命令行中不能出現 -d 'date_time';
c. 閃回到新表:
通過 LSN 閃回到新表語法:
onflsbk.sh -D database_name -l 'lsn_number' -r table_name -t new_table_name
通過時間閃回到新表語法:
onflsbk.sh -D database_name -d 'date_time' -r table_name -t new_table_name
示例1:下面我們以“按照時間閃回”的方式進行演示。
首先,創建測試表 test_fls2;
create table test_fls2 (id int,name varchar(20),time1 datetime year to second,primary key (id));
插入測試數據,兩條記錄間隔 5 秒:
insert into test_fls2 values (1,'a',sysdate);
insert into test_fls2 values (2,'b',sysdate);
查詢結果如下:
執行按照時間閃回命令:
./onflsbk.sh -D test -d "2023-08-15 13:38:50" -r test_fls2
會出現一個交互窗口,提示內容大概意思是:如果當前時間回溯到指定還原時間點區間內存在DDL操作很可能會讓閃回報錯或者閃回成功后表數據是不準確的。
直接回車或者輸入“1”會繼續執行,輸入“2”則會直接退出;
我們這里輸入“1”繼續執行:
最后顯示處理完成,回到工具查看表數據,已經回退到插入數據之前:
再次執行按照時間閃回命令,時間選擇在插入第一條記錄和第二條記錄中間:
./onflsbk.sh -D test -d "2023-08-15 13:38:52" -r test_fls2
最后顯示處理完成,回到工具查看表數據,已經回退到插入數據之前:
再次執行按照時間閃回命令,時間選擇在插入第一條記錄和第二條記錄中間:
./onflsbk.sh -D test -d "2023-08-15 13:38:58" -r test_fls2
最后顯示處理完成,回到工具查看表數據,已經回退到插入數據之前:
示例2:按照 LSN 號閃回的示例如下:
通過 onlog -l 查看對應時間的 LSN 號:
執行 LSN 號閃回命令:
./onflsbk.sh -D test -l '77:0xc5ec018' -r test_fls2
最后顯示處理完成,回到工具查看表數據,已經回退到插入數據之前:
使用下一個 LSN 號進行閃回
./onflsbk.sh -D test -l '77:0xc5ec050' -r test_fls2
最后顯示處理完成,回到工具查看表數據,已經回退到插入第一條數據之后: