暂无图片
暂无图片
4
暂无图片
暂无图片
3
暂无图片

​MySQL迁移到Halo-MySQL模式

贾桂权 2024-10-11
318

    经过一年来的从MySQL数据库迁移到Halo数据库的MySQL模式下,从最早的只支持数据类型到支持MySQL的特色语法、存储过程、自定义函数,适配了可视化客户端dbeaver、navicat一路走来。做一个流水帐的记录。

一、迁移工具

从最早的使用ora2halo客户端软件到现在的数据库迁移平台。

1、ora2pg:由perl语言编写的,

    1)优点:

        a.开源免费

        b.迁移速度快

        c.迁移数据准确

    2)缺点:

        a.部署前要perl环境,需要自己编译软件

        b.迁移界面都是命令行模式

        c.迁移时使用的时pg的命令格式

        d.迁移后数据库对象及数据比对需要全程自己手工比对

    后期改进,使用了自动化部署脚本,和自动化迁移

2、数据迁移平台:

    1)优点:

        a.简洁、直观、清爽风格的web操作界面

        b.支持多种数据库迁移

        c.全程实现mysql的语法模式迁移,减少迁移工作中的单独适配   

        d.迁移速度快

        e.迁移数据准确,能够比对迁移后数据及数据库对象

        f.自动化部署

    2)缺点:

        a.比较数据内容相对粒度比较粗

        b.部分功能按钮布局需要改进 

二、迁移过程

    整个迁移过程从数据库对象开始到导入数据,并创建索引及约束,比对迁移对象和数据。

    第一步:数据库对象迁移,首先要先迁移表结构,迁移表结构时候,只迁移所有的表对象,不涉及创建主键、索引及约束。在完成表结构迁移之后,会一次迁移触发器、自定义函数、存储过程和视图。

    第二步:对象迁移完成之后,针对表数据进行迁移导入到halo-mysql里面。

    第三步:数据迁移完后,要进行主键、索引及约束创建。

    第四步:halo-mysql与源库进行数据库对象及数据的比对,数据库对象比对只比对名称个数,数据比对需要比对表的数据量,随机抽样查询部分表的数据字段内容的比对。

    第五步:测试halo-mysql中数据库对象中存储过程及自定义函数的功能验证。

    第六步:修改应用的mysql连接串,只需要修改应用用户密码和IP。         

三、应用测试适配

在应用测试阶段就需要开启数据库日志参数

log_destination = 'csvlog'logging_collector = onlog_min_messages = infolog_min_error_statement = info

同时在测试应用的时候,观察数据库日志的报错      

以下几类主要问题。

1、类型不匹配

    1)导致报错系统函数不存在,例如:错误,42883,"函数 date_format(character varying, unknown) 不存在"

    处理办法,进行函数重载,创建函数参数类型匹配的函数

    2)字段类型不能强转

    例如:在查询中,字段a(varchar) = 1234(int),就会报错,字段类型不一致

    处理办法:创建一个cast

2、语法不支持

    遇到一个查询语句:

select a.id as USERID from user a order by a.USERID;

    会报错ERROR 1054():column a.USERID does not exist。

    这时候需要先去原生mysql库执行,如果成功就需要找到问题点,就表示halo-mysql还不支持这种写法,需要和研发沟通怎么适配。

3、操作符类型不匹配

    遇到报错,42883,"操作符不存在: integer & `text`",,"没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.",,,,"select count(roomId) from nst_t_room where 1=1 and roomCategory=1 and (roomType & '2') > 0"

    处理办法:需要适配操作符      

4、原生驱动不适配的问题

    遇到报错,FATAL,XX000,"The packet sequence number from client is error, except 0 get 3."   

    处理办法,更换驱动,目前遇到mysql8的几个小版本时不支持的。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
5
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论