服务咨询

数据备份占用存储限额吗?

数据备份不会占用您存储限额。

一个服务器是否限制数据库的数量?

在一个MySQL服务器中,用户可创建多个数据库,数量上没有限制,但是多个数据库会共享服务器资源,如数据库数量较多,性能需求较高,建议创建多个MySQL服务器。

MySQL Database on Azure目前有哪些限制?

了解更多MySQL Database on Azure服务限制

为什么MySQL Database on Azure不支持MYISAM格式的数据库?

产品研发团队在多次研究和分析以后,做出了不支持的决定。考虑的因素主要有以下几点:

  1. MYISAM对数据完整性的保护存在缺陷,而这些缺陷会导致数据库数据的损坏甚至丢失。并且这些缺陷由于很多是设计的问题,无法在不破坏兼容性的前提下修复。
  2. MYISAM对于I/O的操作对于Azure的存储不是最优化的方案,导致MYISAM的性能相对于InnoDB优势不大。
  3. MYISAM在出现数据损害情况下,需要很多手工修复,无法适应一个PaaS服务的运营方式。
  4. MYISAM向InnoDB的迁移代价不大,大多数应用仅需要改动建表的代码。
  5. MySQL的发展也是在向InnoDB转移,在最新的5.7中MySQL可以完全不是MyISAM,系统的数据库也被转移到了InnoDB。

为什么新建的空的数据库服务器默认大小为530M? 为什么数据库显示使用存储空间大于实际使用的存储空间?

出于性能考虑,我们为新创建的数据库实例配置使用两个256M的日志文件。因此您在管理门户中看到的存储空间使用统计包括了日志文件的大小。但是日志文件大小在使用过程中不会改变。

MYSQL Database on Azure 是否支持用户通过命令行设置权限

支持,虽然我们的管理门户 以及PowerShell 命令行在创建用户或数据库时只支持对整个数据库设置读写权限,但你可以用“grant”命令对用户权限进行更细化的设置。

MySQL Database on Azure 现在使用什么系统时间? 如何变更?

MySQL on Azure目前默认采用UTC 协调世界时作为系统时间System, 用户可以通过在管理门户上或PowerShell等途径配置补偿值(offsite)来进行时间更新。具体配置方法请参考:MySQL on Azure上的时区更改.

MySQL 5.7 都提供哪些功能?这些功能是否我在MySQL Database on Azure上都可以使用?

MySQL on Azure 全面兼容MySQL社区版本,关于5.7的新功能,请参考MySQL 5.7 Release Notes了解更多。MySQL on Azure兼容上述绝大功能的更新,但下述功能尚不支持:

  • 暂不支持5.7中关于Replication功能的改进 (由于MySQL on Azure的主从同步复制功能并未直接采用MySQL Replication技术,而是在其基础上针对MySQL on Azure服务进行了一定的改良)。
  • 暂不支持5.7中关于InnoDB Buffer Pool Online Resize的功能。
  • 暂不支持Query Rewrite Plugin。
  • 暂不支持InnoDB Transparent Page Level Compression
  • 暂不支持password expiration

如何在管理门户上创建MySQL 5.7的实例?

在管理门户上点击左下角“”新建“”,选择MySQL Database on Azure,进行快速创建,在MySQL 版本中选择5.7。 MySQL57创建

我已经有MySQL on Azure的数据库实例,但是5.5 或5.6 版本,我应该如何升级到5.7?

建议您在升级前了解5.7版本的改动,测试完应用端以及数据库兼容性后再进行版本升级。如果您是生产环境,建议在业务量较低时段对数据库进行升级,步骤如下:

Step 1. (可选) 如果您担心升级后兼容性问题对生产环境产生影响,可以利用数据库恢复功能将当前数据库恢复到新的实例,具体恢复方式参见MySQL Database on Azure备份和恢复。推荐使用立即备份功能对当前数据库服务器进行快照,再对该快照在另一全新实例上进行恢复。

Step 2. 将当前数据库服务器数据导出: 您可以使用MySQL 管理工具,如MySQL Workbench,或MySQL utility: mysqldump 对当前数据库服务器进行数据库导出:mysqldump --databases <数据库名> --single-transaction --order-by-primary -r <备份文件名> --routines -h<服务器地址> -P<端口号> –u<用户名> -p<密码> .

Step 3. 在管理门户上,创建5.7实例并创建账户: 在管理门户上点击左下角“”新建“”,选择MySQL Database on Azure,进行快速创建,在MySQL 版本中选择5.7。并将原数据库实例中的账户,通过管理门户进行创建。

Step 4. 将数据导入到5.7实例 可以使用MySQL 常用管理工具Workbench 或者使用SQL语句: source <备份文件名>; 进行数据导入。 完成上述步骤后,您可以将应用层的连接字符串切换到新的服务器开始使用。

注意: 考虑到兼容性,建议不要进行跨版本升级,如果您使用的实例是5.5 版本,请先按照此方法升级到5.6。再将5.6实例升级到5.7。

我应该如何将MP服务层(MP1或MP2)降级到MS服务层(MS1 - MS6)?

由于MP服务层采用不同于MS服务层的存储架构,目前MySQL Database on Azure暂不支持直接从MP降级至MS。如果您确实需要执行此类降级操作,可以通过首先创建从属实例,然后将其提升为主实例的方式实现。具体步骤如下所示(以MP1降级至MS6为例,其它服务层的降级操作与此类似)。

本例所涉及的各项资源名称如下表所示:

资源项目 MP1 MS6
资源组 Default-MySQL-ChinaEast Default-MySQL-ChinaEast
服务器 mysqldemoserver mysqlmsserver
位置 ChinaEast ChinaEast
测试数据库 replicadb replicadb

步骤1 确保MP1实例至少存在一个完全备份,且备份的状态为“Ready”。根据设置的不同,有时需等待一天。

Daily backup ready

步骤2 运行PowerShell命令,创建MS6从属实例(只读实例)。

New-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName mysqlmsserver -ApiVersion 2015-09-01 -ResourceGroupName Default-MySql-ChinaEast -Location ChinaEast -SkuObject @{name='MS6'} -Properties @{replicationMode='AzureSlave'; creationSource=@{server='mysqldemoserver';region='chinaEast'}; version = '5.6';}

步骤3 等待一段时间,使从属实例(MS6)与主实例(MP1)之间的延迟足够低(比如60秒以内),然后暂停客户端程序对MP1主实例的一切写操作。

Replica latency

步骤4 在MP1主实例上创建replicadb数据库,并等待该测试数据库同步至MS6从属实例。此时两个实例上的数据完全同步。

Replica database synced

步骤5 将MS6从属实例提升为主实例。(参考:提升从属实例

最后,您可以修改客户端程序的连接字符串(Connection String),使其指向新的MS6实例,然后删除MP1实例。

备注

某些情况下可能不方便对客户端程序的连接字符串进行修改。针对这种情况,我们同样给出了无需修改连接字符串的步骤供您参考。下面两个额外的步骤无需修改客户端程序的连接字符串,但可能造成上层应用的短暂宕机时间(通常为几分钟)。

步骤6 创建MS6实例的手动即时备份。(参考:MySQL Database on Azure备份和恢复

步骤7 删除MP1实例,然后将步骤6中创建的手动即时备份恢复至名称与原MP1一致的MS6新实例(本例中为mysqldemoserver)。

最后,删除MS6临时实例mysqlmsserver,并恢复客户端程序对该MS6实例的正常读写操作。