1. OBLOADER  旁路导入

1.1 旁路导入介绍

OBLOADER 4.2.6 及之后的版本支持旁路导入数据。

  • --rpc-port= rpc_port_num

    用于连接 OBServer RPC 端口。该选项与 --direct--parallel 搭配使用,表示在旁路导入模式下连接 OBServer RPC 端口导入数据。

    说明

    • 该选项仅适用于 OceanBase 4.2.0 RC2 及之后的版本。
    • 获取 OBServer RPC 端口方式:
      • 连接 ODP 服务端时:
        • 云数据库 OceanBase 环境下,ODP RPC Port 默认 3307。
        • OceanBase 数据库环境下,默认端口 2885;如果需要自定义,可以在启动 ODP 时通过 -s 选项进行指定。
      • 连接 OBServer 服务端时,sys 租户下查询系统视图 DBA_OB_SERVERS 即可获取 OBServer 的 RPC 端口,默认端口 2882。
  • --direct

    用于指定旁路导入模式。该选项与 --rpc-port--parallel 搭配使用。

    说明

    • OBLOADER 旁路导入模式暂时不支持二进制数据类型。
    • OBLOADER 旁路导入模式支持连接 OBServer 和 ODP。对应的版本要求:
      • 连接 OBServer 时:要求 OBServer 版本必须为 4.2.0 及之后。
      • 连接 ODP 时:要求 ODP 版本必须为 4.1.3 及之后, 且 OBServer 版本必须为 4.2.1 及之后。
  • --parallel= parallel_num

    用于旁路导入时加载数据的并行度。该选项与 --rpc-port--direct 搭配使用。

2. --direct 参数是否支持 .sql 文件?

❌ 不支持。
根据 OceanBase 官方文档:

  1. --direct 是 OBLoader 的旁路导入模式,仅适用于 CSV 格式 文件18。

  2. 旁路导入通过绕过 SQL 解析层直接写入数据文件提升性能,但设计初衷是优化纯数据导入(如 CSV),而非 SQL 脚本(含 DDL 或复杂 DML)168。

  3. 若需导入 .sql 文件(如 mysqldump 导出的结构+数据),需使用 OBLoader 的普通模式(无 --direct 参数),此时按 SQL 语句逐行解析执行14。


3. OBLoader 与 MySQL 命令行综合对比

对比维度OBLoader (OceanBase)MySQL 命令行核心差异
支持文件格式 CSV、SQL、ORC、Parquet 等16 SQL (mysqldump)、CSV (LOAD DATA INFILE) OBLoader 格式支持更丰富;MySQL 原生适配 SQL 文件。
导入模式 支持旁路导入 (--direct,仅 CSV) 和普通 SQL 模式 仅普通 SQL 模式 OBLoader 旁路导入跳过 SQL 层,速度提升 2-5 倍18。
并发控制 --thread 调整线程数;--parallel 旁路并发度 无内置并发,需手动拆分文件或并行会话 OBLoader 内置并发切分与负载均衡18。
性能优化 ✅ 三层调优:
1. JVM 内存(调至物理内存 60%)
2. 租户内核参数(冻结阈值/限流)
3. 延迟索引创建258
✅ 有限优化:
innodb_buffer_pool_size
max_allowed_packet
OBLoader 深度集成 OceanBase 内核,优化维度更全面。
大文件处理 自动逻辑切分文件,不占额外存储1 需手动拆分文件 OBLoader 减少人工干预。
适用场景 OceanBase 专属优化;异构数据源导入 MySQL 原生备份恢复 OBLoader 在 OceanBase 环境中性能碾压;MySQL 命令行兼容性更通用4。

4. 使用建议与避坑指南

4.1 OBLoader 使用场景

  1. CSV 高速导入:必用 --direct 旁路模式(需 OBServer≥4.2.0 + ODP≥4.1.3)8。

    bash
     
    ./obloader --direct --rpc-port 2882 --parallel 16 -f data.csv  # 示例命令
  2. SQL 文件导入:禁用 --direct,采用普通模式14:

    bash
     
    ./obloader -f dump.sql  # 自动识别 SQL 格式

4.2 MySQL 命令行使用场景

  1. 原生 mysqldump 恢复:

    bash
     
    mysql -u user -p db_name < dump.sql  # 全量恢复
  2. CSV 导入(无旁路优化):

    sql
     
    LOAD DATA INFILE 'data.csv' INTO TABLE tbl;  -- 需调整 buffer 和 packet 大小

4.3 注意事项

  • 旁路导入限制:不支持二进制数据(如 BLOB)、字段长度需可控8。

  • 索引处理:OBLoader 建议延迟创建普通索引(主键除外)25。

  • 内存配置:

    • OBLoader:编辑 bin/obloader 调整 -Xms48G -Xmx48G(示例 80G 物理机)28。

    • MySQL:增大 innodb_buffer_pool_size 至物理内存 70%4。


5 总结

  • --direct 仅支持 CSV:是 OBLoader 在 OceanBase 环境中的“性能杀器”,但对 SQL 文件无效18。

  • 工具选择优先级:

    • ✅ OceanBase + CSV 导入 → OBLoader + --direct

    • ✅ MySQL + mysqldump 恢复 → MySQL 命令行

    • ⚠️ OceanBase + SQL 文件导入 → OBLoader 普通模式(避免旁路)

升级建议:若需高频导入 SQL 文件至 OceanBase,可考虑先转换为 CSV 格式,再利用旁路导入极致性能

 posted on 2025-07-21 11:04  xibuhaohao  阅读(127)  评论(0)    收藏  举报