首批通过分布式安全可靠测评,为关键业务系统打造
日志归档前准备
更新时间:2026-04-10 11:58:01
本节主要介绍日志归档前的准备工作。
配置归档并发度(可选)
开启归档模式前,您可以通过配置日志归档的并发度来提高租户的日志归档速度。
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、BINDING 和 PIECE_SWITCH_INTERVAL 属性。
注意事项
配置归档目的端时,要求每个租户的归档路径需要配置为独立的空目录,不同租户不能配置相同的归档路径。
操作步骤
sys租户或用户租户的租户管理员登录到数据库。说明
MySQL 模式的管理员用户为
root用户,Oracle 模式的管理员用户为SYS用户。配置归档目的端。
系统租户为指定租户配置归档目的端
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [BINDING=archive_mode] [PIECE_SWITCH_INTERVAL=piece_switch_interval]' TENANT = tenant_name;用户租户配置本租户的归档目的端
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [BINDING=archive_mode] [PIECE_SWITCH_INTERVAL=piece_switch_interval]';
注意
对于从 OceanBase 数据库 V4.0.x 版本升级到 V4.1.0 版本的场景,版本升级后需要更改归档路径。对于从 OceanBase 数据库 V4.1.x 版本升级到 V4.2.x 版本的场景,版本升级后不需要更改归档路径。此外,从 OceanBase 数据库 V4.1.x 版本升级到 V4.2.x 版本时,支持升级期间进行日志归档。
详细配置说明如下:
配置
LOCATION(必选)LOCATION属性用于指定归档目的端,目前 OceanBase 数据库支持的归档目的端介质为 NFS、阿里云 OSS、腾讯云 COS、AWS S3 以及兼容 S3 协议的对象存储,例如:华为 OBS、Google GCS。部分备份介质可能需要满足一些基本要求才能使用,有关各备份介质的具体要求,参见 物理备份与恢复概述 中的 备份介质要求。阿里云 OSSNFS腾讯云 COSAWS S3兼容 S3 协议的对象存储使用 OSS 作为归档目的端介质时,除了设置归档路径、
host、access_key和access_id,您还可以通过delete_mode参数来配置归档文件的清理模式。delete_mode参数当前支持delete和tagging两种归档文件的清理模式,如果不配置,则默认为delete清理模式。delete:表示清理模式为直接删除满足清理要求的归档文件。配置为该模式后,当您通过自动方式清理归档文件时,对于满足清理要求的归档文件,系统会直接将其删除。
注意
该模式为默认的清理模式,如果不配置
delete_mode参数,则默认使用delete清理模式。tagging:表示清理模式为对满足清理要求的归档文件设置Tag,归档文件将仍然保留。配置为该模式后,当您通过自动方式清理归档文件时,对于满足清理要求的归档文件,系统会给这些文件设置标签,标签的
key为"delete_mode",value为"tagging",以便后续您可以通过设置的标签在OSS上对这些文件的生命周期进行管理。
注意
使用对象存储作为归档介质时,对象存储路径的各项参数由
&符号进行分隔,请确保您输入的参数值中仅包含英文字母大小写、数字、/-_$+=以及通配符。如果您输入了上述以外的其他字符,可能会导致设置失败。使用 OSS 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档目的端,并配置delete清理模式的示例如下: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' TENANT = mysql_tenant;使用 OSS 作为归档介质时,用户租户为本租户设置归档目的端,并配置
delete清理模式的示例如下: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';示例中,
oss://表示使用 OSS 作为归档目的端介质类型,存储桶名oceanbase-test-bucket,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置存储桶的主机地址,access_id和access_key用于设置OSS的访问密钥,清理模式设置为delete。设置
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 一样,COS 也支持通过
delete_mode参数来配置归档文件的清理模式,配置方法与 OSS 一样。注意
使用对象存储作为归档介质时,对象存储路径的各项参数由
&符号进行分隔,请确保您输入的参数值中仅包含英文字母大小写、数字、/-_$+=以及通配符。如果您输入了上述以外的其他字符,可能会导致设置失败。使用 COS 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档目的端并配置为delete清理模式。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=cos://oceanbase-test-appid/backup/archive?host=cos.ap-***.myqcloud.com&access_id=***&access_key=***&appid=***&delete_mode=delete' TENANT = mysql_tenant;使用 COS 作为归档介质时,用户租户为本租户设置归档目的端并配置为
delete清理模式。obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=cos://oceanbase-test-appid/backup/archive?host=cos.ap-***.myqcloud.com&access_id=***&access_key=***&appid=***&delete_mode=delete';
示例中,
cos://表示使用 COS 作为归档目的端介质类型,存储桶名oceanbase-test-appid,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置 COS 的主机地址,即 endpoint(不带存储桶名的地址),access_id和access_key用于设置COS的访问密钥,appid为必选参数,用于腾讯云账号的 APPID,清理模式设置为delete。与 OSS/COS 一样,AWS S3 也支持通过
delete_mode参数来配置归档文件的清理模式,配置方法与 OSS/COS 一样。注意
使用对象存储作为归档介质时,对象存储路径的各项参数由
&符号进行分隔,请确保您输入的参数值中仅包含英文字母大小写、数字、/-_$+=以及通配符。如果您输入了上述以外的其他字符,可能会导致设置失败。使用 S3 作为归档介质时,系统租户为指定租户
mysql_tenant设置归档目的端并配置为delete清理模式。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' TENANT = mysql_tenant;使用 S3 作为归档介质时,用户租户为本租户设置归档目的端并配置为
delete清理模式。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';
示例中,
s3://表示使用 AWS S3 作为归档目的端介质类型,存储桶名oceanbase-test-bucket,在存储桶中的路径是/backup/archive,同时使用?来分隔路径的其他参数,host用于设置 Amazon S3 服务的域名,access_id和access_key用于设置 AWS 服务的访问密钥,s3_region在使用 S3 作为归档介质时为必选参数,表示 S3 的存储桶所在的地域,清理模式设置为delete。由于大多数对象存储兼容了 S3 协议,对于兼容 S3 协议并满足 OceanBase 数据库要求(对象存储需要兼容实现了 OceanBase 系统调用的几个 S3 API 的行为)的对象存储均可以作为 OceanBase 数据库的归档介质,并通过访问 S3 的方式来访问兼容的对象存储,例如:OBS 和 GCS 等都是通过 S3 协议访问。
注意
使用对象存储作为归档介质时,对象存储路径的各项参数由
&符号进行分隔,请确保您输入的参数值中仅包含英文字母大小写、数字、/-_$+=以及通配符。如果您输入了上述以外的其他字符,可能会导致设置失败。使用 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 服务的访问密钥。配置
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 的值时,请确认已完成归档目的端的配置。如果未配置归档目的端,则在修改配置项 archive_lag_target 的值时,系统会提示 log_archive_dest has not been set, set archive_lag_target is not allowed 的信息。
注意事项
对于归档介质为 OSS/NFS/COS 的场景,配置项
archive_lag_target的值可以设置为取值范围内的任意值;对于归档介质为 S3 的场景,配置项archive_lag_target的值不能小于60s,小于60s系统将会报错。建议将配置项
archive_lag_target设置为一个合理的值,以免过于频繁的 IO 影响系统性能,特别是使用对象存储的情况下。同时,过高的值也可能无法满足数据恢复的时效性,因此需要根据具体的业务需求和归档介质的性能来权衡 RPO。
配置方法
sys租户或用户租户的租户管理员登录到数据库。根据实际情况,选择合适的语句,配置归档延迟。
配置方法如下:
sys租户为指定租户配置归档延迟时间obclient> ALTER SYSTEM SET archive_lag_target = '120s' TENANT = mysql_tenant;注意
在配置
archive_lag_target参数时,不支持 sys 租户通过TENANT = all_user来指定所有用户租户。用户租户为本租户配置归档延迟时间
obclient> ALTER SYSTEM SET archive_lag_target = '120s';