迁移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)工具,该工具可以从这里下载https://www.microsoft.com/en-us/download/details.aspx?id=28764。同时,该工具需要使用Mysql for ODBC driver,可以从https://dev.mysql.com/downloads/connector/odbc/下载

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

之后就可以启动SSMA了

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本文转载自:https://blog.csdn.net/shaunfang/article/details/8557773