可以把容灾管理理解成 “数据库的保险系统”。它包含了一系列机制,用于应对各种意外情况,从误操作(如删表)到硬件故障(如磁盘损坏),再到整个机房或城市级别的灾难,确保数据不丢、服务不停。
OceanBase V4 的容灾管理主要包含三大核心机制:回收站与闪回查询、物理备份与恢复、租户级主备库。
一、容灾管理全景图
| 容灾机制 | 保护范围 | 恢复粒度 | 恢复速度 | 数据丢失(RPO) | 适用场景 |
| 回收站与闪回查询 | 逻辑误操作(DROP/TRUNCATE) | 对象级(表、索引) | 秒级 | 0(可恢复到任意历史版本) | 误删表、误改数据 |
| 物理备份与恢复 | 存储介质损坏、数据丢失 | 租户级、表级 | 小时级 | 取决于备份频率 | 磁盘损坏、数据丢失 |
| 租户级主备库 | 机房/城市级灾难 | 租户级 | 秒级(Switchover) 分钟级(Failover) |
0(Switchover) >0(Failover) |
跨机房容灾、计划内切换 |
二、回收站与闪回查询
1. 回收站(Recycle Bin)
回收站是 OceanBase 提供的一种 “后悔药” 机制,用于保护用户误操作导致的对象丢失。
工作原理
- 默认关闭:回收站功能默认是关闭的,需要手动开启。
- 开启命令:
SET GLOBAL recyclebin = ON; - 存储内容:当用户执行
DROP TABLE、DROP INDEX等操作时,被删除的对象不会立即被物理删除,而是被移动到回收站中,并重命名为一个系统生成的名称。 - 回收站视图:可以通过
SHOW RECYCLEBIN命令查看回收站中的对象。
回收站规则(易错点)
表格
| 操作 | 是否进入回收站 | 说明 |
DROP TABLE |
✅ 是 | 表及其数据进入回收站 |
DROP DATABASE |
❌ 否 | 数据库不会进入回收站 |
DROP INDEX |
❌ 否 | 索引不会进入回收站 |
TRUNCATE TABLE |
❌ 否 | 所有模式都不支持 Truncate 进回收站 |
DROP TENANT |
✅ 是(SYS 租户) | 系统租户可以删除租户进回收站 |
闪回(Flashback)对象
sql
-- 闪回回收站中的表(恢复表及其数据) FLASHBACK TABLE table_name TO BEFORE DROP; -- 闪回时重命名 FLASHBACK TABLE table_name TO BEFORE DROP RENAME TO new_table_name;
2. 闪回查询(Flashback Query)
闪回查询允许用户查询某个历史版本的数据,而不需要恢复整个表。
工作原理
- 多版本数据保留:OceanBase 基于 LSM-Tree 存储架构,会保留数据的多个版本。
undo_retention配置项:这是一个租户级配置项,默认值为 1800 秒(30分钟)。它决定了系统保留多版本数据的时间范围。- 查询范围:可以查询当前时间
T到T - undo_retention时间范围内的任意历史版本。
语法示例
表格
| 模式 | 语法 | 示例 |
| MySQL 模式 | SELECT ... AS OF SNAPSHOT SCN |
SELECT * FROM t1 AS OF SNAPSHOT TIMESTAMP_TO_SCN('2024-08-05 10:00:00'); |
| Oracle 模式 | SELECT ... AS OF SCN 或 AS OF TIMESTAMP |
SELECT * FROM t1 AS OF TIMESTAMP TO_TIMESTAMP('2024-08-05 10:00:00', 'YYYY-MM-DD HH24:MI:SS'); |
注意:MySQL 模式使用
AS OF SNAPSHOT语法,参数是 SCN(事务版本号),需要使用TIMESTAMP_TO_SCN()函数将时间戳转换为 SCN。
三、物理备份与恢复
物理备份是 OceanBase 高可用特性的核心组件,用于预防存储介质损坏等严重故障。
1. 备份类型
| 备份类型 | 说明 | 特点 |
| 物理备份 | 直接复制数据库的物理文件(数据文件、日志文件) | 速度快,适合大数据量,支持租户级 |
| 逻辑备份 | 导出数据库的逻辑结构和数据(SQL、CSV) | 灵活,适合小数据量或跨平台迁移 |
2. 物理备份的组成
物理备份由两部分组成:
- 数据备份:包含存储层的基线和转储数据(SSTable)。分为全量备份(备份所有宏块)和增量备份(备份上次备份后新增/修改的宏块)。
- 日志归档:持续将事务日志(Clog)归档到备份介质。
3. 备份介质
表格
| 版本 | 支持的介质 |
| V4.2.1 BP7 之前 | NFS、阿里云 OSS、腾讯云 COS |
| V4.2.1 BP7 及之后 | 新增支持 AWS S3 及兼容 S3 协议的对象存储(华为 OBS、Google GCS) |
4. 物理备份步骤
-- 步骤1:设置日志归档目的地 ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/ob_backup/archive'; -- 步骤2:开启日志归档 ALTER SYSTEM ARCHIVELOG; -- 步骤3:设置数据备份目的地 ALTER SYSTEM SET DATA_BACKUP_DEST='file:///data/ob_backup/data'; -- 步骤4:发起全量备份 ALTER SYSTEM BACKUP DATABASE; -- 步骤5:发起增量备份(需要先有全量备份) ALTER SYSTEM BACKUP INCREMENTAL DATABASE;
5. 物理恢复
- 恢复粒度:支持租户级恢复和表级恢复(V4 新增)。
- 恢复位点:
- 完全恢复:恢复到最新的一致位点。
- 不完全恢复:恢复到指定的时间点或 SCN。
- 恢复后状态:物理恢复出来的租户默认为备租户,需要执行
ALTER SYSTEM ACTIVATE STANDBY TENANT激活为主租户。
6. PLUS ARCHIVELOG 选项
在发起数据备份时,可以加上 PLUS ARCHIVELOG 选项,将日志一起备份到数据备份目录,形成具备独立恢复能力的数据集,可以不依赖单独的日志归档进行恢复。
ALTER SYSTEM BACKUP DATABASE PLUS ARCHIVELOG;
四、租户级主备库
从 V4.1.0 版本开始,OceanBase 的物理备库从集群级变更为租户级。主备角色属于租户,而不是集群。
1. 核心概念
表格
| 角色 | 说明 |
| 主租户(Primary) | 用户创建的业务租户,支持完整的读写服务,产生 Redo 日志 |
| 备租户(Standby) | 主租户的实时热备份,提供容灾和只读服务,通过同步主租户的 Redo 日志来保持数据一致 |
2. 主备同步方式
表格
| 同步方式 | 说明 | 适用场景 |
| 基于网络(SERVICE) | 备租户通过网络直连主租户,实时同步活跃日志 | 网络延迟低,要求实时性高 |
| 基于归档(LOCATION) | 备租户从主租户的日志归档介质中读取日志进行同步 | 网络不稳定,或需要跨地域容灾 |
3. 创建备租户
方式一:创建空的备租户(基于网络)
-- 步骤1:在主租户中创建同步专用用户 CREATE USER standby_user IDENTIFIED BY 'password'; GRANT SELECT ON *.* TO standby_user; -- 步骤2:创建备租户 CREATE TENANT standby_tenant LOG_RESTORE_SOURCE = 'SERVICE=10.xxx.xxx.1:2881;10.xxx.xxx.2:2881;USER=standby_user@mysql;PASSWORD=password';
方式二:从物理备份恢复备租户
-- 步骤1:从备份恢复出备租户 RESTORE TENANT standby_tenant FROM 'file:///data/ob_backup/data,file:///data/ob_backup/archive' UNTIL '2024-08-05 12:00:00'; -- 步骤2:开启持续同步 RECOVER TENANT standby_tenant UNLIMITED;
4. 主备切换
| 切换类型 | 命令 | RPO | 主备关系 | 说明 |
| 日常切换(Switchover) | ALTER SYSTEM SWITCHOVER TO STANDBY |
0 | 保持主备关系 | 计划内切换,主备角色互换,数据不丢失 |
| 容灾切换(Failover) | ALTER SYSTEM ACTIVATE STANDBY TENANT |
>0 | 解除主备关系 | 主租户故障时,备租户强制升级为主租户,可能丢失数据 |
记忆口诀:
Switchover 日常切,RPO=0 关系在;
Failover 故障切,RPO>0 关系断。
五、核心要点总结
| 容灾机制 | 关键点 | 考试频率 |
| 回收站 | 默认关闭,DROP TABLE 进回收站,DROP DATABASE/INDEX/TRUNCATE 不进 | ⭐⭐⭐⭐⭐ |
| 闪回查询 | undo_retention 默认 1800s,MySQL 用 AS OF SNAPSHOT,Oracle 用 AS OF TIMESTAMP |
⭐⭐⭐⭐⭐ |
| 物理备份 | 先开日志归档,再开数据备份;支持全量/增量;介质:NFS/OSS/COS/S3 | ⭐⭐⭐⭐⭐ |
| PLUS ARCHIVELOG | 额外备份日志到数据备份目录,形成独立恢复能力 | ⭐⭐⭐⭐ |
| 恢复后状态 | 默认为备租户,需 ACTIVATE STANDBY TENANT 激活 |
⭐⭐⭐⭐ |
| 租户级主备库 | V4.1+,角色属于租户;Switchover(RPO=0)vs Failover(RPO>0) | ⭐⭐⭐⭐⭐ |
| 创建备租户 | 基于网络(SERVICE)或基于归档(LOCATION) | ⭐⭐⭐⭐ |
六、记忆口诀
容灾管理三件宝,回收闪回和备份;
回收站里放误删,闪回查询看历史;
物理备份分两步,先开归档再备份;
PLUS 选项加日志,独立恢复不求人; 主备库是租户级,V4 新变要记清; Switchover 日常切,Failover 故障切; RPO=0 关系在,RPO>0 关系断。
专项练习题:
一、判断题(15题)
1. OceanBase V4 中,回收站功能默认是开启的。
- A. 正确
- B. 错误
答案:B (错误)
解析: 回收站功能默认是关闭的,需要手动通过 SET GLOBAL recyclebin = ON; 开启。
2. 在 OceanBase V4 中,TRUNCATE TABLE 操作会将被截断的表放入回收站。
- A. 正确
- B. 错误
答案:B (错误)
解析: TRUNCATE TABLE 操作不会进入回收站(所有模式都不支持)。只有 DROP TABLE 操作会进入回收站。
3. 闪回查询(Flashback Query)支持 SCN 和 TIMESTAMP 两种维度的查询。
- A. 正确
- B. 错误
答案:A (正确)
解析: 闪回查询支持基于 SCN(事务版本号)和 TIMESTAMP(时间戳)两种方式进行历史数据查询。
4. undo_retention 是一个集群级配置项,默认值为 1800 秒。
- A. 正确
- B. 错误
答案:B (错误)
解析: undo_retention 是一个租户级配置项,默认值为 1800 秒。
5. 物理备份由数据备份和日志归档两部分组成。
- A. 正确
- B. 错误
答案:A (正确)
解析: 物理备份包括数据备份(基线和转储数据)和日志归档(Clog)。
6. 执行第一次全量备份前,不需要对集群进行合并。
- A. 正确
- B. 错误
答案:B (错误)
解析: 执行第一次全量备份前,必须对集群进行一次合并,以确保基线数据的一致性。
7. OceanBase V4 中,物理备份支持的最小粒度是表级。
- A. 正确
- B. 错误
答案:B (错误)
解析: 物理备份支持的最小粒度是租户级。虽然 V4 新增了表级恢复,但备份操作本身是租户级的。
8. 物理恢复出来的租户默认是主租户,可以直接提供读写服务。
- A. 正确
- B. 错误
答案:B (错误)
解析: 物理恢复出来的租户默认为备租户,需要执行 ALTER SYSTEM ACTIVATE STANDBY TENANT 激活为主租户。
9. OceanBase V4 中,物理备库是集群级别的,一个集群只能有一个主集群和一个备集群。
- A. 正确
- B. 错误
答案:B (错误)
解析: V4 的物理备库是租户级的(V3 是集群级),每个租户可以独立决定是否创建备租户。
10. SWITCHOVER 操作会解除主备关系,导致数据丢失。
- A. 正确
- B. 错误
答案:B (错误)
解析: SWITCHOVER(日常切换)保持主备关系,RPO=0,数据不丢失。FAILOVER(容灾切换)才会解除主备关系,RPO>0。
11. FAILOVER 操作后备租户升级为主租户,原主租户依然是主租户,两个租户解除主备关系。
- A. 正确
- B. 错误
答案:A (正确)
解析: FAILOVER 后备租户升级为主租户,原主租户依然是主租户,两个租户解除主备关系(可能出现双主)。
12. OceanBase V4 中,回收站中的对象支持备份恢复。
- A. 正确
- B. 错误
答案:B (错误)
解析: 回收站中的对象不支持备份恢复。
13. PLUS ARCHIVELOG 选项可以使数据备份具备独立恢复能力,不依赖单独的日志归档。
- A. 正确
- B. 错误
答案:A (正确)
解析: PLUS ARCHIVELOG 额外备份日志到数据备份目录,使数据备份可以独立恢复。
14. 在 OceanBase V4 中,DROP DATABASE 操作会进入回收站。
- A. 正确
- B. 错误
答案:B (错误)
解析: DROP DATABASE 操作不会进入回收站。只有 DROP TABLE 和 DROP TENANT(SYS 租户)会进入回收站。
15. 备租户可以通过网络直连主租户实时同步日志,也可以从主租户的日志归档介质中读取日志进行同步。
- A. 正确
- B. 错误
答案:A (正确)
解析: 备租户支持两种同步方式:基于网络(SERVICE)和基于归档(LOCATION)。
二、单选题(10题)
16. 在 OceanBase V4 中,回收站的默认状态是?
- A. 开启
- B. 关闭
- C. 仅 SYS 租户开启
- D. 仅 Oracle 模式开启
答案:B
解析: 回收站默认关闭,需要手动开启。
17. 闪回查询中,undo_retention 的默认值是多少?
- A. 600 秒
- B. 1800 秒
- C. 3600 秒
- D. 7200 秒
答案:B
解析: undo_retention 默认值为 1800 秒(30分钟)。
18. 在 OceanBase V4 中,以下哪个操作会进入回收站?
- A.
DROP DATABASE - B.
DROP INDEX - C.
TRUNCATE TABLE - D.
DROP TABLE
答案:D
解析: 只有 DROP TABLE 操作会进入回收站。DROP DATABASE、DROP INDEX 和 TRUNCATE TABLE 都不会进入回收站。
19. 物理备份中,执行增量备份的前提条件是?
- A. 需要先开启日志归档
- B. 需要有全量备份存在
- C. 需要先执行合并
- D. 需要设置备份密码
答案:B
解析: 执行增量备份前,必须已经有全量备份存在。
20. 关于 SWITCHOVER 和 FAILOVER 的区别,以下说法正确的是?
- A.
SWITCHOVER会解除主备关系,FAILOVER保持主备关系 - B.
SWITCHOVER保持主备关系,FAILOVER解除主备关系 - C. 两者都保持主备关系
- D. 两者都解除主备关系
答案:B
解析: SWITCHOVER(日常切换)保持主备关系,RPO=0;FAILOVER(容灾切换)解除主备关系,RPO>0。
21. 物理恢复出来的租户,默认是什么角色?
- A. 主租户
- B. 备租户
- C. 系统租户
- D. Meta 租户
答案:B
解析: 物理恢复出来的租户默认为备租户,需要执行 ALTER SYSTEM ACTIVATE STANDBY TENANT 激活为主租户。
22. 在 OceanBase V4 中,MySQL 模式闪回查询的正确语法是?
- A.
SELECT * FROM tb AS OF TIMESTAMP '...' - B.
SELECT * FROM tb AS OF SNAPSHOT TIMESTAMP_TO_SCN('...') - C.
SELECT * FROM tb FLASHBACK TO '...' - D.
SELECT * FROM tb AT TIMESTAMP '...'
答案:B
解析: MySQL 模式闪回查询使用 AS OF SNAPSHOT 语法,参数为 SCN,需要使用 TIMESTAMP_TO_SCN() 函数转换。
23. 以下哪个不是 OceanBase V4 支持的备份介质?
- A. NFS
- B. OSS
- C. 磁带
- D. AWS S3
答案:C
解析: OceanBase V4 支持 NFS、OSS、COS 和 AWS S3(V4.2.1 BP7+)作为备份介质,不支持磁带。
24. 关于回收站中对象的自动清理,以下说法正确的是?
- A. 默认开启自动清理,对象存放 7 天后自动清理
- B. 默认关闭自动清理,需要设置
recyclebin_object_expire_time开启 - C. 自动清理由系统自动触发,无需配置
- D. 回收站中的对象永远不会被自动清理
答案:B
解析: 回收站自动清理功能默认关闭(recyclebin_object_expire_time 默认 0s),需要手动设置非 0 值开启。
25. 创建备租户时,基于网络同步的 LOG_RESTORE_SOURCE 参数中,SERVICE 选项用于指定什么?
- A. 日志归档路径
- B. 主租户的连接地址
- C. 备租户的存储路径
- D. 备份介质的类型
答案:B
解析: SERVICE 选项用于指定主租户的连接地址,备租户通过网络直连主租户实时同步日志。
三、多选题(10题)
26. 关于 OceanBase V4 的回收站功能,以下说法正确的是?
- A. 默认关闭
- B.
DROP TABLE操作会进入回收站 - C.
TRUNCATE TABLE操作会进入回收站 - D. SYS 租户支持删除租户进回收站
答案:A、B、D
解析: C 错误——TRUNCATE TABLE 操作不会进入回收站(所有模式都不支持)。
27. 关于闪回查询,以下说法正确的是?
- A.
undo_retention默认值为 1800 秒 - B. MySQL 模式使用
AS OF SNAPSHOT语法 - C. Oracle 模式使用
AS OF TIMESTAMP语法 - D. 闪回查询支持 SCN 和 TIMESTAMP 两种维度
答案:A、B、C、D
解析: 四项全部正确。
28. 关于物理备份,以下说法正确的是?
- A. 需要先开启日志归档
- B. 执行全量备份前需要对集群进行一次合并
- C. 执行增量备份前需要有全量备份存在
- D. 必须设置备份密码
答案:A、B、C
解析: D 错误——设置备份密码是可选的,不是必须的。
29. 关于 OceanBase V4 的物理备份介质,以下哪些是支持的?
- A. NFS
- B. OSS
- C. COS
- D. AWS S3
答案:A、B、C、D
解析: V4 支持 NFS、OSS、COS 和 AWS S3(V4.2.1 BP7+)作为备份介质。
30. 关于租户级主备库,以下说法正确的是?
- A. V4 的物理备库是租户级的(V3 是集群级)
- B. 主租户支持完整的读写服务
- C. 备租户提供容灾和只读服务
- D. 一个主租户可以有多个备租户
答案:A、B、C、D
解析: 四项全部正确。
31. 关于 SWITCHOVER 和 FAILOVER,以下说法正确的是?
- A.
SWITCHOVER用于计划内切换 - B.
FAILOVER用于灾难恢复 - C.
SWITCHOVER保持主备关系 - D.
FAILOVER解除主备关系
答案:A、B、C、D
解析: 四项全部正确。
32. 关于回收站中的对象,以下说法正确的是?
- A. 可以通过
FLASHBACK TABLE恢复 - B. 可以通过
PURGE RECYCLEBIN清空 - C. 回收站中的对象支持备份恢复
- D. 恢复表会连通索引一起恢复
答案:A、B、D
解析: C 错误——回收站中的对象不支持备份恢复。
33. 关于物理恢复,以下说法正确的是?
- A. 支持租户级恢复
- B. 支持表级恢复(V4 新增)
- C. 恢复后租户默认为备租户
- D. 恢复后租户默认为主租户
答案:A、B、C
解析: D 错误——恢复后租户默认为备租户,需要 ACTIVATE STANDBY TENANT 激活。
34. 关于创建备租户的方式,以下说法正确的是?
- A. 可以创建空的备租户,通过网络实时同步
- B. 可以从物理备份恢复出备租户
- C. 基于网络的同步方式使用
SERVICE选项 - D. 基于归档的同步方式使用
LOCATION选项
答案:A、B、C、D
解析: 四项全部正确。
35. 关于 PLUS ARCHIVELOG 选项,以下说法正确的是?
- A. 额外备份日志到数据备份目录
- B. 使数据备份具备独立恢复能力
- C. 可以不依赖单独的日志归档进行恢复
- D. 是必选选项,每次备份都必须指定
答案:A、B、C
解析: D 错误——PLUS ARCHIVELOG 是可选选项,不是必须指定的。
四、考点频率总结
表格
| 考点 | 题型 | 考试频率 |
| 回收站默认关闭 | 判断/单选 | ⭐⭐⭐⭐⭐ |
| 哪些操作进回收站(DROP TABLE 进,TRUNCATE/DROP DATABASE/DROP INDEX 不进) | 判断/单选/多选 | ⭐⭐⭐⭐⭐ |
| 闪回查询语法(MySQL vs Oracle) | 单选 | ⭐⭐⭐⭐⭐ |
undo_retention 默认值 1800s |
判断/单选 | ⭐⭐⭐⭐⭐ |
| 物理备份步骤(先归档再备份) | 判断/单选/多选 | ⭐⭐⭐⭐⭐ |
| 备份介质(NFS/OSS/COS/S3) | 多选 | ⭐⭐⭐⭐ |
| 恢复后租户默认为备租户 | 判断/单选 | ⭐⭐⭐⭐ |
| Switchover vs Failover(RPO/关系) | 判断/单选/多选 | ⭐⭐⭐⭐⭐ |
| 租户级主备库(V4 新特性) | 判断/多选 | ⭐⭐⭐⭐⭐ |
| PLUS ARCHIVELOG 作用 | 判断/多选 | ⭐⭐⭐⭐ |
回收站自动清理(recyclebin_object_expire_time) |
判断/单选 | ⭐⭐⭐ |
| 备租户创建方式(SERVICE vs LOCATION) | 单选/多选 | ⭐⭐⭐ |