SQL SERVER 2 My SQL 2 TiDB

本文分享了一次从SQL Server到MySQL再到TiDB的数据迁移过程。首先使用DbSchema整理SQL Server数据字典,然后借助DB2DB工具迁移数据库结构,最后在TiDB中运行MySQL的SQL脚本来完成数据迁移。过程中遇到的错误信息已记录,迁移成功。

学习笔记分享:

SQL SERVER 2 My SQL 2 TiDB

思路介绍

第一步:将目前项目的SQL SERVR 的数据库梳理清除(全部资产增加表和字段的备注,便于导出数据字典,方便开发人员查阅沟通)

工具为【DbSchema】,下载地址:

https://www.jb51.net/database/684260.html

反向工程SQL Server数据库,将【01-采集与管理子系统】和【02-查借阅子系统】所用到的数据表,通过DbSchema的图层管理,生成数据报告:

《01-采集与管理子系统.html》

《02-查借阅子系统.html》


第二步:将SQL Server数据库迁移到MySQL数据库,可以使用【深圳市米软科技有限公司】(http://www.szmesoft.com/),【DB2DB异构数据库转换】实现数据库结构和数据的迁移

个人版

(299.00)

专业版

(399.00)

企业版

(599.00)

学习心得:

好像不注册也能用,数据量不大的情况没有影响,我印象是单表过1000条数据后才有限制,所以空结构或者只有基础初始化的数据时没有影响,后期如果公司项目需要用,直接买一个599的企业版就行了,不贵!


第三步:将迁移后MySQL的数据和机构全部导出成SQL文件,在TiDB里面去运行就可以了,因为TiDB兼容 MySQL 5.7 协议和 MySQL 生态,理论执行MySQL的脚本应该没有问题,需要测试一下


开始实践:

第一步 整理SQL Server的数据字典

略…

操作不难百度看一下【DbSchema】的资料就可以了

第二步 迁移SQL Server数据库到MySQL数据库

在MySQL中新建数据库: PAI_DB 如图:

在:【Navicat Premium】中登录MySQL数据库,右键【新建数据库】

数据库名:PAI_DB

字符集选择:utf8mb4 -- UTF-8 Unicode

排序规则选择:utf8mb4_general_ci


解决方案(1):

使用【DB2DB异构数据库转换】工具实现,数据库结构信息的转换(数据部分需要正版授权)

下载软件:

http://www.szmesoft.com/DB2DB

下载并解压【DB2DB.1.30.107.rar】

双击【OBDB2DB.exe】运行:

源数据选:SQL Server 并填写相关信息(根据事情情况库如,上图仅供参考)

目标数据选:MySQL 并填写相关信息(根据事情情况库如,上图仅供参考),然后:【下一步】

全选【SQL Server中需要迁移到MySQL 的数据表】,然后:【下一步】

如果需要数据且已经注册该软件,可以选择:第一项【同步数据表以及同步数据】,否则选择:第四项【仅同步数据表结构】,然后:【下一步】

这一步不用配置,直接:【下一步】

这一步不用配置,直接:【下一步】

这一步不用配置,直接:【下一步】

这一步不用配置,直接:【下一步】

点一下【检查】按钮,提示:【没有任何错误!】之后,直接:【下一步】

直接:【开始】

摘录错误信息,请研发工程师或数据库管理员(DBA)跟进解决:

错误信息,如下:

2022-12-31 10:39:39
V1.30.107:OPERATEOBJTYPE - Specified key was too long; max key length is 3072 bytes
在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()
在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
在 OBCommon.DataBase.Database.Execute(String sql, Object[] args)
在 OBCommon.DataBase.DataBaseObj.ExecSQL(String SQLStr, Boolean UseTransaction)
在 OBCommon.DataBase.DBTableCreateObj.DoCreateIndex(DataBaseObj DB)
在 OBDB2DB.MainForm.<>c__DisplayClass1_1.f2xa2KcIpl(Int32 i)
2022-12-31 10:39:40
V1.30.107:OPERATETYPE - Specified key was too long; max key length is 3072 bytes
在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()
在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
在 OBCommon.DataBase.Database.Execute(String sql, Object[] args)
在 OBCommon.DataBase.DataBaseObj.ExecSQL(String SQLStr, Boolean UseTransaction)
在 OBCommon.DataBase.DBTableCreateObj.DoCreateIndex(DataBaseObj DB)
在 OBDB2DB.MainForm.<>c__DisplayClass1_1.f2xa2KcIpl(Int32 i)

点击【完成】-> 【结束】,在【Navicat Premium】的My SQL 数据库里面 查看新数据库(PAI_DB),效果如下:

共110张数据表,迁移成功,且查看数据表【catetree】确认数据也同步成功

注意:

上面的2条报错信息尚未处理,暂不确定程序运行是否存在问题,记录问题,待定… …

导出迁移后MySQL的结构和数据,如图:

自定义需要保存的SQL文件名,如:pai_db-MySQL-20221231.sql

运行100%后,提示:[Msg] [Dtf] Finished - Successfully,【关闭】即可,【开始】的话就有一次执行了

第三步 TiDB的安装与数据迁移

一、下载【TiDB】社区版 6.5.0 安装程序

TiDB 社区版

https://cn.pingcap.com/product-community/

TiDB 6.5.0 官网下载

目前支持的版本有:

X86 64-bit 和 ARM 64-bit

最新版本为:6.5.0


下载后的文件:

【TiDB 一键安装离线包】:

tidb-community-server-v6.5.0-linux-amd64.tar.gz ------------------------------------- 1.14GB

tidb-community-server-v6.5.0-linux-arm64.tar.gz -------------------------------------- 1.10GB

【TiDB 工具包】:

tidb-community-toolkit-v6.5.0-linux-amd64.tar.gz ------------------------------------- 1.18GB

tidb-community-toolkit-v6.5.0-linux-arm64.tar.gz -------------------------------------- 1.08GB


说明:
由于TiDB目前仅支持操作系统:Linux,所以要么安装虚拟机去部署,要么安装Docker部署:
为了统一开发与测试环境,我选择使用Docker部署【TiDB】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值