首批通过分布式安全可靠测评,为关键业务系统打造
日志归档的准备工作
更新时间:2026-04-16 00:11:36
本节主要介绍日志归档前的准备工作。
(可选)配置归档并发度
开启归档模式前,您可以通过配置日志归档的并发度来提高租户的日志归档速度。
sys租户或用户租户的租户管理员登录到数据库。选择合适的语句,设置配置项
log_archive_concurrency。租户级配置项
log_archive_concurrency用于配置日志归档总的工作线程数量。该配置项为动态生效,不需要重启 OBServer 节点。该配置项的取值范围为 [0, 100],默认值为0,表示使用 OceanBase 数据库自适应的日志归档并行度。建议使用默认值。注意
对于小规模租户(CPU 小于或等于 4C 的租户),建议使用默认值,不要调整该配置项的值。
设置方法如下:
sys租户调整指定租户的日志归档并发度ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = mysql_tenant;sys租户调整所有租户的日志归档并发度ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = all_user;或者
ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = all;说明
OceanBase 数据库从 V4.2.1 版本开始,
TENANT = all_user与TENANT = all语义相同,在需要生效范围为所有用户租户时,推荐使用TENANT = all_user,后续TENANT = all将废弃不再使用。用户租户调整本租户的日志归档并发度
ALTER SYSTEM SET log_archive_concurrency = 10;
有关配置项
log_archive_concurrency的更多信息,请参见 log_archive_concurrency。
配置归档目的端
在开始日志归档任务前,您需要使用 ALTER SYSTEM 命令配置 LOG_ARCHIVE_DEST 参数。由于系统租户不包含用户数据,是集群管理用的租户,不支持备份恢复,故 sys 租户无需配置归档目的端。
配置归档目的端的操作主要是设置 LOCATION、PIECE_SWITCH_INTERVAL 和 BINDING 属性。
注意事项
配置归档目的端时,要求每个租户的归档路径需要配置为独立的空目录,不同租户不能配置相同的归档路径。
操作步骤
sys租户或用户租户的租户管理员登录到数据库。说明
MySQL 模式的管理员用户为
root用户,Oracle 模式的管理员用户为SYS用户。配置归档目的端。
注意
对于从 OceanBase 数据库 V4.0.x 版本升级到 V4.1.0 版本的场景,版本升级后需要更改归档路径。对于从 OceanBase 数据库 V4.1.x 版本升级到 V4.2.x 版本的场景,版本升级后不需要更改归档路径。此外,从 OceanBase 数据库 V4.1.x 版本升级到 V4.2.x 版本时,支持升级期间进行日志归档。
系统租户为指定租户配置归档目的端
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [PIECE_SWITCH_INTERVAL=archive_mode] [BINDING=piece_switch_interval]' TENANT = tenant_name;用户租户配置本租户的归档目的端
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [PIECE_SWITCH_INTERVAL=archive_mode] [BINDING=piece_switch_interval]';
详细配置说明如下:
配置
LOCATION(必选)LOCATION属性用于指定归档路径,目前 OceanBase 数据库支持的归档目的端介质除了 NFS 、阿里云 OSS,从 V4.2.1 BP7 版本开始,还支持 AWS S3 以及兼容 S3 协议的对象存储,例如:华为 OBS、Google GCS、腾讯云 COS。部分归档介质可能需要满足一些基本要求才能使用,有关各归档介质的具体要求,参见 物理备份与恢复概述 中的 备份介质要求。阿里云 OSSNFSAWS S3兼容 S3 协议的对象存储使用 OSS 作为归档介质时,除了设置归档路径、
host、access_key和access_id,还可以通过delete_mode参数来配置归档文件的清理模式。delete_mode参数当前支持delete模式和tagging模式。如果不显式配置delete_mode参数,则默认使用delete模式。此外,从 V4.2.1 BP10 版本开始,OSS 还支持通过
checksum_type参数指定校验算法来校验归档文件的完整性,支持的取值为md5和no_checksum。如果不显式配置checksum_type参数,则默认值为md5。有关
delete_mode参数和checksum_type参数的详细说明,参见 SET LOG_ARCHIVE_DEST。注意
使用对象存储作为归档介质时,对象存储路径的各项参数由
&符号进行分隔,请确保您输入的参数值中仅包含英文字母大小写、数字、/-_$+=以及通配符。如果您输入了上述以外的其他字符,可能会导致设置失败。示例如下:
使用 OSS 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档路径,配置清理模式为delete,同时指定校验算法为md5。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=oss://oceanbase-test-bucket/backup/archive?host=***.aliyun-inc.com&access_id=***&access_key=***&delete_mode=delete&checksum_type=md5' TENANT = mysql_tenant;如果不希望校验归档文件的完整性,可以将
checksum_type参数设置为no_checksum,示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=oss://oceanbase-test-bucket/backup/archive?host=****.aliyun-inc.com&access_id=****&access_key=****&delete_mode=delete&checksum_type=no_checksum' TENANT = mysql_tenant;使用 OSS 作为归档介质时,用户租户为本租户设置归档路径,配置清理模式为
delete,同时指定校验算法为md5。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=oss://oceanbase-test-bucket/backup/archive?host=***.aliyun-inc.com&access_id=***&access_key=***&delete_mode=delete&checksum_type=md5';
示例中,
oss://表示使用 OSS 作为归档介质,存储桶名oceanbase-test-bucket,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置存储桶的主机地址,access_id和access_key用于设置OSS的访问密钥,清理模式为delete,使用 MD5 算法校验归档文件的完整性。设置
delete模式或tagging模式后,自动清理归档数据的相关操作请参见 自动清理归档的数据。注意
使用 NFS 作为归档介质时,需要注意以下事项:
LOCATION的值不支持设置为带有问号(?)的字符串。LOCATION的值必须设置为绝对路径,保证 OBServer 服务器对LOCATION具有读写权限。- 必须保证所有 OBServer 服务器都挂载了同一个服务器的 NFS。同时,为保证归档顺利进行,务必使用本文档中建议的参数挂载 NFS。挂载 NFS 的具体操作,请参见 部署 NFS 客户端。
使用 NFS 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档路径的示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive' TENANT = mysql_tenant;使用 NFS 作为归档介质时,用户租户为本租户设置归档路径的示例如下:
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive';示例中,
file://表示使用 NFS 作为归档介质时,归档路径为/data/nfs/backup/archive。与 OSS 一样,AWS S3 也支持通过
delete_mode参数来配置归档文件的清理模式,配置方法与 OSS 一样。同样,从 V4.2.1 BP10 版本开始,AWS S3 也支持通过checksum_type参数指定校验算法来校验归档文件的完整性,支持指定的取值为md5和crc32。如果不显式配置checksum_type参数,则默认值为md5。有关
delete_mode参数和checksum_type参数的详细说明,参见 SET LOG_ARCHIVE_DEST。注意
使用对象存储作为归档介质时,对象存储路径的各项参数由
&符号进行分隔,请确保您输入的参数值中仅包含英文字母大小写、数字、/-_$+=以及通配符。如果您输入了上述以外的其他字符,可能会导致设置失败。使用 S3 作为归档介质的配置示例如下:
使用 S3 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档路径,配置清理模式为delete,指定校验算法为crc32。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=s3.<region>.amazonaws.com&access_id=******&access_key=******&s3_region=******&delete_mode=delete&checksum_type=crc32' TENANT = mysql_tenant;使用 S3 作为归档介质时,用户租户为本租户设置归档路径,配置清理模式为
delete,指定校验算法为crc32。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=s3.<region>.amazonaws.com&access_id=******&access_key=******&s3_region=******&delete_mode=delete&checksum_type=crc32';
上述示例中,
s3://表示使用 AWS S3 作为归档介质,存储桶名oceanbase-test-bucket,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置 Amazon S3 服务的域名,access_id和access_key用于设置 AWS 服务的访问密钥,s3_region在使用 S3 作为归档介质时为必选参数,表示 S3 的存储桶所在的地域,清理模式为delete,使用 CRC32 算法校验归档文件的完整性。由于大多数对象存储兼容了 S3 协议,对于兼容 S3 协议并满足 OceanBase 数据库要求(对象存储需要兼容实现了 OceanBase 系统调用的几个 S3 API 的行为)的对象存储均可以作为 OceanBase 数据库的归档介质,并通过访问 S3 的方式来访问兼容的对象存储,例如:OBS、GCS、COS 等都是通过 S3 协议访问。
从 V4.2.1 BP10 版本开始,对于通过 S3 协议接入的 OBS、GCS、COS 等对象存储,也支持通过
checksum_type参数指定校验算法来校验归档文件的完整性,仅支持取值为md5。如果不显式配置checksum_type参数,则默认值为md5。有关checksum_type参数的详细说明,参见 SET LOG_ARCHIVE_DEST。注意
- 使用对象存储作为归档介质时,对象存储路径的各项参数由
&符号进行分隔,请确保您输入的参数值中仅包含英文字母大小写、数字、/-_$+=以及通配符。如果您输入了上述以外的其他字符,可能会导致设置失败。 - 对于部分兼容 S3 协议的对象存储,可能不支持 AWS S3 SDK 默认的 URL 编码方式,在使用
s3://协议访问时,如果出现 9129、9026 等对象存储相关的错误码,建议通过设置集群级配置项 ob_storage_s3_url_encode_type 来指定 AWS S3 发送请求时的 URL 编码方式兼容 Rfc3986 标准。详细设置方法可参考下方 使用 COS 作为归档介质的操作步骤及示例。
使用 OBS 作为归档介质的配置示例如下:
使用 OBS 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档路径。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=obs.****.myhuaweicloud.com&access_id=****&access_key=****' TENANT = mysql_tenant;使用 OBS 作为归档介质时,用户租户为本租户设置归档路径。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=obs.****.myhuaweicloud.com&access_id=****&access_key=****';
上述示例中,
s3://表示使用兼容 S3 协议的对象存储作为归档介质,存储桶名oceanbase-test-bucket,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置 OBS 服务的域名,access_id和access_key用于设置 OBS 服务的访问密钥。使用 GCS 作为归档介质的配置示例如下:
使用 GCS 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档路径。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=https://storage.googleapis.com&access_id=****&access_key=****' TENANT = mysql_tenant;使用 GCS 作为归档介质时,用户租户为本租户设置归档路径。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test-bucket/backup/archive?host=https://storage.googleapis.com&access_id=****&access_key=****';
上述示例中,
s3://表示使用兼容 S3 协议的对象存储作为归档介质,存储桶名oceanbase-test-bucket,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置 GCS 服务的域名,access_id和access_key用于设置 GCS 服务的访问密钥。使用 COS 作为归档介质时的操作步骤及示例如下:
说明
该功能从 V4.2.1 BP9 版本开始支持。
查看集群级配置项
ob_storage_s3_url_encode_type的取值。obclient> SHOW PARAMETERS LIKE '%ob_storage_s3_url_encode_type%';查询结果如下:
+-------+----------+----------------+----------+-------------------------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | +-------+----------+----------------+----------+-------------------------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ | zone1 | observer | 172.xx.xxx.xxx | 2882 | ob_storage_s3_url_encode_type | NULL | default | Determines the URL encoding method for S3 requests."default": Uses the S3 standard URL encoding method."compliantRfc3986Encoding": Uses URL encoding that adheres to the RFC 3986 standard. | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +-------+----------+----------------+----------+-------------------------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+ 1 row in set如果取值为
default,则修改为compliantRfc3986Encoding。obclient> ALTER SYSTEM SET ob_storage_s3_url_encode_type='compliantRfc3986Encoding';有关该配置项的具体信息,参见 ob_storage_s3_url_encode_type。
设置归档路径并通过
delete_mode参数来配置归档文件的清理模式。使用 COS 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档路径并配置为delete清理模式的示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test/backup/archive?host=cos.ap-xxxx.myqcloud.com&access_id=***&access_key=***&delete_mode=delete' TENANT = mysql_tenant;使用 COS 作为归档介质时,用户租户为本租户设置归档路径并配置为
delete清理模式的示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=s3://oceanbase-test/backup/archive?host=cos.ap-xxxx.myqcloud.com&access_id=***&access_key=***&delete_mode=delete';示例中,
s3://表示使用兼容 S3 协议的对象存储作为归档介质,存储桶名oceanbase-test,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置 COS 的主机地址,即 endpoint(不带存储桶名的地址),access_id和access_key用于设置COS的访问密钥,清理模式设置为delete。
配置
BINDING属性(可选)BINDING属性用于设置归档和业务的优先模式。目前支持Optional模式和Mandatory模式。如果不配置,默认为Optional模式。Optional模式表示以用户业务优先。在该模式下,当归档(日志归档)速度跟不上日志生成的速度时,日志有可能来不及归档就被回收了,然后发生断流。Mandatory模式表示以归档优先。在该模式下如果归档跟不上用户数据的写入,可能会导致用户无法写入。
使用 NFS 作为归档介质时,系统租户为指定租户
mysql_tenant配置归档路径并设置BINDING属性的示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional' TENANT = mysql_tenant;使用 NFS 作为归档介质时,用户租户为本租户配置归档路径并设置
BINDING属性的示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional';配置
PIECE_SWITCH_INTERVAL属性 (可选)PIECE_SWITCH_INTERVAL属性用于配置piece的切换周期,取值范围为[1d, 7d]。如果不设置,默认为1d。使用 NFS 作为归档介质时,系统租户为指定租户
mysql_tenant配置归档路径并设置每隔一天切分一个日志piece的示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional PIECE_SWITCH_INTERVAL=1d' TENANT = mysql_tenant;使用 NFS 作为归档介质时,用户租户为本租户配置归档路径并设置每隔一天切分一个日志
piece的示例如下:obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive BINDING=Optional PIECE_SWITCH_INTERVAL=1d';
配置成功后,可以通过视图查询详细的参数设置信息。
sys租户可以通过CDB_OB_ARCHIVE_DEST视图来查看参数设置信息;用户租户可通过DBA_OB_ARCHIVE_DEST视图来查看参数设置信息。有关查看归档参数的详细操作,参见 查看归档参数。
配置后的注意事项及说明
参数 LOG_ARCHIVE_DEST 设置成功后,默认系统会在配置的目的端所在的目录下创建一个 format 文件,用于校验归档目的端的有效性信息,确保目的端内数据的完整性。故,在配置日志归档的路径时,需要注意以下事项:
如果
format文件不存在,则要求配置的归档路径所在的目录为空,配置项才能设置成功。否则,系统会报-9080的错误,提示 format 文件不存在。如果
format文件已存在,则要求format文件的内容检验通过,配置项才能设置成功。否则,系统会报-9081的错误,提示 format 文件不匹配,format 文件的内容校验主要是检查集群、租户与归档目的端的介质类型等与当前操作的集群、租户及归档目的端的介质类型是否匹配。在执行备份任务时,如果
format文件不存在或format文件校验不通过,任务会发起失败。
此外,归档目的端配置成功后,不支持增量配置。例如,假设 NFS 下归档路径 /data/nfs/backup/archive 配置的 BINDING 属性为 Mandatory,PIECE_SWITCH_INTERVAL 属性为 1d。若需要更新 PIECE_SWITCH_INTERVAL 为 2d,但保留 BINDING 属性的配置 Mandatory,您仍然需要在命令中指定其他属性的值,否则未指定的属性将使用默认值。
您需要重新执行以下语句进行修改。
系统租户修改指定租户
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST = 'LOCATION=file:///data/nfs/backup/archive BINDING=Mandatory PIECE_SWITCH_INTERVAL=2d' TENANT = mysql_tenant;用户租户修改本租户
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST = 'LOCATION=file:///data/nfs/backup/archive BINDING=Mandatory PIECE_SWITCH_INTERVAL=2d';
(可选)配置归档延迟
OceanBase 数据库使用租户级配置项 archive_lag_target 来控制租户日志归档的延迟时间,该配置项支持以毫秒(ms)、秒(s)、分(m)、小时(h)为单位,默认为 2 分钟,用于指定前后两次归档 IO 的最大间隔时间,确保在线日志能及时地被归档出去,从而减少数据损失的风险。
OceanBase 数据库的归档以日志流为单位,如果当前日志流有日志写入,并且距离该日志流上次归档的时间超过了配置项 archive_lag_target 所指定的时间间隔,该日志流就会触发一次归档动作,将未归档的日志都归档出去。
例如,如果配置项被设置为 archive_lag_target='120s'(即 2 分钟),则每一个日志流会尝试每 2 分钟进行一次归档动作(除非其他条件被满足,例如,日志归档的缓存聚合 Buffer 被写满),让该日志流的本次归档动作距离上次归档时间小于 2 分钟。需要注意的是,当配置项 archive_lag_target 的值设置为 0 时,将会达到一个准实时归档的效果。
有关配置项 archive_lag_target 的更多说明,请参见 archive_lag_target。
注意事项
建议将配置项 archive_lag_target 设置为一个合理的值,以免过于频繁的 IO 影响系统性能,特别是使用对象存储的情况下。同时,过高的值也可能无法满足数据恢复的时效性,因此需要根据具体的业务需求和归档介质的性能来权衡 RPO。
配置方法
sys租户或用户租户的租户管理员登录到数据库。根据实际情况,选择合适的语句,配置归档延迟。
配置方法如下:
系统租户为指定租户配置归档延迟时间
obclient> ALTER SYSTEM SET archive_lag_target = '120s' TENANT = mysql_tenant;系统租户为所有用户租户配置归档延迟时间
obclient> ALTER SYSTEM SET archive_lag_target = '120s' TENANT = all_user;用户租户为本租户配置归档延迟时间
obclient> ALTER SYSTEM SET archive_lag_target = '120s';