学习笔记分享:
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异构数据库转换】工具实现,数据库结构信息的转换(数据部分需要正版授权)
下载软件:
下载并解压【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】
本文分享了一次从SQL Server到MySQL再到TiDB的数据迁移过程。首先使用DbSchema整理SQL Server数据字典,然后借助DB2DB工具迁移数据库结构,最后在TiDB中运行MySQL的SQL脚本来完成数据迁移。过程中遇到的错误信息已记录,迁移成功。

419

被折叠的 条评论
为什么被折叠?



