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)。
在新增对象的对话框中,会要求输入对象名称以及要将MySQL数据库移转到哪个版本的Microsoft SQL Server或是Azure SQL Database ( 旧名 SQL Azure )。本范例中我们选择将 MySQL 数据库移转到 Microsoft SQL Server 2008 Express 版。
选取"OK",则新的数据库对象就建立好了。
注意 : 若是您目前的SQL Server版本是旧版本 (例如 : SQL Server 2008),则您数据库对象转移选项不能够高于此版本。
3. 建立 MySQL 数据库联机
选取左上角的"Connect to MySql"
输入MySQL的服务器名称、链接的套接字口、用户名称与密码
注意 :
- 要链接MySQL的话,还需要安装MySQL-Connector-odbc (版本5.1以上),若先前没有下载的话,在上图页面中会被提醒要下载MySQL ODBC,您可至http://dev.mysql.com/downloads/connector/odbc/下载安装
- MySQL-Connector-odbc无法连接MySQL 4.0与更旧版本的MySQL
输入完毕之后,点选"Connect"按钮,接着如下图所示。在左上边的 MySQL Metadata Explorer 会显示出我们想要转移的 MySQL 数据库 (world),而在最下方输出列中会显示 SQL Server Migration Assistant 已经成功的连接到 MySQL。
上图右方则是可以让我们设定对映的Type、Schema等移转的选项。
4. 连接 Microsoft SQL Server。
选取左上角"Connect to SQL Server"
接着输入SQL Server的服务器名称、目标数据库名称以及用户帐密。
输入完毕之后,会看到以下的警告讯息。
会出现以下原因为SQL Server 2008 Express R2不提供SQL Agent,但是这并不影响移转的结果,这边选择继续。
若您输入的数据库在SQL Server中不存在的话,会有提示告诉您要建立一个。
如同步骤三一样,在最下方工具栏上,可以看到SQL Server Migration Assistant已经成功的连到了目标SQL Server
5. 转换架构(Convert Schema)
目前SQL Server Migration Assistant已经连接上了MySQL和SQL Server,接着我们要来转换架构,将MySQL数据库中的字段、字段类型、主键(primary key)、外键(foreign key)等结构转换适用到SQL Server。
点选要转换的MySQL数据库,选取上方工具栏的"Convert Schema"。
完成转换后,我们可以看到SQL Server里面已经有与MySQL数据库中相同的Schema。
6. 同步 (Synchronize)
上述步骤已经将MySQL的窗体和Schema转换到SQL Server上。下一个步骤,我们要使用 SSMA 将 SQL Server 与数据库对象做同步。
在SQL Server数据库中,点击鼠标右键,选取"Synchronize with database "
在最下方的输出列中可以看到同步已经完成了。
7. 将MySQL 的数据转移到 SQL Server
最后一个步骤就是将MySQL数据库内的所有数据全部转移到SQL Server之中。
选取工具栏上的"Migrate Data"
数据转移结束之后,可以从数据转移报告上看到数据迁移的情况
从下图可以看到数据成功的从MySQL数据库移转到SQL Sever上
将 MySQL 数据库移转到 Azure SQL Database
将MySQL数据库移转到Azure SQL Database的步骤其实与上面所述相当接近,只有在建立数据库对象与建立联机上有些许的差别。
1. 点选 File来新增一个新的数据库对象 (object)。
与上述有差别的地方就是,在建立对象的对话框中,我们要选取移转的数据库为”SQL Azure” ( Azure SQL Database 旧名)
当数据库对象建立完成,并且与MySQL数据库连接 (上述步骤3),此时我们要来建立与目标Azure SQL Database的链接。
2. 首先要先在 Microsoft Azure上建立一个 Azure SQL Database。
详细的方式请参阅这里
3. 建立好了 Azure SQL Database 之后,我们进入 Azure 管理页面,并且选择 ”SQL 数据库”
4. 在这项服务中,可以看到订阅帐户中的所有Azure SQL Database。
点选移转目标的数据库后,在仪表板的右下角可以看到Azure SQL Database的服务器名称,这个名称就是在下个步骤中,要建立SSMA与Azure SQL Database联机时,所要输入的服务器名称。
5. 由于在步骤1已经告知 SSMA 要移转的目标为Azure SQL Database,也因此在工具栏选项也与上述不同。
选取”Connect to SQL Azure”
在这里需要输入步骤4的服务器名称、服务器账号密码、目标数据库名称
建立完成之后,在左手边的"SQL Azure Metadata Explorer"窗口可以看到,SSMA已经与您的Azure SQL Database完成联机。
6. 建立完SSMA与Azure SQL Database 的联机之后,剩余的动作包括:转换架构、同步、移转数据等步骤都与上述相同。
下图显示数据已经成功的移转到Azure SQL Database
7. 完成最后一项步骤之后,透过 Microsoft Azure 的管理网站,我们可以直接使用SQL Database Management Portal 来管理数据库,在此之前我们需要先取得存取数据库权限。
进入到Azure SQL Database的管理页面,在最下方工具栏选取管理。
此时会跳出对话框,询问您是否要将您目前的IP地址加至防火墙规则中,选取"是",这样Azure就会自动将您的IP加至规则中,如此才能够进入Azure SQL Database的管理页面。
您也可以透过服务器管理页面,将您所在的IP地址加至允许存取服务器的IP范围中
8. 取得管理权限之后,就可以使用SQL Database Management Portal 进入到数据库内部进行管理。
输入服务器用户名称与密码 (先前在新增步骤时所建立的)
透过Azure SQL Database的管理接口可以看到,MySQL数据库的Schema和数据已经成功的移转到Azure SQL Database上。