MySQL 迁移金仓要适配什么
金仓数据库属于 PostgreSQL 技术体系,从 MySQL 迁移的主要差异集中在语法与语义层:标识符的引号符号与大小写折叠规则不同、自增列要改造成序列或 identity、布尔与日期类型的处理方式不同、分页语法从 LIMIT 风格变为标准兼容写法;应用侧的连接驱动与连接串也必须同步替换。只换数据库不换驱动,是迁移中最典型的半截工程。
基本信息
| 常见监听端口 | 默认实例端口 54321,以实际配置为准 |
|---|---|
| 命令行工具 | ksql,参数含 -U 用户、-p 端口、-d 数据库 |
| 初始管理员 | system,权限与普通业务账号不同 |
| 自增改造 | 使用序列或 identity 列替代 AUTO_INCREMENT |
| 应用侧 | JDBC 驱动类与连接串同步替换 |
典型使用场景
- 存量 MySQL 业务迁移到金仓,先梳理 SQL 中不兼容的语法清单
- 表结构改造:自增主键、字符集与排序规则、类型长度统一规划
- 应用连接层改造:替换驱动与连接串,核对事务与隔离级别设置
- 迁移后回归测试:重点覆盖分页、聚集、日期时间与大小写敏感查询
- 排查中文排序异常:确认目标库编码与排序规则配置
- 性能对比:同一批查询在两侧执行,确认索引使用情况符合预期
常见差异处理
常见差异处理
# 自增:MySQL AUTO_INCREMENT → 金仓序列或 identity
# CREATE TABLE t (id bigserial PRIMARY KEY, name text);
# 分页:使用标准写法,注意 OFFSET 与 LIMIT 的顺序
# SELECT * FROM t ORDER BY id LIMIT 10 OFFSET 20;
# 反引号换双引号或直接不加引号(未加引号会按小写折叠)
# SELECT "name" FROM t;
# 连接与验证
./ksql -U system -p 54321 -d test -c '\dt' # 列出表
./ksql -U system -p 54321 -d test -c 'SELECT count(*) FROM t;' # 核对行数
./ksql -U system -p 54321 -d test -c 'SELECT version();' # 确认版本MySQL 与金仓差异对照
| 主题 | MySQL 习惯写法 | 金仓侧处理 |
|---|---|---|
| 标识符引号 | 反引号包名 | 双引号或不加引号 |
| 大小写 | 表名大小写依赖系统设置 | 未加引号按小写折叠,需回归验证 |
| 自增主键 | AUTO_INCREMENT | 序列或 identity 列 |
| 分页 | LIMIT 数值, 偏移 | LIMIT 与 OFFSET 标准写法 |
| 布尔与日期 | tinyint 表示布尔 | 使用布尔类型或明确的数值类型 |
字符集与排序规则影响中文排序与比较结果,应在迁移前统一规划,而不是迁移后逐个业务调整;上线前准备中文排序的回归用例更容易发现配置问题。
只换数据库不换驱动与连接串是半截工程:应用仍使用 MySQL 协议与驱动时连接会直接失败,改造清单里必须包含应用侧的驱动版本与连接参数。