MySQL 至 KingbaseES 数据库迁移最佳实践指南
概述
异构数据库移植往往涉及大量的语法对齐和功能适配,工作量繁重。KingbaseES(人大金仓)为了降低迁移成本,在内部实现了部分 MySQL 兼容特性,使得许多 MySQL 程序无需修改或仅需少量改动即可运行。
MySQL 兼容特性
KingbaseES 对 MySQL 的基本数据类型提供了原生支持或通过转换支持,包括数值类型、文本字符串、位类型、日期时间、枚举、集合、二进制、空间类型及 JSON 类型等。同时,它支持 MySQL 的所有操作符及数据类型转换。
对于未提供原生支持的 MySQL 功能,系统也给出了相应的移植建议。
主要移植内容
一个完整的 MySQL 数据库移植通常包含以下核心环节,且存在先后顺序:
- 数据库与用户移植:作为 SQL 和 PL/SQL 对象的容器,需先在目标库创建同名的数据库和用户,并确保字符集一致。
- 数据迁移:根据业务是否允许停机,选择离线或在线迁移方案。
- 应用程序移植:涉及 API 接口驱动、连接方法及私有扩展的适配,通常与测试调试交叉进行。
关键移植步骤
典型的项目移植过程应包含以下步骤:确定目标、评估任务、组建团队、准备环境、迁移数据库对象、迁移数据、迁移应用以及最后的测试调试。前四步是前提,最后一步是保障。
实战演练
迁移前准备
1. 基础环境配置
获取源 MySQL 服务的 IP、端口、用户名等信息。在 KingbaseES 上执行以下操作:
- 创建与源 MySQL 同名的用户(如 root)。
- 创建与源 MySQL 同名的数据库(如 mysql)。
- 创建同名模式(若通过 KSQL 工具创建用户可省略,但企业管理器创建则不可省略)。
2. 大小写敏感处理
MySQL 默认大小写不敏感,而 KingbaseES 默认敏感。初始化时可调整:
./initdb -D /home/kingbase/Kingbase/ES/V9/data -U SYSTEM --enable-ci
3. 编码方式检查
查询 MySQL 数据库编码并设置 KingbaseES 初始化参数(如 GBK, UNICODE, ASCII):
show variables like 'character_set_database';
4. 数据量评估
查看表数据大小,按从大到小排序(单位 GB):
select table_schema, table_name, table_rows, truncate(data_length/1024/1024, 2), truncate(index_length/1024/1024,2)
from information_schema.tables
table_schema
data_length , index_length ;


