迁移应用数据库到MySQL Database on Azure

by Rong Yu 有用户问怎么把他们应用的数据库迁移到MySQL Database on Azure上,有哪些方式,有没有需要注意的地方。今天我们来概括介绍一下迁移应用数据库到MySQL Database on Azure的方式和需要考虑的事项。 应用的可迁移性 首先您可能会想您的应用是否可以顺利的运行在MySQL Database on Azure上。MySQL Database on Azure兼容MySQL 5.5 和 MySQL 5.6,所以绝大部分应用可以不用做任何改动可以顺利地运行在MySQL Database on Azure上。当然为了更好地在MySQL Database on Azure上运行您的应用,我们建议应用要有数据库重连机制以保证良好的容错性,避免由于数据库短暂连不上的时候应用死掉,因为即使是高可用的云端的数据库也不可避免有故障切换和服务器维护等会导致短暂数据库连不上的情况出现。另外我们也建议尽量采用连接池和长连接来访问数据库,特别是对性能要求比较高的应用,详细可以参考如何高效连接到MySQL Database on Azure。 另外一个需要注意的地方是MySQL Database on Azure不支持老的MYISAM引擎,可以参考这个FAQ,为什么MySQL Database on Azure不支持MYISAM格式的数据库?了解为什么。在大多数情况下,您可以直接在建表的code里把MyISAM数据引擎改成InnoDB就可以了。 基于数据导入导出的迁移 如果您的系统可以接受较长时间(比如一二个小时)因系统迁移导致的downtime,您可以用比较简单的数据库导出和导入的方式进行数据库的迁移。 具体步骤: 登录Azure管理门户,在MySQL Database on Azure上创建一个新的MySQL服务器并进行必要的配置比如每天的备份时间,具体步骤可以参考http://www.windowsazure.cn/documentation/articles/mysql-database-get-started#step1 。 通过Azure管理门户在新创建的MySQL服务器上创建要迁移的目标数据库。具体步骤可以参考http://www.windowsazure.cn/documentation/articles/mysql-database-get-started#step4 。 如果有多个数据库账号需要访问原数据库,您需要通过Azure管理门户在新的数据库服务器上创建对应的账号。 如果数据库比较大(比如超过1GB),我们建议在同一个Azure数据中心准备一台VM这样可以先把数据传输到VM上然后再导入到DB里。 在Azure上完成应用的除了数据库之外的组件的部署(比如website)。 所有准备工作做好后,现在开始迁移。首先建议把应用关停或运行在只读模式(如果支持),这样以避免迁移过程中有新的数据。 从当前数据库服务器导出应用数据库到一个文件。您可以用您熟悉的工具比如mysqldump,workbench,等等。下面是用mysqldump导出数据库的例子: >mysqldump –databases <数据库名> –single-transaction…


MySQL连接问题浅析

MySQL的客户端,无论是PHP或者Java,都会发起多个连接来提高系统的吞吐量。在云里面的服务器,因为一些设计和实现上的不同,有一些问题被放大了,同时也带了一些新的问题。 连接的超时时间 在Azure里面,所有的TCP连接都会通过Azure最外层的网络负载均衡器(SLB),负载均衡器有一个很短的空闲超时,缺省在几分钟。当连接超时的时候,负载均衡器不会通知TCP连接的两端,服务器和客户端都不会得到连接断开的通知。这个行为对许多连接池的实现带来了困扰。所以,对于连接超时时间我们的服务缺省设置为120秒,这个时间确定比负载均衡器的空闲超时要短来避免这个问题。 这个时间同时是对一个查询最长的执行时间。因为在查询的时候是没有网络流量的,负载均衡器会认为这个链接是空闲的。 连接池的使用和大小 我们的服务对于链接的建立做了很多优化,基本上建立一个新连接的时间和在本地的MySQL性能接近,但是新建一个连接的代价仍然是不可忽视的,我们建议使用连接池(JAVA)或者长连接(PHP)。实际代码的例子可以参考http://www.windowsazure.cn/documentation/articles/mysql-database-connection-pool 在使用连接池的时候,建议保持一个比较小的最小连接数,这个数字可以通过观察实际应用的平均压力来确定。 连接池最大的链接数是需要通过对应用程序进行性能压力测试以后决定的。在大多数的情况下,我们服务多个版本(MS1-4)的链接数限制并不是最佳性能的链接数,往往更少的链接数能达到更好的性能。比如MS4的链接数限制是750,但它的最佳的输出性能一般发生在链接数在150-200之间,当然这个值和实际的数据库以及查询有非常大的相关性。


MySQL Database on Azure – 利用PowerShell快速创建使用数据库服务

如果您的应用需要通过脚本快速创建一个或多个MySQL数据库,MySQL Database on Azure目前开放了对于PowerShell的支持,可以帮助您快速利用自动化脚本进行数据库服务的创建、管理等操作。您在Windows Azure管理门户上进行的操作,基本都可以通过PowerShell来执行。 只需以下九个简单步骤,您可以迅速通过脚本创建并使用MySQL。 步骤1:安装配置Azure PowerShell 运行脚本前,您需要安装并运行Azure PowerShell。您可以通过运行Microsft Web平台安装程序下载并安装最新版本Azure PowerShell 。可参阅如何安装和配置Azure PowerShell来了解更多详细步骤。 用于创建和管理MySQL Database on Azure 数据库的cmdlet位于Azure资源管理器模块中。启动Azure PowerShell时,默认情况下将导入Azure模块中的cmdlet。若要切换到Azure资源管理器模块,请使用以下命令转换: Switch-AzureMode -Name AzureResourceManager 步骤2:配置账户信息 在针对Azure订阅运行PowerShell之前,必须先将Azure账户绑定。运行以下命令,在登陆页面输入与Azure管理门户相同的电子邮件和密码,进行身份验证。 Add-AzureAccount -Environment AzureChinaCloud 步骤3:订阅MySQLDatabase on Azure服务 运行以下命令订阅MySQL服务。 Register-AzureProvider -ProviderNamespace “Microsoft.MySql” 步骤4:创建资源组 如果您已有资源组,可以直接创建服务器,或者编辑运行以下命令,创建新的资源组, 用户可自定义资源组的名称,以”resourcegroupChinaEast”为例: New-AzureResourceGroup -Name “resourcegroupChinaEast” -Location “chinaeast” 步骤5:创建服务器 编辑运行以下命令,定义您的服务器名称、位置、版本等信息来完成服务器创建,以下命令以服务器名称”testPSH”为例: New-AzureResource -ResourceType “Microsoft.MySql/servers” -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -Location chinaeast -PropertyObject @{version = ‘5.5’} 注:目前暂不支持通过PowerShell更改SKU, 创建服务器缺省的SKU为”MS2”。如需调整SKU请在Azure管理门户上进行修改。 步骤6:创建服务器防火墙原则 编辑运行以下命令,定义您的防火墙原则名称、IP白名单范围(起始IP地址,终止IP地址)等信息来完成防火墙原则的创建。以防火墙原则名称”rule1”为例: New-AzureResource -ResourceType “Microsoft.MySql/servers/firewallRules” -ResourceName testPSH/rule1 -ApiVersion 2015-09-01 -PropertyObject @{startIpAddress=”0.0.0.0″; endIpAddress=”255.255.255.255″} -ResourceGroupName resourcegroupChinaEast 步骤7:创建数据库 编辑运行以下命令,定义您的数据库名称、字符集等信息完成数据库创建。以数据库名称”demodb”为例: New-AzureResource -ResourceType “Microsoft.MySql/servers/databases” -ResourceName testPSH/demodb -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{collation=’utf8_general_ci’; charset=’utf8′} 步骤8:创建用户 编辑运行以下命令,定义您的用户名、密码等信息完成数据库创建。以用户名”admin”为例: New-AzureResource -ResourceType “Microsoft.MySql/servers/users” -ResourceName testPSH/admin -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{password=’abc123′} 步骤9:添加用户权限 编辑运行以下命令,设置数据库读写权限给用户。权限分为”Read”以及”ReadWrite”。以用户名”admin”为例: New-AzureResource -ResourceType “Microsoft.MySql/servers/databases/privileges” -ResourceName testPSH/demodb/admin -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{level=’ReadWrite’} 通过上述操作,您已经完成了服务器、数据库、用户、防火墙原则等的创建工作,可以开始使用MySQL Database on Azure的数据库服务。详细的文档可以查看利用Azure资源管理器与PowerShell来部署使用MySQL Database…


Windows Azure® 由世纪互联运营发布MySQL Database on Azure正式商用版

我们很高兴宣布MySQL Database on Azure于2015年9月1日在中国地区正式商用。回望过去,从2014年12月对少量用户开放的预览试用,到2015年4月30日对中国用户全面开放的公共预览,再到9月1日在中国地区正式商用。在这9个月时间,MySQL Database on Azure团队花了很多时间在完善功能,在稳定性、性能上面都有很大的提升,获得了用户的一致认可。在接下去几个月,我们团队会陆续推出更多的功能,为用户带来更多增值功能和更高性能的体验。 MySQL Database on Azure 帮助您在云端快速部署MySQL数据库,提供高可用性和全托管的体验,无需人工维护基础架构,让您更专注于产品的创新开发。我们的正式商用版提供99.9%的运行时间服务级别协议,用户可以更放心地使用。目前,已经有超过二百个(含企业用户)正在使用MySQL Database on Azure服务。很开心,我们的产品能够被用户接受、信赖,真真切切的帮助用户创造商业价值。 特性优点: MySQL Database on Azure提供的产品特色有: 基于Azure存储提供数据本地异地多重备份,保障数据高度可靠,支持99.9%的运行时间服务级别协议,支持异地灾备恢复。 提供防火墙功能并支持SSL链接访问数据库,保证数据高度安全。 支持30天数据备份,帮助您轻松进行数据回溯。 提供多个不同性能层级的版本,支持弹性扩展与收缩,简化购买体验。 提供各项数据库性能指标的监控以及日志,让您轻松方便的了解数据库运行情况。 兼容MySQL 协议(目前支持MySQL 5.5和5.6),您可以用熟悉的MySQL平台与技术进行开发和集成。 支持数据从企业本地的MySQL数据库同步到 MySQL Database on Azure, 更好的满足企业构建混合云的需求。 有关MySQL Database on Azure服务的详细信息,请访问MySQL Database on Azure网页。  快速入门: 以下我们将介绍部署,配置,监控和异地数据库同步MySQL实例的实战经验。 快速部署 通过Windows Azure管理门户,用户可以快速创建MySQL服务器,部署时间仅需1-2分钟。我们的服务保证您的数据库服务器的高可用性,提供自动软件修补功能,让您无需对数据库服务进行任何基础架构的维护。 弹性伸缩 您也再无需反复计算数据库服务器端的配置需求,MySQL Database on Azure 服务提供了多个不同性能的版本,您可以根据当前的性能需求选择一个相匹配的版本,后续再根据应用的实际运行情况进行弹性扩展或收缩。我们的服务按小时计费,账单透明,帮助您更有效的利用资源。 灵活配置 MySQL Database…

2