道家人 发表于 2024-10-9 12:21:26

通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

一、概述

MySQL Workbench 提供了可以将Microsoft SQL Server的表结构和数据迁移到 GreatSQL 的功能,此次将通过MySQL Workbench将SQL Server的数据迁移到GreatSQL。
本文章只是简单演示一下单张表的迁移,如果在项目中利用请根据实际情况进行调整。
二、风险评估

1.数据类型不匹配

两种数据库体系的数据类型可能不完全兼容。在迁移过程中,需要确保数据在不同类型之间的正确转换,否则可能导致数据丢失或不准确。
下表表现了Microsoft SQL Server(源)数据类型和GreatSQL数据类型之间的映射。
Microsoft SQL Server TypeGreatSQL TypeCommentINTINTTINYINTTINYINTUNSIGNED flag set in MySQL.SMALLINTSMALLINTBIGINTBIGINTBITTINYINT(1)FLOATFLOATPrecision value is used for storage size in both.REALFLOATNUMERICDECIMALDECIMALDECIMALMONEYDECIMALSMALLMONEYDECIMALCHARCHAR/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have CHAR columns with a length up to 255 characters. Anything larger is migrated as LONGTEXT.NCHARCHAR/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type.VARCHARVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types.NVARCHARVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type.DATEDATEDATETIMEDATETIMEDATETIME2DATETIMEDate range in MySQL is '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'. Note: fractional second values are only stored as of MySQL Server 5.6.4 and higher.SMALLDATETIMEDATETIMEDATETIMEOFFSETDATETIMETIMETIMETIMESTAMPTIMESTAMPROWVERSIONTIMESTAMPBINARYBINARY/MEDIUMBLOB/LONGBLOBDepending on its length.VARBINARYVARBINARY/MEDIUMBLOB/LONGBLOBDepending on its length.TEXTVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length.NTEXTVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length.IMAGETINYBLOB/MEDIUMBLOB/LONGBLOBDepending on its length.SQL_VARIANTnot migratedThere is not specific support for this data type.TABLEnot migratedThere is not specific support for this data type.HIERARCHYIDnot migratedThere is not specific support for this data type.UNIQUEIDENTIFIERVARCHAR(64)A unique flag set in MySQL. There is not specific support for inserting unique identifier values.SYSNAMEVARCHAR(160)XMLTEXT2.语法和功能差异

SQL Server 和 GreatSQL 在语法、数据类型、函数、存储过程等方面存在肯定的差异。某些在 SQL Server 中利用的语法和功能可能在 GreatSQL 中不支持,或者需要进行修改和调整。
例如,复杂的存储过程、触发器、视图等可能需要重新编写或修改以适应GreatSQL 的语法和规则。
3.应用程序兼容性

如果有依赖于原始数据库的应用程序,迁移后可能需要对应用程序进行修改和测试,以确保其与GreatSQL 数据库正常交互。
4.数据迁移过程中的错

在数据迁移过程中,可能会出现数据丢失、损坏或不一致的情况。需要进行充分的测试和验证,以确保数据的完整性和准确性。
5.性能差异

GreatSQL 和 SQL Server 的性能特点不同。例如,索引的利用、查询优化器的工作方式等可能存在差异。迁移后需要重新评估和优化SQL,以确保在 GreatSQL 环境中获得良好的性能。
三、环境说明

1.源端Microsoft SQL Server

版本IP端口Microsoft SQL Server 2017192.168.140.6014332.目的端GreatSQL

版本IP端口GreatSQL-8.0.32192.168.140.605000四、数据库安装

1.安装Microsoft SQLServer环境

略,参考文档:Datax助力轻松迁移SQLServer数据至GreatSQL
2.安装GreatSQL环境

略,参考文档:二进制包安装 | GreatSQL用户手册
https://greatsql.cn/docs/8.0.32-25/4-install-guide/3-install-with-tarball.html
3.安装MySQL workbench

3.1 下载

下载地点:https://dev.mysql.com/downloads/workbench/
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140153053-1592503431.png
3.2 安装

双击安装,一直点 Next 即可
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140153349-296476918.png
五、Microsoft SQL Server 创建测试数据

1.连接数据库

$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P'xxx'2.创建测试数据

3> CREATE DATABASE test2024;
4> go
5> use test2024
6> go
Changed database context to 'test2024'.
1> CREATE TABLE t1 (id int,name varchar(30))
2> go
1>
2> INSERT INTO t1 VALUES (1,'a'),(2,'b'),(3,'c')
3> go

(3 rows affected)
1> SELECT * FROM t1
2> go
id          name                        
----------- ------------------------------
          1 a                           
          2 b                           
          3 c                           

(3 rows affected)六、配置数据迁移

1.启动迁移功能

双击打开MySQL workbench,点击数据迁移功能,再点击开始迁移按钮
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140153622-1122236723.png
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140153818-844684974.png
2.配置源端/目的端

2.1 源端选择 Microsoft SQL Server

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140154060-151439495.png
需要安装SQL Server驱动:Download Microsoft® SQL Server® 2012 Native Client - QFE from Official Microsoft Download Center
下载完成后,双击安装包点下一步即可
2.2 目的端默以为MySQL

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140154248-1557981163.png
配置完成后,点击 Next
3.获取源端schema列表

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140154433-1217866635.png
点击 Next 即可
4.选择要迁移的schema

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140154618-1018042197.png
保持默认配置即可(3个选项与目的端库表名映射有关),点击 Next
5.逆向工程

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140154788-1760871997.png
这是一个自动化的信息步骤,用于陈诉相干错误、常规日志信息或两者。点击 Next 进行下一步
6.选择迁移对象

可以在下面的列表选择要迁移的对象,默认是迁移第4步中选择的schema下的所有表
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140154956-1293668024.png
选择要迁移的对象,点击 Next
7.迁移

将SQL Server对象 自动转换为MySQL兼容对象,将利用默认数据类型和默认列值映射。
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140155143-1271027965.png
点击下一步即可
8.手动编辑

查看和编辑迁移对象,可以在它们被应用到目的数据库之进步行编辑
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140155375-1339831749.png
Migration Problems: 这将陈诉问题或表现“未找到映射问题”。
All Objects:一个对象视图,用于查看和编辑对象定义。双击一行以修改目的对象的名称。
Column Mappings:表现所有表列映射,并允许您单独查看和修复所有列类型、默认值和其他属性的映射。
9.目的端创建选项

可以选择在目的端数据库创建对象、或者生成创建SQL的脚本文件或两者都可以选择。
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140155559-1837271563.png
点击 Next 进行下一步
10.创建schema

在目的端正式创建对象
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140155755-634324733.png
11.目的端创建效果

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140155928-1812383393.png
这里列出了生成的对象,以及错误消息(如果存在)。
也可以在此处查看和编辑迁移代码。若要进行更改,请选择一个对象,编辑查询SQL语句,然后单击“Apply”。
对每个要编辑的对象重复此过程。最后,单击“Recreate Objects”以保存效果。
12.数据传输设置

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140156116-1880354136.png
Online copy of table data to target RDBMS:此方法(默认)将数据复制到目的端数据库。
Create a batch file to copy the data at another time:数据也可以转储到一个稍后可以执行的文件中,或者用作备份。此脚本利用MySQL连接来传输数据。
Create a shell script to use native server dump and load abilities for fast migration:与执行实时在线复制的简单批处理文件不同,这会生成一个要在源主机上执行的脚本,然后生成一个Zip文件,其中包罗在目的主机上本地迁移数据所需的所有数据和信息。复制并提取目的主机上生成的Zip文件,然后执行导入脚本(在目的主机上),利用LOAD data下令将数据导入MySQL。
13.批量数传输

https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140156326-479795387.png
根据上一步所选的选项,进行数据传输
14.迁移陈诉

数据迁移完成后,会自动生成陈诉,总结了整个迁移过程
https://img2024.cnblogs.com/other/2630741/202410/2630741-20241009140156514-1762292319.png
七、目的端GreatSQL查询数据

登录GreatSQL查询数据
greatsql> SHOW DATABASES;
+--------------------+
| Database         |
+--------------------+
| adm                |
| das                |
| information_schema |
| mysql            |
| performance_schema |
| sys                |
| sys_audit          |
| test2024         |
+--------------------+
8 rows in set (0.00 sec)

greatsql> SELECT * FROM test2024.t1;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
|    3 | c    |
+------+------+
3 rows in set (0.00 sec)总结

MySQL workbench 支持从某些特定 RDBMS产品迁移到GreatSQL(MySQL),更多功能的利用可以登录MySQL官网进行查看。

Enjoy GreatSQL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 通过MySQL Workbench 将 SQL Server 迁移到GreatSQL