迁移Mysql数据库到Azure上的SQL database

Windows Azure上可以提供多种Database As a service。其中SQL database是由微软提供发布并提供支持的。Azure上的SQL database与传统的SQL server的区别在于,Azure提供了原生的数据库高可用(一主两备)、可在数秒内创建新的数据库实例、可快速进行数据库扩容、支持Federation、提供了全Web化的管理和设计界面、简便的备份恢复等。同时SQL database与已有开发方式和工具基本兼容,应用程序可通过SQL访问数据库,而管理员可以通过SSMS和已有管理工具进行数据库管理。

与此同时,Azure上也提供了Mysql service.该服务是由微软合作伙伴ClearDB提供的。尽管ClearDB也为SQL service提供了高可用性和快速部署的特性,但管理功能较为薄弱。Mysql service不具备Web化的管理界面,只能通过SQL命令进行操作。对于已有Mysql用户来说,把数据库迁移到SQL database上也许是个不错的选择。

要进行Mysql到SQL database的迁移,可以采用SQL server migration assistant to Mysql (SSMA)工具,该工具可以从这里下载http://www.microsoft.com/en-us/download/details.aspx?id=28764。同时,该工具需要使用Mysql for ODBC driver,可以从http://dev.mysql.com/downloads/connector/odbc/ 下载

首次运行SSMA,需要导入license。该工具是一个免费工具,可以在license对话框上点击链接进行license的申请和下载

之后就可以启动SSMA了

迁移Mysql数据库到Azure上的SQL database

要进行迁移,首先要建立一个项目。点击File->New Project. 注意在Migrate to里面选择SQL Azure

然后在Connect to mysql里面输入已有Mysql数据库的连接信息。

迁移Mysql数据库到Azure上的SQL database

接着点击connect to SQL Azure,输入SQL database 的连接信息。如果尚未创建SQL database,可以按照下面的步骤创建一个。

1. 首先要有Azure账号。然后在管理界面里面New->Data services->SQL database->custom create

迁移Mysql数据库到Azure上的SQL database

2. 输入数据库名/大小。要注意这个大小要比Mysql源数据库大。选择新建一个server,输入用户名和密码

迁移Mysql数据库到Azure上的SQL database

3. 创建成功后进入数据库Dashboard,点击右侧的Manage Allowed IP addresses,将本机加入到SQL database的访问列表里

迁移Mysql数据库到Azure上的SQL database

4. 点击Add to allowed IP addresses,然后点页面底部的Save

迁移Mysql数据库到Azure上的SQL database

5. 回到数据库Dashboard,点击页面右侧的Show connection strings,查看数据库连接信息。记录下server名,数据库名,user id

迁移Mysql数据库到Azure上的SQL database

接着就可以回到SSMA继续迁移工作了。在Connect to SQL Azure对话框上填入刚才得到的连接信息,之后即可打开Azure上的数据库。这里的密码是创建SQL database输入的密码

迁移Mysql数据库到Azure上的SQL database

然后mysql和SQL库都在SSMA上打开了

迁移Mysql数据库到Azure上的SQL database

下面开始迁移。首先右键待迁移的Mysql库,点击create report,查看是否有不兼容的项

迁移Mysql数据库到Azure上的SQL database

迁移Mysql数据库到Azure上的SQL database

如果一切顺利,则继续右键待迁移的Mysql库,点击convert schema。该操作将在SQL database侧生成Mysql中的表。成功后可在Sql database中看到同名的数据库,此时该数据库尚未在Azure上创建,SSMA里面看到的只是Metadata。右键该库,点击synchronize with database,此后将真正创建表

迁移Mysql数据库到Azure上的SQL database

迁移Mysql数据库到Azure上的SQL database

成功后可以比对两个库中的表定义

迁移Mysql数据库到Azure上的SQL database

最后一步是导入表内容。在Mysql库上右键点击migrate data,即开始数据同步。之后可以查看同步结果

迁移Mysql数据库到Azure上的SQL database

大功告成。此后,就可以在Azure的应用*问该SQL database了。访问方式可以由SQL database 的Dashboard的connection strings获得

迁移Mysql数据库到Azure上的SQL database