基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
通过命令行备份
更新时间:2024-06-17 17:18:31
本节主要介绍如何使用 OceanBase 数据库的备份功能进行备份。
全量备份
使用
root用户登录数据库的sys租户。配置备份目的端。
目前,OceanBase 数据库支持 NFS 和阿里云 OSS 作为备份目的地。
例如:
NFS
注意
使用 NFS 作为备份目的端时,需要注意以下事项:
必须保证所有 OBServer 都挂载了同一个服务器的 NFS。同时,为保证备份的顺利进行,务必使用本文档中推荐的参数挂载 NFS。挂载 NFS 具体操作请参见 部署 NFS 客户端。
backup_dest的值不支持设置为带有问号(?)的字符串。设置备份目的端并开启备份后,备份文件通常存放在以集群名命名的目录中,同一备份目的端可以存放不同集群的备份文件。如果在设置目的端时,备份目的端所在的目录中出现了与当前集群名相同的目录,则要求该目录(以集群名命名的目录)为空。
设置备份目的端的示例如下:
obclient> ALTER SYSTEM SET backup_dest='file:///data/nfs/backup';阿里云 OSS
当使用阿里云 OSS 作为备份目的端时,除了设置备份目的端,您还可以通过
delete_mode参数来配置备份文件的清理模式。delete_mode参数当前支持以下两种备份文件的清理模式:delete:表示清理模式为直接删除满足要求的备份文件。配置为该模式后,当您通过自动或手动的方式清理备份文件时,对于满足清理要求的备份文件,系统会直接将其删除。该模式为默认的清理模式,如果不配置
delete_mode参数,则使用默认清理模式delete。tagging:表示清理模式为对满足清理要求的备份文件设置 Tag,备份文件将仍然保留。配置为该模式后,当您通过自动或手动的方式清理备份文件时,对于满足清理要求的备份文件,系统会给这些文件设置标签,标签的
key为"delete_mode",value为"tagging",以便后续您可以通过设置的标签在 OSS 上对这些文件的生命周期进行管理。
设置
delete模式或tagging模式后,自动清理备份数据的相关操作请参见 自动清理备份的数据;手动清理备份数据的相关操作请参见 手动清理备份的数据。设置备份目的地并配置备份文件的清理模式的示例如下:
obclient> ALTER SYSTEM SET backup_dest='oss://antsys-oceanbasebackup/backup_rd/?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx&delete_mode=delete';注意
backup_dest设置完成且发起过备份后,将无法再修改delete_mode参数的值。
(可选)配置备份模式,并开启归档日志压缩功能。
其中:
备份模式目前支持 Optional 模式和 Mandatory 模式,如果不配置,默认为 Optional 模式。
Optional 模式表示以用户业务优先。在该模式下,当备份(日志归档)来不及的情况下,日志可能来不及备份就回收了,可能会发生备份断流。
Mandatory 模式表示以备份优先。在该模式下如果备份跟不上用户数据的写入,可能会导致用户无法写入。
日志压缩目前支持的压缩算法有:zstd_1.3.8 和 lz4_1.0,默认使用压缩算法 lz4_1.0。
通过 Optional 模式备份,并开启归档日志压缩功能的示例如下:
obclient> ALTER SYSTEM SET backup_log_archive_option = 'optional compression= enable';设置后,您可以根据业务需要动态修改压缩算法,您可以执行以下命令修改压缩算法。
obclient> ALTER SYSTEM SET backup_log_archive_option='optional compression= zstd_1.3.8'; obclient> ALTER SYSTEM SET backup_log_archive_option='optional compression= lz4_1.0';说明
配置后,如果需要关闭日志归档压缩:
对于当前备份模式为 Optional 模式的场景,可以使用
ALTER SYSTEM SET backup_log_archive_option = 'compression= disable';命令直接关闭归档日志压缩功能,或者也可以使用ALTER SYSTEM SET backup_log_archive_option = 'mandatory compression= disable';命令配置备份模式并关闭归档日志压缩功能。对于当前备份模式为 Mandatory 模式的场景,只能使用
ALTER SYSTEM SET backup_log_archive_option = 'mandatory compression= disable';命令配置备份模式并关闭归档日志压缩。
执行以下语句,启动日志备份。
说明
为了减少日志备份发起的耗时,建议在开启日志备份前进行一次转储,待转储完成后再备份。这是因为日志备份的起始位点是最近一次转储位点,转储以后可以减少日志备份启动的时间。转储相关操作请参见 手动触发转储。
obclient> ALTER SYSTEM ARCHIVELOG;启动成功后,OceanBase 数据库会自动将集群产生的事务日志定期备份到之前指定的备份目的地。
执行以下语句,确认日志备份任务是否已开始。
obclient> SELECT * FROM CDB_OB_BACKUP_ARCHIVELOG;当
STATUS为DOING时,表示日志备份任务已开始。在执行数据备份前,需要对集群发起一轮合并,并等待合并完成。
注意
仅当日志备份任务的
STATUS为DOING时,才能开始数据备份。执行以下命令,发起合并。
obclient> ALTER SYSTEM MAJOR FREEZE;执行以下语句,查看合并进度。
obclient> USE oceanbase; obclient> SELECT * FROM __all_zone WHERE name='merge_status';结果如下所示:
+----------------------------+----------------------------+-------+--------------+-------+------+ | gmt_create | gmt_modified | zone | name | value | info | +----------------------------+----------------------------+-------+--------------+-------+------+ | 2020-05-26 17:50:11.107352 | 2020-05-26 17:50:45.871523 | | merge_status | 0 | IDLE | | 2020-05-26 17:50::11.109678 | 2020-05-26 17:50:55.780264 | zone1 | merge_status | 0 | IDLE | +----------------------------+----------------------------+-------+--------------+-------+------+当
info为IDLE时,则表示合并结束。
(可选)执行以下命令,设置备份的密码。
obclient> SET ENCRYPTION ON IDENTIFIED BY 'password' ONLY;示例:
obclient> SET ENCRYPTION ON IDENTIFIED BY '******' ONLY;说明
设置备份密码后,在未发起数据备份前,您可以通过断开会话再重新连接数据库的方式取消本次设置。
执行以下命令,发起数据备份。
obclient> ALTER SYSTEM BACKUP DATABASE;备份过程中,您可以通过执行以下语句,在视图中查看备份任务的状态和详细信息:
查看正在备份的任务
obclient> SELECT * FROM CDB_OB_BACKUP_PROGRESS;查看备份任务的历史
obclient> SELECT * FROM CDB_OB_BACKUP_SET_DETAILS;CDB_OB_BACKUP_SET_DETAILS中,部分字段的说明如下表所示。字段 说明 OUTPUT_BYTES 表示写在外部存储介质的数据量,单位为 Bytes。 OUTPUT_RATE_BYTES 表示 1 秒内上传的数据量,单位为 Bytes。 COMPRESSION_RATIO 表示压缩比例,计算公式: COMPRESSION_RATIO = OUTPUT_BYTES / INPUT_BYTES。 其中,INPUT_BYTES是 OBServer 本次需要备份的数据的大小,故可以通过COMPRESSION_RATIO的值计算出INPUT_BYTES的值,即INPUT_BYTES = OUTPUT_BYTES / COMPRESSION_RATIO。OUTPUT_BYTES_DISPLAY 对于 OUTPUT_BYTES单位转换之后的展示,单位为 MB 、GB、TB 和 PB 中的一种。OUTPUT_RATE_BYTES_DISPLAY 对于 OUTPUT_RATE_BYTES单位转换之后的展示,单位为 MB、GB、TB 和 PB 中的一种。TIME_TAKEN_DISPLAY 以 TIMESTAMP的方式展示COMPLETION_TIME-START_TIME。
增量备份
增量备份是从上一次全量备份或增量备份开始,备份所有修改后的宏块,即仅针对已备份数据的增量部分进行备份。例如,假设当前租户最近一次是全量备份数据 full_backup_set,系统就会备份最近一次 full_backup_set 之后修改的所有宏块;如果租户最近一次是增量备份数据 inc_backup_set,则系统就会备份最近一次 inc_backup_set 之后修改的所有宏块。
说明
在执行增量备份前,请确保已经有全量备份存在。
使用
root用户登录数据库的sys租户。执行以下语句,启动增量备份。
obclient> ALTER SYSTEM BACKUP INCREMENTAL DATABASE;