前言:前段时间接到一个任务,说是数据库要由mysql改成人大金仓,项目代码也需要修改适配(另一个同事负责),而我则是负责数据库的迁移工作,期限是七天(2024-01-26已上线),在这之前我甚至都没听过人大金仓这个名词,而且也没有相关文档的交接更没有技术人员支撑,起初我还让项目负责人去跟集团的DBA协调一下让他们帮迁移,理由1.DBA有迁移经验以及工具 2.项目时间紧任务重(让我这个连人大金仓都没听过的人去做这个事,怕耽误工期),但是事情有时候总是事与愿违,所以最后还得自己来,不然也不会有这篇笔记了。
连人大金仓都没听过的我所以肯定是不会操作的,并且也是经历了百度上众多文章的灌输踩了很多坑,我不想大家有跟我一样的历程,因为这太浪费时间了,特此写下此文章分享经验,话不多说,我们开始主题:
一.迁移准备:mysql数据库、kingbase数据库、迁移工具
kingbase相关手册文档:https://help.kingbase.com.cn/v8/index.html 官网论坛:https://bbs.kingbase.com.cn/topic
kingbase数据库服务(内置了迁移工具)下载地址:https://www.kingbase.com.cn/xzzx/index.htm
下载安装包:
下载授权文件(安装的时候需要),左侧菜单有授权文件的版本差异说明,一般本地调试测试的话下载开发版即可
安装
详细的安装教程自己百度一下哈
二.要迁移到kingbase数据库,首先得创建一个kingbase数据库(切记:先在dev开发环境或者test测试环境操作),如果已经创建了kingbase数据库此步骤省略
1.切换到kingbase服务的目录下(linux安装kingbase数据库服务不在此处介绍,百度一下哈)
2.输入用户名密码登录kingbase客户端,并且指定数据库为test
3.输入创建数据库语句,此时test_bi就创建完成了
4.输入反斜杠+小写的L 查看数据库列表
三.使用人大金仓提供的迁移工具KDTS进行数据迁移
安装完成之后KingbaseESV8下有很多文件,其中也包括一些文档以及工具
启动完成后访问:http://localhost:54523
将前面准备的mysql数据库信息填入源数据库
将准备的kingbase数据库test_bi信息填入目标数据库
问:为什么这里只选择了同步数据,而不是把数据结构、主键、索引、视图、存储过程等一起同步?
答:因为数据类型不支持,比如mysql的datetime类型用这个工具搞不了,存储过程也有一些语法的问题,所以我只选择了同步数据
问:那数据结构以及索引这些怎么搞过去?
答:数据结构等内容我选择了最原始的方式,导出mysql的表结构DDL语句然后修改成kingbase支持的语法格式,然后跑sql脚本建表建索引等,文章最后会有文件下载提供参考
问:为什么创建目标模式要选否?
答:这个跟kingbase数据库关,目前就知道表是要创建在public模式下才能访问,其他的没有深究。
可自行查阅表、模式、数据库之间的关系,或者传送门:https://blog.csdn.net/arthemis_14/article/details/132768929
以上配置完成之后,点击”保存并且迁移“按钮,如果数据迁移失败,则点击详情查看具体信息,大概率是字段类型的问题
文章读到这里你可能会问:那为什么表结构以及存储过程这些用MySQL的导出的DDL去改造适配kingbase,数据也直接导出insert语句直接跑就好了嘛,为什么要需要用KDTS工具呢?
为了防止上线部署迁移出现意外,我做了两手准备:1.使用kdts工具同步生产数据 2.将生产数据导出insert语句的脚本(这种方式有弊端,必须停服进行离线迁移,不能有新增数据导致数据不全),万幸之前了解到本次迁移部署就是离线的,所以就选择了最稳妥的方式-跑脚本
mysql跟kingbase的差异内容以及此次迁移的数据字段类型 汇总在了如下文件链接,供各位大佬参考,如有疑问的可以留言,一起学习
标签:金仓,人大,数据库,MySQL,kingbase,mysql,迁移 From: https://www.cnblogs.com/w-wu/p/17994135