如何将 MySQL 数据库转移到 SQL Server 与 Azure SQL Database

MySQL是相当常用之数据库服务器,而微软云端服务Microsoft Azure上Azure SQL Database是一个功能强大且经济实惠的选择,透过本篇文章,使用SQL Server Migration Assistant ( 以下简称 : SSMA )利用几个简单的步骤,可将您的MySQL数据库移转到 Microsoft SQL Server 或是 Azure SQL Database 上。

SQL Server 移转小帮手

SSMA支持多种架构的数据库(Sybase、Oracle、MySQL)快速移转到Azure SQL Database或Microsoft SQL Server。它将移转数据库的主要步骤;例如 : 结构 (Schema) 转换、SQL 语句转换、数据表格移转等加以自动化,来减少从不同架构的数据库移转至 Azure SQL Database 或 Microsoft SQL Server 的时间和风险。 SSMA 目前提供以下多种版本:

  • 支持Oracle之Microsoft SQL Server移转小帮手(Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for Oracle

  • 支持MySQL之Microsoft SQL Server移转小帮手(Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for MySQL

  • 支持Sybase之Microsoft SQL Server移转小帮手(Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for Sybase

  • 支持Access之Microsoft SQL Server移转小帮手(Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for Access

关于安装步骤,详情请参考: SQL Server Migration Assistant Team's Blog

MySQL 数据库移转到 Microsoft SQL Server 步骤

1. 下载并且安装 Microsoft SQL Server Migration Assistant for MySQL

2. 开启 Microsoft SQL Server Migration Assistant for MySQL

接着点选File来新增一个新的数据库对象(object)。

clip_image002

在新增对象的对话框中,会要求输入对象名称以及要将MySQL数据库移转到哪个版本的Microsoft SQL Server或是Azure SQL Database ( 旧名 SQL Azure )。本范例中我们选择将 MySQL 数据库移转到 Microsoft SQL Server 2008 Express 版。

clip_image004

选取"OK",则新的数据库对象就建立好了。

注意 : 若是您目前的SQL Server版本是旧版本 (例如 : SQL Server 2008),则您数据库对象转移选项不能够高于此版本。

3. 建立 MySQL 数据库联机

选取左上角的"Connect to MySql"

clip_image006

输入MySQL的服务器名称、链接的套接字口、用户名称与密码

clip_image008

注意 :

  • 要链接MySQL的话,还需要安装MySQL-Connector-odbc (版本5.1以上),若先前没有下载的话,在上图页面中会被提醒要下载MySQL ODBC,您可至 https://dev.mysql.com/downloads/connector/odbc/ 下载安装
  • MySQL-Connector-odbc无法连接MySQL 4.0与更旧版本的MySQL

输入完毕之后,点选"Connect"按钮,接着如下图所示。在左上边的 MySQL Metadata Explorer 会显示出我们想要转移的 MySQL 数据库 (world),而在最下方输出列中会显示 SQL Server Migration Assistant 已经成功的连接到 MySQL。

clip_image010

上图右方则是可以让我们设定对映的Type、Schema等移转的选项。

4. 连接 Microsoft SQL Server

选取左上角"Connect to SQL Server"

clip_image012

接着输入SQL Server的服务器名称、目标数据库名称以及用户帐密。

clip_image014

输入完毕之后,会看到以下的警告讯息。

会出现以下原因为SQL Server 2008 Express R2不提供SQL Agent,但是这并不影响移转的结果,这边选择继续。

clip_image016

若您输入的数据库在SQL Server中不存在的话,会有提示告诉您要建立一个。

clip_image018

如同步骤三一样,在最下方工具栏上,可以看到SQL Server Migration Assistant已经成功的连到了目标SQL Server

clip_image020

5. 转换架构 (Convert Schema)

目前SQL Server Migration Assistant已经连接上了MySQL和SQL Server,接着我们要来转换架构,将MySQL数据库中的字段、字段类型、主键(primary key)、外键(foreign key)等结构转换适用到SQL Server。

点选要转换的MySQL数据库,选取上方工具栏的"Convert Schema"。

clip_image022

完成转换后,我们可以看到SQL Server里面已经有与MySQL数据库中相同的Schema。

clip_image024

6. 同步 (Synchronize)

上述步骤已经将MySQL的窗体和Schema转换到SQL Server上。下一个步骤,我们要使用 SSMA 将 SQL Server 与数据库对象做同步。

在SQL Server数据库中,点击鼠标右键,选取"Synchronize with database "

clip_image026

clip_image028

 

在最下方的输出列中可以看到同步已经完成了。

clip_image030

7. 将MySQL 的数据转移到 SQL Server

最后一个步骤就是将MySQL数据库内的所有数据全部转移到SQL Server之中。

选取工具栏上的"Migrate Data"

clip_image032

数据转移结束之后,可以从数据转移报告上看到数据迁移的情况

clip_image034

从下图可以看到数据成功的从MySQL数据库移转到SQL Sever上

clip_image036

MySQL 数据库移转到 Azure SQL Database

将MySQL数据库移转到Azure SQL Database的步骤其实与上面所述相当接近,只有在建立数据库对象与建立联机上有些许的差别。

1. 点选 File来新增一个新的数据库对象 (object)。

clip_image037

与上述有差别的地方就是,在建立对象的对话框中,我们要选取移转的数据库为 ”SQL Azure” ( Azure SQL Database 旧名)

clip_image039

当数据库对象建立完成,并且与MySQL数据库连接 (上述步骤3),此时我们要来建立与目标Azure SQL Database的链接。

2. 首先要先在 Microsoft Azure 上建立一个 Azure SQL Database。

详细的方式请参阅 这里

3. 建立好了 Azure SQL Database 之后,我们进入 Azure 管理页面,并且选择 ”SQL 数据库”

clip_image041

4. 在这项服务中,可以看到订阅帐户中的所有Azure SQL Database。

点选移转目标的数据库后,在仪表板的右下角可以看到Azure SQL Database的服务器名称,这个名称就是在下个步骤中,要建立SSMA与Azure SQL Database联机时,所要输入的服务器名称。

clip_image043

5. 由于在步骤1已经告知 SSMA 要移转的目标为Azure SQL Database,也因此在工具栏选项也与上述不同。

选取”Connect to SQL Azure”

clip_image045

在这里需要输入步骤4的服务器名称、服务器账号密码、目标数据库名称

clip_image047

建立完成之后,在左手边的"SQL Azure Metadata Explorer"窗口可以看到,SSMA已经与您的Azure SQL Database完成联机。

clip_image049

6. 建立完SSMA与Azure SQL Database 的联机之后,剩余的动作包括:转换架构、同步、移转数据等步骤都与上述相同。

下图显示数据已经成功的移转到Azure SQL Database

clip_image051

7. 完成最后一项步骤之后,透过 Microsoft Azure 的管理网站,我们可以直接使用SQL Database Management Portal 来管理数据库,在此之前我们需要先取得存取数据库权限。

进入到Azure SQL Database的管理页面,在最下方工具栏选取管理。

clip_image053

此时会跳出对话框,询问您是否要将您目前的IP地址加至防火墙规则中,选取"是",这样Azure就会自动将您的IP加至规则中,如此才能够进入Azure SQL Database的管理页面。

clip_image055

您也可以透过服务器管理页面,将您所在的IP地址加至允许存取服务器的IP范围中

clip_image057

8. 取得管理权限之后,就可以使用SQL Database Management Portal 进入到数据库内部进行管理。

输入服务器用户名称与密码 (先前在新增步骤时所建立的)

clip_image059

透过Azure SQL Database的管理接口可以看到,MySQL数据库的Schema和数据已经成功的移转到Azure SQL Database上。

clip_image061