1. 概述
1.1. MySQL 兼容特性
通常,异构数据库移植的工作量繁重。这些工作量主要来源于:在数据类型、SQL 语言、PL/SQL 语言、甚至客户端应用编程接口等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。
同样的,从 MySQL 向 KingbaseES 移植的情况也如此。为降低移植工作量,KingbaseES 在其内部实现了部分的 MySQL 兼容特性。这些特性从语法或功能上对 MySQL 提供了原生支持。因此,在移植过程中,MySQL 程序只需很少甚至不做任何改动就能在 KingbaseES 环境中运行。
此外,对未提供原生支持的 MySQL 功能,KingbaseES 也给出了相应的移植建议。
1.2. 数据类型
数据类型是描述数据库系统底层信息资源模式的常用手段。通常,两个数据库系统数据类型的兼容好坏直接影响移植的难易程度。KingbaseES 对 MySQL 的基本数据类型如数值类型 (整型、浮点型、定点数类型)、文本字符串类型 (CHAR、VARCHAR、TINYTEXT、MEDIUMTEXT、LONGTEXT)、位类型、日期时间类型 (YEAR、TIME、DATE、DATETIME、TIMESTAMP)、枚举类型 ENUM、集合类型 SET、二进制类型 (BINARY、VARBINARY、BLOB)、空间类型 (GEOMETRY、POINT、LINESTRING、POLYGON)、JSON 类型 (JSON 对象、JSON 数组) 可以原生支持,或者通过转换进行支持。
支持 MySQL 所有操作符,以及数据类型转换。
2. 主要移植内容
在实际应用中,一个 MySQL 数据库系统的移植主要包括如下内容。这些内容的迁移是存在先后顺序的。若违反该顺序,则可能导致迁移受阻。
根据迁移构成中业务是否可以停止服务,迁移又分为离线迁移和在线迁移。
2.1. 数据库、用户移植
数据库是各种 SQL 和 PL/SQL 数据库对象的存放容器,而用户是这些对象的管理者和使用者。因此,在迁移数据库对象之前,一般应先迁移数据库、用户。
那么,如何移植这些内容呢?应在目的数据库 KingbaseES 上创建与源数据库 MySQL 同名的数据库、用户。
另外,所创建数据库的字符集应与 MySQL 数据库字符集一致。
2.2. MySQL 数据迁移
支持在线迁移和离线迁移。
使用 KDTS 将 MySQL 离线迁移到 KingbaseES 中。
使用 KFS 支持将 MySQL 在线迁移到 KingbaseES 中。
2.3. 应用程序移植
在完成数据库对象迁移以后,才可开始迁移应用程序,主要原因是:在用程序中,可能会访问和操作前面迁移的数据库对象。
应用程序移植是指对 MySQL API 方式或嵌入式 SQL 方式的应用程序的移植。它主要包括接口驱动程序和连接方法的移植,以及 MySQL 扩展或私有的、且 KingbaseES 未兼容的 API 移植。通常,该项任务的工作量较少。
在实际应用中,通常应用程序移植与移植系统测试与调试交叉进行。
3. 关键移植步骤
作为一个典型的项目过程,MySQL 数据库移植应具有健全的项目团队和全面细致的的项目执行过程。通常,移植一个 MySQL 数据库主要包括以下步骤:
- 确定移植目标
- 评估移植任务
- 组建移植团队
- 准备迁移环境
- 数据库用户迁移
- 数据迁移
- 应用程序迁移
- 测试与调试移植系统
这些步骤指之间的关系是:前四个步骤是迁移前的准备工作,这些准备工作是确保后续 MySQL 移植顺利进行的前提条件,而最后一步是保证最终移植系统正确性和可用性的关键步骤。
4. MySQL 数据库移植实战
4.1. 迁移前准备
迁移前,应获取源数据库 MySQL 服务名及迁移的数据规模信息。
1. 数据库、用户和模式迁移主要包括以下内容:
获取源 MySQL 数据库的 IP 地址、实例名、网络服务端口号、用户名/密码等信息。
在目的 KingbaseES 数据库上,使用 KSQL 工具上执行如下操作:
创建与源 MySQL 用户同名的用户,用户 root。
创建与源 MySQL 同名的数据库,mysql。


