群通知
2025 年4 月 8 日 10:03
#1
【 使用环境 】 测试环境
【 OB or 其他组件 】ob 4.2.5.2
【 使用版本 】4.3.3
【问题描述】2025-04-08 09:30:08 [INFO] Parsed args:
[–sql] true
[–file-path] /disk_d/meiyang/back/mhsb_test_2
[–host] 192.168.0.139
[–port] 2881
[–user] root@mhsb_root
[–password] ******
[–database] mhsb_test_1
[–sys-user] root
[–all] true
2025-04-08 09:30:08 [WARN] The Java version (1.8.0_171) you are currently using is not recommended. Recommended range: [1.8.0_300, 9.0.0)
2025-04-08 09:30:09 [INFO] Log files will be written to /disk_d/meiyang/back/mhsb_test_2/logs
2025-04-08 09:30:09 [INFO] Trying to establish JDBC connection to root@mhsb_root
…
2025-04-08 09:30:10 [INFO] Server Mode: OBMYSQL-4.2.5.2
2025-04-08 09:30:10 [INFO] Querying table column metadata, this might take a while…
2025-04-08 09:30:10 [WARN] No table to proceed for schema: “mhsb_test_1”
2025-04-08 09:30:10 [ERROR] Load failed! Error: The base tables (non temporary) are not found in the schema: mhsb_test_1. Please check the --table option!
2025-04-08 09:30:10 [ERROR] System exit 1
【复现路径】尝试过重新创建数据库,使用ddl、之类都不行
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手 ] 即可召唤小助手,欢迎试用!
论坛小助手
2025 年4 月 8 日 10:04
#3
根因分析场景: SQL 执行出错
根因分析命令: obdiag rca run --scene=sql_execution_error --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”
日志采集场景: SQL 执行出错
日志采集命令: obdiag gather scene run --scene=observer.sql_err --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”
推荐您使用 obdiag 工具进行根因分析和日志采集,以便确认问题所在。上述命令将帮助我们收集与 SQL 执行相关的错误信息,并定位为何在目标 schema 中未找到基础表。
请您执行上述命令后,将生成的日志压缩包提供给我们以进一步分析。同时,为了更好地了解问题背景,请您回答以下问题:
是否确认 schema mhsb_test_1
已正确创建?如果已创建,请检查其权限设置是否正确。
在导入数据之前,是否已经通过其他工具或脚本创建了所需的表?如果有,请提供相关表的创建语句。
导入工具的具体名称和版本是什么?是否可以提供导入时使用的完整命令或配置文件?
是否尝试过手动查询 schema mhsb_test_1
下的表?如果有,请提供查询结果。
是否有对 OceanBase 集群进行过任何最近的变更操作(如升级、扩容或修改参数)?如果有,请详细描述变更内容。
附上敏捷诊断工具 obdiag 使用帮助链接
从报错来看,是往目标端导入数据时,mhsb_test_1是空的,导入数据前需要先创建对应表结构
1 个赞
群通知
2025 年4 月 8 日 14:10
#5
./obdumper -h -P -uroot -p’ -Dmhsb_test --sql --all -f /disk_d//back这个命令导出是导出表结构与数据,但sql文件中只存在数据,无表结构,导数工具不能做全表导出吗
论坛小助手
2025 年4 月 8 日 14:11
#7
根据文档库中的信息,obdumper
工具确实支持导出表结构和数据,但需要正确配置相关参数以确保表结构也被导出。以下是针对您问题的详细解答:
1. 确认 obdumper
的功能
根据文档(参考:什么是 obdumper ),obdumper
支持以下特性:
导出数据库对象定义(即表结构)。
导出表数据。
支持多种文件格式(如 SQL、CSV 等)。
因此,obdumper
是可以同时导出表结构和数据的。
2. 分析命令问题
您提供的命令如下:
./obdumper -h -P -uroot -p' -Dmhsb_test --sql --all -f /disk_d//back
这里可能存在以下问题:
参数 -h
和 -P
缺少具体的值(例如主机地址和端口号)。
参数 -p
后面缺少密码值(目前仅有一个单引号 '
)。
参数 -f
指定的路径 /disk_d//back
可能不完整或无效。
此外,--sql
参数仅表示导出为 SQL 文件格式,但并未明确指定是否包含表结构。
3. 正确的全量导出命令
如果您希望同时导出表结构和数据,可以参考以下命令:
./obdumper \
--host <主机地址> \
--port <端口号> \
--user root@<租户名> \
--password <密码> \
--database <数据库名> \
--sql \
--all \
--file-path /disk_d/back
其中:
--sql
表示导出为 SQL 文件格式。
--all
表示导出所有表的数据和结构。
--file-path
指定导出文件的存储路径。
4. 验证导出结果
执行上述命令后,请检查导出目录下的文件内容:
表结构 :通常会生成一个包含 DDL(如 CREATE TABLE
)的 SQL 文件。
表数据 :通常会生成多个包含插入语句(如 INSERT INTO
)的 SQL 文件。
如果仍然未包含表结构,请尝试以下步骤:
确保目标数据库中存在表结构。
使用 --sys-user
和 --sys-password
参数连接到 sys
租户,以获取完整的元数据信息(参考:表结构迁移说明 )。
5. 总结
根据文档信息,obdumper
是支持全量导出(包括表结构和数据)的。如果您的导出结果中仅包含数据而无表结构,可能是由于命令参数配置不当或目标数据库中不存在表结构。
建议按照上述命令重新执行导出操作,并检查导出结果是否符合预期。如果问题仍未解决,请提供更多上下文信息(如完整的命令输出日志和目标数据库的状态)。
具体信息可参考以下文档:
使用导数工具进行数据迁移
导出数据
obloader/obdumper
使用 OceanBase 导数工具从 OceanBase 集群 Oracle 租户迁移数据到 MySQL 租户
使用 SQL 命令进行数据迁移
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
ddl和数据需要分两步导出,导出完成后再导入:
导入导出ddl使用 --ddl --all
导入导出数据使用 --csv --table ‘*’
旭辉
2025 年4 月 8 日 15:31
#9
无糖拿铁
2025 年4 月 9 日 10:04
#12
我试了一下, -f output --all --sql --ddl 是可以同时导出 ddl 和 data 的