lower_case_table_names=0时用OMS进行mysql到oceanbase的数据迁移问题

【 使用环境 】测试环境
【 OB or 其他组件 】社区版OMS v4.2.13,mysql 8.4.4, 社区版oceanbase v4.4.2.1
【 使用版本 】社区版OMS v4.2.13,mysql 8.4.4, 社区版oceanbase v4.4.2.1
【问题描述】
我需要在测试区验证用社区版OMS进行从mysql到社区版oceanbase的迁移过程,版本如上所示。然后迁移前我在手册的使用限制那边看到关于lower_case_table_names=0的使用限制。


我查了下源端mysql8.4.4的这个值是等于0,因此不满足条件。而修改这个值比较麻烦,无法直接修改,只能在初始化这个数据库的时候才能修改。这意味着我需要动到源端mysql的数据,需要停机窗口,不能实现无感迁移。因此想请教以下几个问题:
1、如果要用社区版OMS迁移mysql到社区版ob,是不是只有改lower_case_table_names值为1这条路(意味着要动源端mysql,要停机)。是否有其他规避方案可实现用社区版OMS迁移?
2、我在企业版OMS4.3.3里没有看到lower_case_table_names参数的限制,正好手上也有OMS企业版,请问能否用企业版OMS进行从mysql到社区版oceanbase的数据迁移?
3、除了用OMS外,是否还有其他方法进行数据迁移?比如用mysqldump下来的.sql文件重新导入oceanbase,这是支持的吗?请各位大佬帮忙解答,谢谢!

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

7 个赞

企业版应该是支持 社区版的mysql迁移到obmysql的 mysql8.4.4这个版本 我确认一下 是否支持

4 个赞

支持一下

2 个赞

目前确实不支持mysql 8.4版本 社区版最新版本的下一个版本 应该会支持

1 个赞

1、是的,在社区版 OMS(v4.2.x 及之前)中,这是当前唯一官方支持的、能保证全量+增量一致性的方案;但“必须停机”这一前提不准确——该参数修改通常只需重启 MySQL 实例,而非整套业务系统停机,不需要业务系统整体停机; 仅需重启 MySQL 实例以使 lower_case_table_names=1 生效(修改 my.cnf 后执行 systemctl restart mysqld);此参数必须在初始化 MySQL 实例前设置,否则已创建的表名大小写混合对象无法自动修正;若已是运行中实例,修改后重启即可,不影响已有数据,但新增对象将统一小写
2、 是的,企业版 OMS 4.3.3(及 v4.2.3+)已内置大小写智能归一化能力,无需修改源端 MySQL 参数,且完全支持迁移到社区版 OceanBase
3、 支持,但有严格适用边界。mysqldump 是最常用、最可控的 全量迁移手段不适用于增量场景

1 个赞

OMS 对源端lower_case_table_names=0有强制校验,无法绕过,只能重建 MySQL 实例改参数,需要停机,无其他规避参数。原因是源库大小写混合表名,同步到默认小写 OB 会冲突。
OMS 企业版 4.3.3 没有该限制,可以迁移,但是目标 OceanBase 必须初始化设lower_case_table_names=0开启大小写敏感,否则表名冲突。
mysqldump 导出 sql 导入 OB 是支持的,只能做全量,不支持增量 binlog 同步,同样 OB 需要开启大小写敏感适配源库表名。需要增量无感割接建议直接使用企业版 OMS。

1 个赞

第一次发积分没经验,过期被系统自动采纳了。不好意思。不过你解答的很完整。感谢兄弟

谢谢兄弟的解答。