obloader导入问题表卡住

Version: 4.3.3.1-RELEASE
还原数据 obloader -h 192.168.xx.xx -P2881 --direct --parallel 4 --rpc-port 2882 -uroot -pxxx -D db --ddl --sql --all -f /dbbackup/DUMP/data/库名 遇到某些可能数据有问题的表,反复刷屏,进度Progress数字不再变化,感觉像卡住了,问题表也没法跳过,只有终止命令,是否有跳过表之类的选项?

1 个赞

有一份数据导入进度已经到94%卡住了,如果终止又得重头导,有办法不终止继续下去吗

这个问题要先确定数据导入是卡住还是很慢,如果进度条很长时间更新一点,可以使用OCP结合性能分析页面的数据库看看是不是数据库存在瓶颈。如果一直卡住不动,在刚才的基础上,如果性能视图资源利用率很低,几乎没有负载,说明导入出现问题了,如果有数据问题会打到日志里,如果日志中未出现报错,一般情况下是正常的。不过看你发的截图中的导入数据性能不是很高,建议结合OCP在看看性能数据和租户资源配置情况,obloader应该没有断点续传和导入过程中跳过的功能。@论坛小助手

根据您的描述和提供的信息,以下是针对 obloader 导入卡住问题的分析与建议:


1. 确认是否真的卡住

  • 观察日志:从您提供的日志来看,Direct load for table "trade_ord_attribute" waiting until begin phase is done...Direct load for table "pms_purchase_order_item" waiting until begin phase is done... 的信息反复出现,这可能表明某些表的导入在等待某个阶段完成。
  • 检查性能视图
    • 使用 OCP 或者通过 SQL 查询 gv$sql_audit 表,查看当前正在执行的 SQL 是否存在长时间运行的情况。
    • 检查 OBServer 的资源利用率(CPU、内存、IO 等),如果资源利用率很低,则可能是导入工具本身的问题;如果资源利用率高,则可能是数据库负载过高导致。

2. obloader 是否支持断点续传或跳过问题表

根据文档库中的信息(参考 obloader/obdumper 文档):

  • 断点续传:obloader 目前不支持断点续传功能。一旦导入中断,需要重新开始。
  • 跳过问题表:obloader 没有直接提供跳过特定表的功能。但可以通过以下方式间接实现:
    • 手动将问题表从导入任务中移除,重新生成导入配置文件。
    • 使用 --exclude-tables 参数排除问题表。例如:
      obloader -h 192.168.xx.xx -P2881 --direct --parallel 4 --rpc-port 2882 -uroot -pxxx -D db --ddl --sql --all -f /dbbackup/DUMP/data/库名 --exclude-tables trade_ord_attribute,pms_purchase_order_item
      

3. 排查导入卡住的原因

如果确定导入卡住,可以按照以下步骤排查:

(1) 检查日志

  • 查看 obloader 的日志文件,确认是否有具体的错误信息。
  • 日志路径通常为 logs/obloader.log,或者通过 --log-path 参数指定的日志目录。

(2) 分析数据库端性能瓶颈

  • SQL 性能问题:参考 SQL 性能问题的典型场景和排查思路,通过 gv$sql_audit 表分析慢查询。
    SELECT * FROM gv$sql_audit WHERE sql_id = '<相关SQL_ID>';
    
  • IO 性能问题:参考 IO util 大于 99%,检查磁盘 IO 是否满负荷运行。
    • 如果 ioawait > 200ms,可能是磁盘设备处理效率低。
  • CLOG 回收问题:参考 CLOG FAQ,检查是否存在 CLOG 回收缓慢导致的写入阻塞。

(3) 检查网络连接

  • 如果 obloader 和 OceanBase 数据库之间存在网络延迟或不稳定,可能导致导入卡住。
  • 可以通过 pingtraceroute 测试网络连通性。

4. 优化导入性能

如果导入速度较慢但未完全卡住,可以尝试以下优化措施:

  • 增加并行度:调整 --parallel 参数值,适当提高并行度(但不要超过硬件资源限制)。
  • 调整超时参数:对于大事务插入,可以设置更大的超时时间:
    SET ob_query_timeout = 1000000000;
    SET ob_trx_timeout = 1000000000;
    
  • 分批导入:将数据按表或按文件分批导入,避免单次导入过大导致问题。

5. 总结

  • 如果确认是 obloader 工具本身的问题(如不支持断点续传或跳过问题表),建议重新规划导入策略,先排除问题表后重试。
  • 如果是数据库端性能瓶颈导致的卡住,可以通过 OCP 或者系统表分析具体原因,并针对性优化。
  • 如果问题仍未解决,建议联系 OceanBase 官方技术支持团队,提供更多详细日志和环境信息以便进一步排查。

希望以上建议对您有所帮助!

具体信息可参考以下文档:

  1. 体验并行导入和数据压缩
  2. obloader/obdumper
  3. 使用导数工具进行数据迁移
  4. 集群管理 FAQ
  5. SQL 性能问题的典型场景和排查思路
  6. os_tsar_sda_ioawait OB server 服务器磁盘 ioawait 过高
  7. 多租户线程常见问题
  8. 流量控制
  9. 迁移同步相关生态组件介绍

OceanbaseTalk机器人 答复有断点恢复功能,论坛小助手又说不支持断点续传功能,哪个是对的


不支持断点续传功能

1 个赞

所以pos并不是指进度是吧

是的