文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mysql迁移至KingBase(金仓数据库)避坑指南-Java版

2023-09-11 21:12

关注

        最近因为项目国产化需要,需要将Mysql数据库适配到金仓数据库中,就此给大家分享一下我的采坑过程。如有错误。恳请指正!

一、资源准备

  1. 官网地址 人大金仓-成为世界卓越的数据库产品与服务提供商
  2. 金仓社区 金仓社区-数据库使用者、DBA开发人员、数据化经营者已入驻
  3. 安装包、证书资源下载地址
    1. 人大金仓-成为世界卓越的数据库产品与服务提供商
    2. 安装包根据需要下载。授权文件一定要记得下载不然无法安装(90天试用好像)。接口驱动下载第一个就好了。技术文档建议下全部的。金仓的技术文档还是很全的!
  4. 开发资料
    1. 以下是我下载的资料(PDF-全部文档)
  5. 迁移资料详解
    1. jdbc-x86.zip 驱动,相当于JDBC驱动
    2. 主要关注1、2里面的文档
    3. 安装后得到的工具库 第一个:集群部署工具 第二个:迁移工具  第三个: 开发工具(相当于Navicat)
  6. 其他资源收集
    1. SQL语法转化(SQL迁移利器) http://59.108.228.18:8022/migrate/tools
    2. 社区问答 金仓话题-金仓社区

二、数据库安装

 好啦,资源已经准备好了。现在开始安装。具体安装过程本文并不体现。只附上安装教程和注意事项。

  1. Linux安装
    1. 前置要求:磁盘一定要够,不然安装不上去。笔者本来用虚拟机因为内存不够转到服务器安装了。
    2. 安装教程:KingbaseES 命令行安装数据库 - 技术干货 - 金仓社区
  2. Window安装
    1. 安装教程: KingbaseES iso安装包安装指导说明 - 技术干货 - 金仓社区 基本傻瓜式操作,一步步按需要安装就可以了
  3. 安装注意事项
    1. 磁盘空间一定要够
    2. 如果是Mysql迁移,推荐安装选择Oracle模式并且忽略大小写。同Mysql一致

三、开始迁移

  1. 环境准备
    1. 打开Navicat,准备源数据库,例如 db: test username: root password: mysql
    2. 打开 KStudio.exe,创建目标数据库,例如 db: test username:root password: mysql
    3. 这边需要保证迁移两边的库 数据库名、用户密码均同名(官方建议)
  2. 迁移流程
    1. 打开迁移工具,windows:bat linux:.sh(local host:8080)
    2. 新建源数据库
    3. 新建目标数据库(KES兼容模式如果不是Oracle数据库迁移两个好像都可以随便选,我这里都试过。最后选的是PG)
    4. 新建迁移任务(默认配置就好,我在线程配置中开启了多线程,大概是迁移的时候会更快一点吧)
    5. 迁移完成(我在迁移过程中没有遇到问题,大概迁移了10多分钟)
    6. 修改迁移后的模式
      1. 迁移完成后查看库会发现多了个模式,我们可以将这个模式修改为public模式,到时候查询数据库的时候就能直接通过 select * from 表名 查询数据,否则就是 select * from public.表名
      2. 将public修改为其他名称
      3. 再将新的模式修改为public
    7. 代码集成
      1. 更换驱动为kingbase8-8.6.0.jar(通过内部引入jar包的方式)
      2. 修改配置
        1. 数据源
          spring:  datasource:    driver-class-name: com.kingbase8.Driver    type: com.alibaba.druid.pool.DruidDataSource    url: jdbc:kingbase8://127.0.0.1:54321/phjygf?clientEncoding=UTF-8    username: balabala    password: balabala
        2. mybatis-plus
          @SpringBootConfigurationpublic class MyBatisPlusConfig {    @Bean    public MybatisPlusInterceptor mybatisPlusInterceptor() {        MybatisPlusInterceptor config = new MybatisPlusInterceptor();        config.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));        return config;    }}
        3. pagehelper
          pagehelper:  #  方言 pg or oricle  helper-dialect: postgresql

          到此配置完成,如果可以正常启动,那么接下来就可以做代码层面的适配了.如果遇到相关问题,建议查看下载下来的文档信息

  3. 迁移注意事项
    1. 如果迁移之前需要进行迁移评估,转到 http://59.108.228.18:8022/dashboard?source=bbs&token=eyJhbGciOiJIUzUxMiJ9.eyJpZCI6Mzg3NywiZW1haWwiOiIyOTkzNDQyNzUwQHFxLmNvbSIsInN1YiI6ImxkYiIsImlhdCI6MTY4MTgyMzUyNiwiZXhwIjoxNjgxODMwNzI2fQ.nii_qzCCO64emEOxRV4aODFleEV5ff4BFXJejcaufE_RfqVzjYYzz1fcKYUBGa_fhR94pZiQQX19E8pEp8PDTQ
    2. 如果不熟悉相关流程,详情见官方迁移文档
    3. 迁移后的模式强烈建议修改为public模式
    4. 驱动和方言配置都需要修改

四、代码层面适配遇到的相关问题及其解决方案

  1. date_format函数无效
    1. 原因:不支持该函数
    2. 解决方案: 更换函数 date_format -> to_char
  2. Group by 分组中的字段在查询字段中也需要存在
  3. CONNECT BY clause required in this query block

    1. 原因:查询字段有关键字

    2. 解决方案:在关键字字段上加上""

  4. 将Mysql中的`符号更换为"

  5. 违反约束错误:修改约束或者业务逻辑

  6. year函数报错

    1. 原因:不支持该函数

    2. 解决方案:year(class_times.date)转换为->EXTRACT(YEAR FROM class_times.date)

  7. 操作符不是唯一的: varchar >= pg_catalog.date

    1. 原因:类型不一致

    2. 解决方案:转成相同类型的值然后再进行比较 to_char、to_date详情SQL文档

  8. Hint: 没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换.

    1. 原因: 不支持该函数

    2. 解决方案:更换函数或在业务层实现该功能

  9. 函数 FIND_IN_SET(unknown, varchar) 不存在

    1. 原因: 不支持该函数

    2. 解决方案:更换函数或在业务层实现该功能

  10. IFNULL -》COALESCE(p.valid,0)

  11. GROUP_CONCAT -》array_to_string(array_agg(t.cname),',')

好啦,今天的分享就到这了,希望能帮到需要迁移的小伙伴~

来源地址:https://blog.csdn.net/qq_41634323/article/details/129342466

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯