?概述
OceanBase 最新發布的V4.3.5 中,備份歸檔服務已適配阿里云OSS的 WORM特性,支持將配置了合規保留策略的OSS Bucket作為備份存儲的目的端,有效滿足用戶數據安全存儲與合規性的需求。
阿里云對象存儲(OSS)的 WORM(Write Once Read Many)特性,可讓用戶通過命令為Bucket設置保留策略,在策略規定的Object保留期內,僅支持對Object進行上傳和讀取。只有當Object保留期限到期后,才能進行修改或刪除操作。
使用方式
OceanBase 4.3.5bp2及以上版本支持在設置OSS介質的備份/歸檔路徑時指定enable_worm參數。enable_worm參數默認為false,當設置enable_worm參數為true后,observer對相應路徑的寫入及刪除操作將適配OSS WORM的要求。
1. 注意事項
(1) 僅有OSS介質路徑支持設置enable_worm
(2) 設置enable_worm=true時需要設置checksum_type為md5(備份歸檔路徑默認為md5)
(3) enable_worm參數配置不支持變更
(4) 需要用戶明確bucket worm策略被正確設置
2. 配置示例
不帶enable_worm參數的備份歸檔路徑設置示例
alter system set log_archive_dest='location=oss://example_path/archive?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&acces_key=CCCCCC&checksum_type=md5' tenant=xxxx;
alter system set data_backup_dest='oss://example_path/data?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&acces_key=CCCCCC&checksum_type=md5' tenant=xxxx;
設置enable_worm參數的備份歸檔路徑示例
alter system set log_archive_dest='location=oss://example_path/archive?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&acces_key=CCCCC&checksum_type=md5&enable_worm=true' tenant=xxxx;
alter system set data_backup_dest='oss://example_path/data?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&acces_key=CCCCC&checksum_type=md5&enable_worm=true' tenant=xxxx;
設置成功后可以在視圖CDB_OB_BACKUP_STORAGE_INFO、DBA_OB_BACKUP_STORAGE_INFO中extension字段中看到enable_worm參數配置信息
//不帶enable_worm參數的備份歸檔路徑設置視圖展示結果
MySQL [oceanbase]> select PATH,DEST_TYPE,EXTENSION from CDB_OB_BACKUP_STORAGE_INFO;
+----------------------------+-------------+-------------------+
| PATH | DEST_TYPE | EXTENSION |
+----------------------------+-------------+-------------------+
| oss://example_path/archive | archive_log | checksum_type=md5 |
| oss://example_path/data | backup_data | checksum_type=md5 |
+----------------------------+-------------+-------------------+
//帶enable_worm參數的備份歸檔路徑設置視圖展示結果
MySQL [oceanbase]> select PATH,DEST_TYPE,EXTENSION from CDB_OB_BACKUP_STORAGE_INFO;
+----------------------------+-------------+----------------------------------------------------------+
| PATH | DEST_TYPE | EXTENSION |
+----------------------------+-------------+----------------------------------------------------------+
| oss://example_path/archive | archive_log | checksum_type=md5&enable_worm=true |
| oss://example_path/data | backup_data | checksum_type=md5&enable_worm=true |
+----------------------------+-------------+----------------------------------------------------------+
備份路徑可以在視圖CDB_OB_BACKUP_PARAMETER/DBA_OB_BACKUP_PARAMETER中value字段中看到enable_worm參數配置信息
//不帶enable_worm參數的備份路徑設置視圖展示結果
select * from CDB_OB_BACKUP_PARAMETER;
+-----------+------------------+-------------------------------------------------------------------------------------------------------------+
| TENANT_ID | NAME | VALUE |
+-----------+------------------+-------------------------------------------------------------------------------------------------------------+
| 1002 | data_backup_dest | oss://example_path/data?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&encrypt_key=CCCCCC&checksum_type=md5 |
+-----------+------------------+-------------------------------------------------------------------------------------------------------------+
//帶enable_worm參數的備份路徑設置視圖展示結果
select * from CDB_OB_BACKUP_PARAMETER;
+-----------+------------------+------------------------------------------------------------------------------------------------------------------------------+
| TENANT_ID | NAME | VALUE |
+-----------+------------------+------------------------------------------------------------------------------------------------------------------------------+
| 1002 | data_backup_dest | oss://example_path/data?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&encrypt_key=CCCCCC&checksum_type=md5&enable_worm=true |
+-----------+------------------+------------------------------------------------------------------------------------------------------------------------------+
歸檔路徑可以在CDB_OB_ARCHIVE_DEST/DBA_OB_ARCHIVE_DEST中看到enable_worm參數配置信息
//不帶enable_worm參數的歸檔路徑設置視圖展示結果
select * from CDB_OB_ARCHIVE_DEST;
+-----------+---------+-----------------------+---------------------------------------------------------------------------------------------------------------+
| TENANT_ID | DEST_NO | NAME | VALUE |
+-----------+---------+-----------------------+---------------------------------------------------------------------------------------------------------------+
| 1002 | 0 | binding | OPTIONAL |
| 1002 | 0 | dest_id | 1002 |
| 1002 | 0 | path | oss://example_path/archive?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&encrypt_key=BBBBBB&checksum_type=md5|
| 1002 | 0 | piece_switch_interval | 1d |
| 1002 | 0 | state | ENABLE |
+-----------+---------+-----------------------+---------------------------------------------------------------------------------------------------------------+
//帶enable_worm參數的歸檔路徑設置視圖展示結果
select * from CDB_OB_ARCHIVE_DEST;
+-----------+---------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------+
| TENANT_ID | DEST_NO | NAME | VALUE |
+-----------+---------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------+
| 1002 | 0 | binding | OPTIONAL |
| 1002 | 0 | dest_id | 1002 |
| 1002 | 0 | path | oss://example_path/archive?host=cn-heyuan.aliyuncs.com&access_id=AAAAAAAA&encrypt_key=BBBBBB&checksum_type=md5&enable_worm=true|
| 1002 | 0 | piece_switch_interval | 1d |
| 1002 | 0 | state | ENABLE |
+-----------+---------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------+
使用場景說明
使用場景說明
1. 設置路徑時未設置enable_worm=true
在將有保留策略的OSS路徑設置為備份歸檔路徑時,如果不配置enable_worm=true,該設置語法將報錯Incorrect arguments并提示需要設置enable_worm=true。
如果在設置備份歸檔路徑成功后,相應的OSS bucket添加WORM策略:
- 在備份任務執行過程中可能因為修改或者刪除文件失敗導致任務失敗,在備份相關視圖(如CDB_OB_BACKUP_DELETE_JOB_HISTORY)中報錯-9140(the object is locked by worm)。
- 歸檔可能會因為追加寫失敗進入interrupt狀態,需要看相關歸檔報錯日志是否報-9140(the object is locked by worm)。
在發現備份歸檔任務因為worm失敗后,需要設置新備份/歸檔路徑,并且配置參數enable_worm=true。
2. 設置路徑時設置了enable_worm=true
設置enable_worm=true后,observer會適配worm的邏輯執行寫操作,避免因為無法修改保留期內的object而導致備份歸檔任務失敗。
因為observer不具有感知oss上worm策略詳情的能力,所以備份清理策略仍然按照舊有邏輯執行(官網介紹鏈接:自動清理過期備份)。備份清理將依據recovery_window選擇需要清理的備份集,進而執行清理操作。建議recovery_window值取保留時長需求及恢復需求時長的最大值,如保留期為90天,需要保證可恢復的時長是10天,那么設置recovery_window為90d。
obclient> ALTER SYSTEM ADD DELETE BACKUP POLICY 'default' RECOVERY_WINDOW '90d';
如果備份集在recovery_window之外,但仍在worm保留期內,且清理模式為deleting,那么observer在清理該備份集將失敗,在備份相關視圖(清理備份相關視圖介紹)中將相應失敗任務上展示worm相關錯誤碼-9140(the object is locked by worm)。對于tagging模式,observer為備份集打上tag后,oss bucket會在object保留期外且生命周期結束后刪除相關object。
worm設置說明
oss worm具體設置方法可以參考oss官方說明使用命令行工具ossutil設置合規保留策略確保指定時間內不能修改和刪除OSS數據_對象存儲(OSS)-阿里云幫助中心
用戶在配置完合規保留策略后查詢已創建的合規保留策略是否符合預期。
- 命令格式
ossutil worm get oss://BucketName
- 使用示例
查詢examplebucket的合規保留策略。
ossutil worm get oss://examplebucket
以下輸出結果表明已查詢到合規保留策略的配置參數,結果中包含策略ID、狀態、保留天數、策略創建時間。
<WormConfiguration><WormId>581D8A7FFA064C80827CAB4076A93A78</WormId><State>Locked</State><RetentionPeriodInDays>360</RetentionPeriodInDays><CreationDate>2021-01-19T03:36:53.000Z</CreationDate>
</WormConfiguration>
需要注意檢查查詢到的合規保留策略的state需要是Locked狀態,并且RetentionPeriodInDays(合規保留時長)符合預期。