MySQL 8.4.4 作为 OMS 元数据库的问题

【 使用环境 】 测试环境
【 OB or 其他组件 】


【 使用版本 】
mysql-8.4.4-1.el7.x86_64
oms_4.2.7-ce
oceanbase-all-in-one-4.3.5_20250115.el7.x86_64
influxdb1.8
【问题描述】ERROR 1071 (42000) at line 1595: Specified key was too long; max key length is 3072 bytes

MySQL 8.4.4 作为 OMS 元数据库,此问题如何解决,还是说目前还不支持 MySQL 作为 OMS 的元数据库

【附件及日志】
[root@oms01 ~]# sh ./docker_remote_deploy.sh -o /oms -c /oms/config.yaml -i 192.168.140.103 -d 05f472e4a49e
提示:输入 可退出部署

请选择部署模式:
单地域单节点
单地域多节点
●多地域
您选择的部署模式是:多地域部署模式
请选择您所需要进行的任务:
无配置文件,全新部署 OMS,从生成配置文件开始
●已通过脚本[-c]选项传入参考配置文件,基于参考配置文件开始配置
已加载您的所有配置项,并校验通过。
您的配置如下:
{
“apsara_audit_enable”: “false”,
“apsara_audit_sls_access_key”: “”,
“apsara_audit_sls_access_secret”: “”,
“apsara_audit_sls_endpoint”: “”,
“apsara_audit_sls_ops_site_topic”: “”,
“apsara_audit_sls_user_site_topic”: “”,
“cm_is_default”: true,
“cm_location”: “103”,
“cm_nodes”: [
“192.168.140.103”
],
“cm_region”: “cn-wuhan”,
“cm_region_cn”: “武汉”,
“cm_server_port”: “8088”,
“cm_url”: “http://192.168.140.103:8088”,
“drc_cm_db”: “oms_cm”,
“drc_cm_heartbeat_db”: “oms_cm_hb”,
“drc_rm_db”: “oms_rm”,
“ghana_server_port”: “8090”,
“init_db”: “true”,
“nginx_server_port”: “8089”,
“oms_meta_host”: “192.168.140.100”,
“oms_meta_password”: “Bsoft_2024”,
“oms_meta_port”: “3306”,
“oms_meta_user”: “root”,
“sshd_server_port”: “2023”,
“supervisor_server_port”: “9000”,
“tsdb_enabled”: true,
“tsdb_password”: “admin”,
“tsdb_service”: “INFLUXDB”,
“tsdb_url”: “192.168.140.103:8086”,
“tsdb_username”: “admin”
}

[y/n] 您是否需要重新配置?[n]n
您是需要在当前执行的机器上
接下来 OMS 需要在节点 [‘192.168.140.103’] 上依次执行部署脚本。
请输入节点 192.168.140.103 上预备部署 OMS 的挂载目录:[/oms/]/oms/
请您确认以下内容:
[y/n] 部署 OMS 的 [镜像名/IMAGE-ID] 是:05f472e4a49e ,请确认是否正确。[y]y
[y/n] 是否需要在 OMS 容器中挂载 HTTPS 证书?[n]n
[y/n] 192.168.140.103 节点下的配置文件 config.yaml 将写在这个路径:/oms/ 下可以吗?[y]y

d418be9a1d2f55f91b7149fc102601fe977b0e10902788062bdd2fb672fa8759
[CHECK] Check the validity of config.yaml format.
[PASSED]
[CHECK] Check the version of Docker on the host machine.
Docker version is: 20.10.24.
[PASSED]
[CHECK] Check the synchronization between the MetaDB clock and the machine clock.
[PASSED]
Waiting docker_cmd.sh to finished , supervisor process count : 0


【步骤二】创建 OMS 元信息库


python -m omsflow.scripts.units.oms_init_manager --init-db

/root/omsflow
use config /home/admin/conf/config.yaml

no drop task

no init task

query {‘charset’: ‘utf8’} {‘username’: ‘root’, ‘database’: ‘oms_cm’, ‘host’: ‘192.168.140.100’, ‘password_original’: ‘Bsoft_2024’, ‘drivername’: ‘mysql+pymysql’, ‘query’: {‘charset’: ‘utf8’}, ‘port’: 3306}
2025-03-10 11:55:10,952-Oms-DEBUG units.create_engine_wrapper.70 :create a new sqlalchemy engine wrapped Engine(mysql+pymysql://root:@192.168.140.100:3306/oms_cm?charset=utf8)
query {‘charset’: ‘utf8’} {‘username’: ‘root’, ‘database’: ‘oms_rm’, ‘host’: ‘192.168.140.100’, ‘password_original’: ‘Bsoft_2024’, ‘drivername’: ‘mysql+pymysql’, ‘query’: {‘charset’: ‘utf8’}, ‘port’: 3306}
2025-03-10 11:55:11,122-Oms-DEBUG units.create_engine_wrapper.70 :create a new sqlalchemy engine wrapped Engine(mysql+pymysql://root:
@192.168.140.100:3306/oms_rm?charset=utf8)
query {‘charset’: ‘utf8’} {‘username’: ‘root’, ‘database’: ‘oms_cm_hb’, ‘host’: ‘192.168.140.100’, ‘password_original’: ‘Bsoft_2024’, ‘drivername’: ‘mysql+pymysql’, ‘query’: {‘charset’: ‘utf8’}, ‘port’: 3306}
2025-03-10 11:55:11,328-Oms-DEBUG units.create_engine_wrapper.70 :create a new sqlalchemy engine wrapped Engine(mysql+pymysql://root:@192.168.140.100:3306/oms_cm_hb?charset=utf8)
query {‘charset’: ‘utf8’} {‘username’: ‘root’, ‘database’: ‘oms_rm’, ‘host’: ‘192.168.140.100’, ‘password_original’: ‘Bsoft_2024’, ‘drivername’: ‘mysql+pymysql’, ‘query’: {‘charset’: ‘utf8’}, ‘port’: 3306}
2025-03-10 11:55:11,461-Oms-DEBUG units.create_engine_wrapper.70 :create a new sqlalchemy engine wrapped Engine(mysql+pymysql://root:
@192.168.140.100:3306/oms_rm?charset=utf8)
2025-03-10 11:55:11,500-Oms-DEBUG oms_init_manager._import_sql_file_by_engine.98 :Engine(mysql+pymysql://root:***@192.168.140.100:3306/oms_rm?charset=utf8)
import /root/omsflow/meta_init/drc_rm_schema.sql

mysql -h’192.168.140.100’ -P3306 -u ‘root’ --password=‘Bsoft_2024’ -f -D ‘oms_rm’ < /root/omsflow/meta_init/drc_rm_schema.sql

2025-03-10 11:55:15,072-Oms-DEBUG oms_init_manager._import_sql_file_by_engine.98 :Engine(mysql+pymysql://root:***@192.168.140.100:3306/oms_rm?charset=utf8)
import /root/omsflow/meta_init/drc_rm_data.sql

mysql -h’192.168.140.100’ -P3306 -u ‘root’ --password=‘Bsoft_2024’ -f -D ‘oms_rm’ < /root/omsflow/meta_init/drc_rm_data.sql

2025-03-10 11:55:15,514-Oms-DEBUG oms_init_manager.init_rm.724 :REPLACE INTO user (id, name, password, type, linkman, linkman_cn, reason, product, gmt_modify) VALUES(1, ‘RM_oms’, ‘MjAyNS0wMy0xMA==’, 3, ‘oms’, ‘oms’, ‘oms’, ‘oms’, now());
query {‘charset’: ‘utf8’} {‘username’: ‘root’, ‘database’: ‘oms_cm’, ‘host’: ‘192.168.140.100’, ‘password_original’: ‘Bsoft_2024’, ‘drivername’: ‘mysql+pymysql’, ‘query’: {‘charset’: ‘utf8’}, ‘port’: 3306}
2025-03-10 11:55:15,607-Oms-DEBUG units.create_engine_wrapper.70 :create a new sqlalchemy engine wrapped Engine(mysql+pymysql://root:***@192.168.140.100:3306/oms_cm?charset=utf8)
drc_cm_schema

2025-03-10 11:55:15,627-Oms-DEBUG oms_init_manager._import_sql_file_by_engine.98 :Engine(mysql+pymysql://root:***@192.168.140.100:3306/oms_cm?charset=utf8)
import /root/omsflow/meta_init/drc_cm_schema.sql

mysql -h’192.168.140.100’ -P3306 -u ‘root’ --password=‘Bsoft_2024’ -f -D ‘oms_cm’ < /root/omsflow/meta_init/drc_cm_schema.sql

ERROR 1071 (42000) at line 1595: Specified key was too long; max key length is 3072 bytes
ERROR 1071 (42000) at line 1662: Specified key was too long; max key length is 3072 bytes

drc_cm_data

2025-03-10 11:55:18,225-Oms-DEBUG oms_init_manager._import_sql_file_by_engine.98 :Engine(mysql+pymysql://root:***@192.168.140.100:3306/oms_cm?charset=utf8)
import /root/omsflow/meta_init/drc_cm_data.sql

mysql -h’192.168.140.100’ -P3306 -u ‘root’ --password=‘Bsoft_2024’ -f -D ‘oms_cm’ < /root/omsflow/meta_init/drc_cm_data.sql

2025-03-10 11:55:20,077-Oms-DEBUG oms_init_manager.init_cm.744 :
INSERT INTO resource_group
(name, store_limit, congo_limit, jdbc_writer_limit, metaq_writer_limit, full_check_limit, cpu_limit, cpu_unit,gmt_modified, gmt_create, description, level, creator)
VALUES(‘103’, 50, 50, 50, 0, 50, 50, 1, now(), now(), ‘武汉’, ‘GENERAL’, ‘oms’) ON DUPLICATE KEY UPDATE name = ‘103’;

query {‘charset’: ‘utf8’} {‘username’: ‘root’, ‘database’: ‘oms_cm_hb’, ‘host’: ‘192.168.140.100’, ‘password_original’: ‘Bsoft_2024’, ‘drivername’: ‘mysql+pymysql’, ‘query’: {‘charset’: ‘utf8’}, ‘port’: 3306}
2025-03-10 11:55:20,178-Oms-DEBUG units.create_engine_wrapper.70 :create a new sqlalchemy engine wrapped Engine(mysql+pymysql://root:@192.168.140.100:3306/oms_cm_hb?charset=utf8)
2025-03-10 11:55:20,196-Oms-DEBUG oms_init_manager._import_sql_file_by_engine.98 :Engine(mysql+pymysql://root:
@192.168.140.100:3306/oms_cm_hb?charset=utf8)
import /root/omsflow/meta_init/drc_cm_hb_schema.sql

mysql -h’192.168.140.100’ -P3306 -u ‘root’ --password=‘Bsoft_2024’ -f -D ‘oms_cm_hb’ < /root/omsflow/meta_init/drc_cm_hb_schema.sql

2025-03-10 11:55:20,429-Oms-DEBUG oms_init_manager._import_sql_file_by_engine.98 :Engine(mysql+pymysql://root:***@192.168.140.100:3306/oms_cm_hb?charset=utf8)
import /root/omsflow/meta_init/drc_cm_hb_data.sql

mysql -h’192.168.140.100’ -P3306 -u ‘root’ --password=‘Bsoft_2024’ -f -D ‘oms_cm_hb’ < /root/omsflow/meta_init/drc_cm_hb_data.sql

oms部署起来了吗,这个错误应该不会影响正常部署

可以用mysql做为元数据库的,但是推荐还是使用ob数据库做为OMS的元数据库,启动有什么问题么?

ERROR 1071 (42000) at line 1662: Specified key was too long; max key length is 3072 bytes
如果启用了系统变量innodb_large_prefix,则对于使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引键前缀限制为3072字节。如果禁用innodb_large_prefix,则对于任何行格式的表,索引键前缀限制为767字节。
OMS源端支持MySQL数据库的,建议检查检查源端部分表结构

oms初始化脚本对这种情况做了兼容的,这个报错提示不会有影响

不建议使用MySQL作为OMS元数据库,使用OB少走弯路