OceanBase v4.3.5 特性解读:通过OSS WORM特性进行备份归档
概述
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(合规保留时长)符合预期。