with one click
backup-archive-restore-troubleshooting
// 备份、日志归档、物理恢复、恢复时间窗、NFS/OSS/COS 归档路径、对象存储权限、备租户恢复源、ob_admin 读取归档位点、oblogminer schema_meta 等问题;OMS 迁移同步问题不使用本 skill。
// 备份、日志归档、物理恢复、恢复时间窗、NFS/OSS/COS 归档路径、对象存储权限、备租户恢复源、ob_admin 读取归档位点、oblogminer schema_meta 等问题;OMS 迁移同步问题不使用本 skill。
标准 SOP:集群巡检 check_cluster/check_list 与 RCA 入口(rca_run/rca_list)。用户要健康检查、巡检时使用;RCA 场景映射与手动降级详见 obdiag-rca skill;与 observer-log-analysis、observer-sql-analysis、obproxy-log-analysis 分工明确。
标准 SOP:多集群发现 list_obdiag_clusters、当前会话 show_current_cluster、/use 切换与 cluster_config_path 定向。多套 ~/.obdiag/*.yml、切换默认集群、或一句话点名某集群时使用。
性能类采集与主机 IO:ASH、AWR、perf 火焰图、sysstat、磁盘 IO。在用户说卡顿、慢、会话堆积、要看 ASH/AWR/火焰图或主机负载时使用;与 observer-sql-analysis、observer-log-analysis 互补。
OceanBase 集群所有根因分析场景的统一 SOP。覆盖事务超时/回滚/断连、内存不足、合并卡住、日志盘满、DDL 失败、Schema 泄漏、GC 异常、弱一致性读、OMS 等。始终先执行 rca_run,如 RCA 脚本无法给出结论再按本 skill 降级到手动日志采集分析。
未知/未分类问题的统一分诊 SOP:用户描述集群异常但症状不明确、不知从何入手,或问题无法直接对应 rca/observer-log-analysis/observer-sql-analysis 等专项 skill 时,强制先执行全量巡检 check_cluster,再根据巡检结果决定下一步路径。
obdiag agent 工具使用指南:配置文件生成、gather/analyze/check/rca 各命令的调用方式、参数说明与典型场景。用户询问"怎么用 obdiag"、"如何采集日志"、"怎么生成配置"、"如何巡检/根因分析",或 agent 自身不确定该调哪个工具时加载本 skill。
| name | backup-archive-restore-troubleshooting |
| description | 备份、日志归档、物理恢复、恢复时间窗、NFS/OSS/COS 归档路径、对象存储权限、备租户恢复源、ob_admin 读取归档位点、oblogminer schema_meta 等问题;OMS 迁移同步问题不使用本 skill。 |
4018、恢复源误配、集群不可用时读归档 checkpoint、oblogminer 缺 schema_meta。observer-log-analysis;全局分诊见 obdiag-triage;扩容后 LS wait_offline、GC 被归档阻塞见 observer-storage-space-troubleshooting。tenant_id、归档路径、恢复目标时间/SCN。| 现象 | 主路径 | 来源 |
|---|---|---|
| 归档 checkpoint 不推进 | 阶段 A:定位卡住 LS 与 leader | sop_069 |
| 归档长期 BEGINNING | 阶段 A:NFS/权限 | sop_070 |
OSS/COS format file does not exist 或归档后 core | 阶段 B:对象存储路径与版本 | sop_033, sop_064 |
OCP/OBS 备份 no I/O operation permission | 阶段 C:对象存储权限 | sop_037 |
物理恢复 4018 / no enough log for restore | 阶段 D:恢复时间窗 | sop_048 |
| 备租户恢复源报不允许指向自己 | 阶段 E:restore source 与 cluster_id | sop_047 |
| 集群不可用但要归档 checkpoint | 阶段 F:ob_admin dump_backup | sop_076 |
oblogminer 缺 schema_meta | 阶段 G:数据字典归档参数 | sop_202 |
先从归档进度表找到卡住的日志流,再定位 leader 节点检查 NFS/权限。
SELECT *, scn_to_timestamp(checkpoint_scn)
FROM __all_virtual_ls_log_archive_progress
WHERE tenant_id=<tenant_id> AND piece_id=<piece_id>;
SELECT * FROM __all_virtual_ls_status
WHERE tenant_id=<tenant_id>;
SELECT * FROM gv$ob_log_stat
WHERE tenant_id=<tenant_id> AND ls_id=<ls_id>;
租户侧或版本差异场景可用:
SELECT *, scn_to_timestamp(checkpoint_scn)
FROM CDB_OB_LS_LOG_ARCHIVE_PROGRESS
WHERE tenant_id=<tenant_id> AND piece_id=<piece_id>;
SELECT svr_ip FROM gv$ob_log_stat
WHERE tenant_id=<tenant_id> AND ls_id=<ls_id> AND role='leader';
在 leader 节点:
df -h
# observer.log 中查 Permission denied、failed to create parent dir 等归档路径错误
修复 NFS 挂载或目录权限后,归档状态应继续推进。
| 现象 | 动作 |
|---|---|
| 4.2.1.2 前版本配置 OSS 后归档/备份导致节点 core | 仅限该窄场景的应急处置:先记录原 LOG_ARCHIVE_DEST,确认业务方接受归档中断和恢复窗口缺口风险,再停 OSS 访问并拉起集群;业务租户执行 ALTER SYSTEM NOARCHIVELOG;、ALTER SYSTEM SET LOG_ARCHIVE_DEST='';;升级到 4.2.1.2+ 后重新规划归档。 |
COS/对象存储 format file does not exist | 不要预创建与 LOG_ARCHIVE_DEST 完全一致的末级“目录”对象;只允许预创建上级路径。 |
OCP/OBS 备份目的地报 no I/O operation permission 时,用实际访问用户验证同一路径是否具备:
缺删除等权限也可能导致 I/O permission 报错。
按时间恢复时,恢复点必须满足:
CDB_OB_BACKUP_SET_FILES.MIN_RESTORE_SCN_DISPLAY
<= restore_timestamp
<= CDB_OB_ARCHIVELOG.CHECKPOINT_SCN_DISPLAY
按 SCN 恢复时,恢复点必须满足:
CDB_OB_BACKUP_SET_FILES.MIN_RESTORE_SCN
<= restore_scn
<= CDB_OB_ARCHIVELOG.CHECKPOINT_SCN
若归档存在中断,可恢复区间不能跨中断。
set tenant itself as log restore source is not allowed 时:
log restore source 没有填成本租户。cluster_id 不同;手工部署或显式指定 cluster_id 时尤其容易相同。正常情况下直接查:
SELECT * FROM cdb_ob_archivelog;
集群不可用时用 ob_admin 从归档路径解析:
export OB_ADMIN_LOG_DIR=/tmp
./ob_admin dump_backup -d<archive_path>
从输出中读取 checkpoint_scn。
schema_meta归档目录缺 schema_meta 时,先核对升级路径与数据字典归档参数。
SELECT * FROM __all_cluster_event_history;
SHOW PARAMETERS LIKE 'dump_data_dictionary_to_log_interval';
如果升级经过 4.2.5 BP1,可能因 dump_data_dictionary_to_log_interval=0 导致数据字典不写归档。可在 sys 租户设置:
ALTER SYSTEM SET dump_data_dictionary_to_log_interval = '24h';
等待后检查新的 piece 是否生成 schema_meta。
4018 是否同时核对备份集 MIN_RESTORE 与归档 CHECKPOINT?cluster_id?dump_data_dictionary_to_log_interval?