封面图:https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/announcing-flexible-server-for-azure-database-for-mysql/ba-p/1686617

本文主要参考了 Azure 官方文档:https://learn.microsoft.com/zh-cn/azure/mysql/flexible-server/quickstart-create-server-portal

Azure 还有其他云数据库可供免费使用

先决条件

  • 一个有效的 Azure 国际版订阅,不是国内特供的世纪互联版
  • 还在免费期内。(要不然你就得自己花钱了)

创建

入口:https://portal.azure.com/#create/Microsoft.MySQLFlexibleServer

定价:https://azure.microsoft.com/zh-cn/pricing/details/postgresql/flexible-server/

可用区域及可用特性列表:https://learn.microsoft.com/zh-cn/azure/mysql/flexible-server/overview#azure-regions

基本

  1. 强烈建议新建资源组,不要放到已有的资源组里,以防不小心被删掉。
  2. 起个名字。
  3. 区域选择与你业务(比如说我的 WordPress 网站)服务器最接近的地域。Azure 机房延时:https://www.azurespeed.com/Azure/Latency
  4. 点击进入服务器配置页面。
  5. 选择 B1ms 才是免费,不要选错成 B1s。
  6. 存储选 32GB。免费备份的空间和主存储空间大小一致,也即是 32G。
  7. IOPS 选择预配最低的 396
  8. 关闭存储自动增长。
  9. 存储天数连同你的数据库大小决定了会使用多少备份空间。Azure 自动每天备份一次,比如你的数据库总大小是 1 G,保留10 天,那么估计最大占用 10G 备份空间。因为我的 WordPress 数据库不大(目前才几个 MB),所以直接拉满。如果你的业务数据库很大,拉太长时间会导致总备份大小超出免费备份空间,从而收费,因此务必仔细评估。
  10. 异地冗余(GRS)开启后,会额外复制一份备份到另一个大区(东亚大区会复制到东南亚大区),以防主数据中心遭到天灾,因此备份会占用双倍的备份空间。同样因为我的 WordPress 数据库不大所以直接开。GRS 的区域对见:https://learn.microsoft.com/zh-cn/azure/reliability/cross-region-replication-azure#azure-cross-region-replication-pairings-for-all-geographies
  11. 保存。
  12. 可用性区域是指:比如一个东亚大区(香港),这个大区下属三个子区,每个子区相隔一定距离,这里的每个子区就叫做可用性区域(每个可用性区域是一个独立的数据中心或者包含几个数据中心,而不是一个数据中心划分出三个区域),微软这样设置是为了防止一把火把整个大区烧掉,但又不至于相隔太远导致业务之间的延迟太高。如果你在使用 Azure 的 VM,且 VM 选择了可用性区域(比如东亚大区的 Zone 1 子区),那么数据库也选择东亚大区的 Zone 1 子区就可以确保在同一个机房里做到最低的延迟;而如果不选就是随机分配,就有可能分到同一大区的不同机房(微软表示子区之间延迟在 2 毫秒内)。我这里选无首选项,因为免费帐户 VM 只能用动态 IP,而动态 IP 没法选可用性区域(下图),所以数据库选可用性区域也没有意义。
VM 动态 IP 不能选可用性区域
  1. 新建数据库的管理员账号密码。
  2. 下一步。

网络

添加防火墙规则,把业务服务器的公网IP 填进去(开始结束都是同一个)。本文不涉及更为安全的“专用访问(VNet 集成)”连接方式。

“添加当前客户端 IP 地址” 本意是把正在创建的本机添加进去,方便从你的个人电脑连接,但是国内绝大部分个人用户都在大号局域网内没有公网IP,而这个网页获得的公网IP是变动的。如果你有公网IP倒也可以添加。

至于“添加 0.0.0.0 - 255.255.255.255”,意味着所有人都能访问你的服务器。虽然这可以让没有公网IP或者动态公网IP的国内个人电脑访问,但是风险很高,非常不建议。

之后直接创建。部署大约需要 3-5 分钟,明显比开 VM 要久很多。

使用“服务器名称”连接服务器

服务器参数设置

按照以下步骤修改服务器参数:

对于 WordPress 来说,需要修改以下参数:

  • require_secure_transport - OFF 。WordPress 开启安全传输有点麻烦。
  • sql_mode - 关掉 NO_ZERO_DATENO_ZERO_IN_DATE,这两个会导致 WordPress 导出的的数据表导不进去。

记得保存

查看指标

使用一段时间后,可以在“指标”中查看数据。指标的各项含义见:https://learn.microsoft.com/zh-cn/azure/mysql/flexible-server/concepts-monitoring#list-of-metrics

使用 phpmyadmin 远程访问数据库

在控制端的电脑/服务器安装 phpmyadmin (记得添加 IP 到允许访问数据库服务器的列表中)。我这里使用宝塔面板安装。

然后 bash 搜索配置文件:

sudo find / -name config.inc.php

就会显示 config.inc.php 的路劲。在宝塔面板中打开,在 localhost 的记录下面添加:

$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '<服务器名称>';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

之后打开 phpmyadmin 的时候就可以下拉选择远程服务器了。