租户恢复30分钟还没好

【 使用环境 】 测试环境
【 OB or 其他组件 】ob
【 使用版本 】4218
【问题描述】恢复租户太慢了

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

用户问题: “OceanBase 在测试环境中恢复租户耗时超过30分钟,如何加速恢复过程?”
推荐使用 obdiag 工具进行日志采集,以便我们能够分析恢复过程中的瓶颈并提供优化建议。
日志采集场景: 数据恢复问题
日志采集命令: obdiag gather scene run --scene=observer.recovery
请您提供一些信息以便我们更好地帮助您:

  1. 恢复过程中是否有任何错误信息或警告?
  2. 恢复的租户大小是多少?
  3. 恢复的目标集群配置(如 CPU、内存、磁盘 I/O 性能)?
  4. 源集群和目标集群之间的网络带宽和延迟情况如何?
  5. 是否有其他同时进行的大规模操作,例如数据导入或导出?
  6. 恢复过程中是否启用了压缩或其他优化选项?
  7. 恢复操作是在同集群内还是跨集群进行的?

详情请参考:

  1. 恢复架构
  2. 设置日志恢复终点
  3. 恢复租户
  4. 恢复完成后升级租户
  5. 按表恢复前准备
  6. 执行物理恢复

附上敏捷诊断工具 obdiag 使用帮助链接

根据您提供的日志信息,租户恢复任务的状态为 RESTORING,这表明恢复操作正在进行中。恢复租户的速度受多种因素影响,包括但不限于:

  1. 租户数据量:数据量越大,恢复所需的时间越长。
  2. 目标集群的硬件配置:CPU、内存、磁盘 I/O 性能等都会影响恢复速度。
  3. 源集群和目标集群之间的网络带宽和延迟:如果数据需要从远程备份位置传输,网络状况会显著影响恢复速度。
  4. 并发恢复任务的数量:如果有多个恢复任务同时进行,可能会导致资源竞争,从而降低恢复速度。
  5. 恢复选项:例如是否启用了压缩等优化选项。

检查恢复进度

您可以使用以下 SQL 查询来检查恢复任务的详细进度:

obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_RESTORE_PROGRESS\G

这条命令会返回恢复任务的详细信息,包括 RESTORE_PROGRESSRECOVER_PROGRESS 字段,这些字段可以帮助您了解恢复的具体进度。

优化恢复速度

为了加速恢复过程,您可以考虑以下几点:

  1. 增加资源池配置:确保目标租户的资源池配置足够高,特别是 CPU 和内存。
  2. 优化网络环境:确保源集群和目标集群之间的网络带宽充足,延迟低。
  3. 减少并发任务:尽量避免在同一时间进行多个大规模操作,以减少资源竞争。
  4. 使用高性能存储:使用高性能的存储设备,如 SSD,可以显著提高 I/O 性能。
  5. 调整恢复选项:如果您启用了压缩等优化选项,可以尝试关闭这些选项,看看是否能提高恢复速度。

示例:增加资源池配置

假设您需要增加目标租户的资源池配置,可以使用以下命令:

ALTER RESOURCE POOL pool_name SET UNIT_COUNT = new_unit_count, UNIT_CONFIG = (MAX_CPU = new_max_cpu, MEMORY_SIZE = new_memory_size);

示例:检查恢复进度

obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_RESTORE_PROGRESS\G

示例:减少并发任务

如果您发现有多个恢复任务同时进行,可以暂停其他任务,优先完成当前任务。

示例:使用高性能存储

确保目标集群使用高性能的存储设备,如 SSD。

如果您已经尝试了上述方法但恢复速度仍然较慢,建议联系 OceanBase 的技术支持团队,他们可以提供更深入的分析和优化建议。

希望这些信息对您有所帮助! [2]

检索到的文档如下:

  1. 查看按表恢复结果
  2. 查看物理恢复进度

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

你点进去 看看 你这个 恢复的租户的资源情况

  1. 应该是先创建租户 再恢复数据的,

select *from CDB_OB_RESTORE_PROGRESS; sys租户看看这个
看看ocp运行的步骤 , 到这个表的哪一步了?


提升恢复效率 需要保证恢复目标租户的资源(CPU,内存)足够,并调大恢复目标租户的参数 ha_high_thread_score

ALTER SYSTEM SET ha_low_thread_score = 10 TENANT =xxx