【OceanBase诊断调优】—— 备份恢复如何定位 NFS 服务异常

当备份、归档出现异常时,我们应该首先排除备份介质、网络是否正常,本文讲述如何通过系统表和日志来定位 NFS 服务异常。

适用版本

OceanBase 数据库所有版本。

如何查看备份归档异常?

  1. 查看备份归档状态表,MAX_NEXT_TIME 应与当前时间接近,如果该时间停止则说明归档可能存在异常。

    select tenant_id, MIN_FIRST_TIME,MAX_NEXT_TIME
    from CDB_OB_BACKUP_ARCHIVELOG;
    
  2. 或者查看归档进度表,通过类似方法进行判断。

    select * from CDB_OB_BACKUP_ARCHIVELOG_PROGRESS
    where TENANT_ID = xx
    order by MAX_NEXT_TIME limit 10;
    
  3. 查看 OBServer 日志中关于归档的统计日志,搜索关键词 archive_sender statistic

    grep 'archive_sender statistic' observer*
    observer.log.20230612161618:[2023-06-12 16:15:50.311863] INFO [ARCHIVE] ob_archive_sender.cpp:1589 [25879][0][Y0-0000000000000000-0-0] [lt=5] [dc=0] archive_sender statistic in 10s(total_send_buf_size=29384, total_send_log_count=157, avg_log_size=187, total_send_task_count=2, total_send_cost_ts=2809, avg_send_task_cost_ts=1404)
    

    该日志为 archive_sender 在 10 秒内的统计信息:

    • total_send_buf_size: log 发送缓冲区发生的日志大小。
    • total_send_log_count: 总发送日志数量。
    • total_send_task_count: 总的网络 IO 个数。
    • total_send_cost_ts: 所有网络 IO 的总耗时,单位为微秒(us)。
      • 如果接近或者超过 10s,说明 IO 已经跑满了。
    • avg_send_task_cost_ts: 平均一个网络 IO 的耗时,单位为微秒(us)。
      • 一般几十 ms 量级算正常,超过 100ms 就要看看 NFS 盘是不是性能不够,网络带宽是否瓶颈等。
  4. 查看 OBServer 日志中关于归档文件访问的日志,搜索关键词 print_access_storage_log,查看归档日志文件的写入速度,如果写入速度不符合预期,则可能存在问题。

    cat observer.log|grep 'print_access_storage_log'
    [2023-06-12 16:15:50.311863] WARN [STORAGE] print_access_storage_log(ob_i_storage.cpp:47) [16182][4130][YB420A12992F-0005EFDDF8A827B0] [lt=6] [dc=0] access storage op=storage appender_url=file:///obbackup/xxxxxxx size=0 Byte cost_ts=1008485 us speed=0.00 MB/s
    
  5. 如果第 4 步 print_access_storage_log 的日志显示 NFS 归档有问题,继续使用该日志的 trace_id 来查看更多的报警、报错信息,比如 -4009 failed to lock file、OB_IO_ERROR 等。

    nfs

  6. 如果 NFS 服务存在异常,也可以使用操作系统日志来查看是否存在相关的报错信息。

    dmesg -T|grep NFS

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-16 06:08:13       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-16 06:08:13       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-16 06:08:13       82 阅读
  4. Python语言-面向对象

    2024-05-16 06:08:13       91 阅读

热门阅读

  1. Qt初识

    Qt初识

    2024-05-16 06:08:13      28 阅读
  2. 时间格式数据向前或向后归于整时

    2024-05-16 06:08:13       30 阅读
  3. Zookeeper笔记,MIT6.824

    2024-05-16 06:08:13       37 阅读
  4. Go 语言将 PDF 转为 Word 如何处理

    2024-05-16 06:08:13       38 阅读
  5. hashmap数据结构为什么是链表

    2024-05-16 06:08:13       39 阅读
  6. 2.go语言初始(二)

    2024-05-16 06:08:13       27 阅读
  7. 金卡后打开

    2024-05-16 06:08:13       30 阅读