MySQL替换达梦数据的2种方式实践

概要

做的政务项目,使用的MySQL数据库,做国产化改造,需要使用国产数据库,记录一下整个过程。

整体思路以及实施过程

1.数据库适配
一般有2种方案

2.数据迁移:使用达梦的数据库迁移工具
达梦提供了数数据迁移的工具,适合做数据的迁移,但是不一定完全兼容,例如字段类型,数据非空判断等不一定全部兼容,需要迁移后,做系统的测试
先从官网下载window安装包,解压后可以看迁移工具,下载地址:https://eco.dameng.com/download/
迁移工具使用
包含了表结构迁移和数据迁移
在这里插入图片描述

数据库配置的改动

  • MySQL设置计算精度,默认不保留小数导致原sql出了问题
sp_set_para_value(2,'CALC_AS_DECIMAL',1); 
  • group by 默认必须跟所有的查询字段 select a,b,count(c) as count from tb1 group by a,b ,分组必须更具a,b字段一起,如果要修改,需要修改以下配置
sp_set_para_value(1,'GROUP_OPT_FLAG',1);

实操过程

下载源码编译,源码地址:https://gitee.com/myth20/mysql2dm-spring-boot-starter/tree/master
上传到镜像仓库,加入依赖

### 添加达梦数据库驱动
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>DmJdbcDriver18</artifactId>
    <version>8.1.2.79</version>
</dependency>
### 添加达梦proxy进行语法转换   这里修改了stater版本号为1.0.0
<dependency>
    <groupId>com.myth</groupId>
    <artifactId>mysql2dm-spring-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>

修改数据库配置

datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:  
      # driver-class-name: com.mysql.cj.jdbc.Driver 替换为达梦依赖
      driver-class-name: dm.jdbc.driver.DmDriver
      username: root
      password: abc123
      # 修改为dm链接
      url: jdbc:dm://ip:port/database/rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8

测试结果
会有转换后的语法日志,快速发现转换后存在的问题
在这里插入图片描述

小结

第一种方式,需要全量核对sql语法,缺点是工作量大,第二种相对更便捷的,但是也存在不兼容的语法,语法的转换也存在性能消耗,需要手动去适配,第二中方式也可以用在一些其他中间件的迁移上,例如xxl-job,nacos使用这种方式替换底层使用的数据库(做国产适配的时候);

后面会分享xxl-job,nacos 底层数据库替换源码,提供sql表结构以及源码仓库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值