Azure 中的 MySQL 和 PostgreSQL 数据库服务
如果你拥有功能性的本地数据库,为什么还要考虑将其迁移到 Azure 等云服务中? 同样,为什么要考虑在 Azure 中实现新的数据库系统? 许多组织之所以进行这种迁移,是因为与使用本地数据中心相比,在云中创建高度可用和可缩放的服务既简单又相对便宜。
对于你的初创公司来说,目前在 MySQL 和 PostgreSQL 上运行的是任务关键型数据库,但受限于数据中心和管理团队的规模。 你希望弄清楚是否可以使用 Azure 服务解决这些限制,如果可以,哪些服务最符合你的需求。
在这里,你将了解 Azure Database for MySQL、Azure Database for MariaDB 和 Azure Database for PostgreSQL 以及可在其中使用的部署选项。 你还将了解在 Azure 中的虚拟机或容器上运行开源数据库的优势,以及基础结构即服务 (IaaS) 方法。
可用性
Azure 服务级别协议 (SLA) 保证的可用性取决于实现的确切细节(不过通常都很高)。 例如,对于 Azure Database for PostgreSQL,Microsoft 保证 99.99% 的可用性,且无需额外付费。 为了实现更高的可用性,可以使用灵活服务器。
如果想要在本地网络中实现此可用性,则必须构建一个能在硬件故障后复原的系统。 你需要:
- 多个物理服务器。
- 一个负载均衡器,用于在服务器发生故障时,对查询进行重新路由。
- 存储区域网络,用于在服务器之间共享数据,或者在服务器之前复制数据。
- 可复原网络硬件。
- 环境可控的数据中心。
- 不间断电源和备用发电机。
所有这些组件都非常昂贵,并且需要具备相应的知识技能才能实现和运行。 它们还会消耗大量的管理资源。 使用 Azure 就可以满足这些要求了;你只需负责创建数据库,高可用性早已具备。
伸缩性
如果用户群增长,系统需求就会随之增长。 每个本地系统都有一个最大容量,如果接近该限制,就必须通过添加更多的硬件扩容。 扩容无法立即完成。 相反,必须购买硬件、安装所需的操作系统和软件、应用更新,然后将数据添加到新的数据库实例。 所有这一切都需要时间。
另请记住,高需求通常是暂时性的。 例如,如果你举办了一个成功的营销活动,可能会看到一个流量高峰,然后又回到较低的需求。 在本地设置中,必须为这些高峰设计系统。 这意味着系统在大部分时间都未得到充分利用,但仍然会产生费用并需要维护。
这些问题在云中更容易克服。 如果系统达到其容量限制,你可以非常迅速地做出响应,例如,移至更大的层级或添加虚拟机。 如果需求下降,可以通过删除容量快速节省资金。 在 Azure 中,你只需为使用的容量付费。
IaaS 和 PaaS
在 Azure 上实现数据库时,可选方法至少有以下两种(可根据所需的控制级别进行选择):
- 基础结构即服务 (IaaS)。 如果选择 IaaS 方法,Azure 将运行物理基础结构。 你将创建虚拟机和虚拟网络来连接它们,然后安装必要的软件和数据。 运行虚拟机的方式类似于运行物理服务器。 你可以维护操作系统和软件,但不必担心数据中心、环境控制或 Internet 的连接。
- 平台即服务 (PaaS)。 如果选择 PaaS 方法,Azure 将运行物理基础结构、必要的虚拟服务器和数据库软件。 你无需对这些组件执行配置或维护任务。 例如,Azure 会自动应用服务包。 你可以集中精力进行数据库管理。 用于在 Azure 上运行开源数据库的 PaaS 产品/服务包括 Azure Database for MySQL、Azure Database for MariaDB 和 Azure Database for PostgreSQL。
什么是用于适用于 MySQL、MariaDB 和 PostgreSQL 的 Azure 数据库服务?
如果有基于 MySQL、MariaDB 或 PostgreSQL 构建的本地数据库系统,并且想要将数据库移至云中,请考虑使用 Azure Database for MySQL、Azure Database for MariaDB 或 Azure Database for PostgreSQL。 你可能还想使用这些服务来实现新的数据库。 例如,如果你的开发人员和数据库管理员拥有使用这些数据库服务器的经验,而你又不想让他们花时间学习一个新系统,那么使用 Azure Database for MySQL、Azure Database for MariaDB 或 Azure Database for PostgreSQL 可以让员工们利用他们现有的知识。 Azure Database for MySQL、Azure Database for MariaDB 和 Azure Database for PostgreSQL 是 PaaS 系统,因此无须担心构建或实现虚拟服务器或网络的问题。
什么是用于 MySQL 的 Azure 数据库?
Azure Database for MySQL 是 Azure 云中基于 MySQL 社区版的 MySQL 的 PaaS 实现。 当前,可以根据自己的需求从 MySQL 的 5.6、5.7 和 8.0 版本支持中进行选择。 随着 MySQL 的发展,将提供其他版本支持。
通过使用 Azure Database for MySQL 可以获取以下功能:
- 内置高可用性功能。
- 可预测性能。
- 轻松缩放,快速响应需求。
- 保护数据,包括静态数据和动态数据。
- 过去 35 天的自动备份和时间点还原。
- 企业级安全性和法规遵从性。
系统使用即用即付定价,因此你只需为所用的部分付费。
可以从两个部署选项中进行选择:
Azure Database for MySQL - 灵活服务器
通过将数据库复制到多个可用性区域,Azure Database for MySQL 灵活服务器可提供更高的可用性。 它可以实现快速启动和停止数据库服务以优化成本。
Azure Database for MySQL 提供了一个全局数据库系统,可纵向扩展为大型数据库,且无需管理硬件、网络组件、虚拟服务器、软件修补程序和其他基础组件。
什么是 Azure Database for MariaDB?
MariaDB 是社区为响应 Oracle 收购 MySQL 而创建的 MySQL 的一个分支。 Azure Database for MariaDB 是 Azure 云中 MariaDB 的 PaaS 实现。
MariaDB 设计为 MySQL 的即用型替代品,因此可以用 MariaDB 数据库替换 MySQL 数据库,且无需对客户端应用进行大量的重新编码和改变数据库架构。 MariaDB 的许多功能与 MySQL 中的功能相同,例如:
- 数据库架构和索引
- 数据定义命令
- 客户端协议、结构和 API
mysqldump
和mysqladmin
程序
MySQL 与 MariaDB 如此相似,这意味着 MySQL 到 Azure Database for MySQL 的迁移任务非常类似于 MariaDB 到 Azure Database for MariaDB 的迁移。 只是系统之间存在一些差异。 例如,MariaDB 支持列列存储和 Redis 缓存,这两者都可用于优化性能。
注意
由于从 MySQL 和 MariaDB 将数据库迁移到 Azure 的过程非常相似,所以本课程将一起介绍它们。
重要
撰写本文时,Azure Database for MariaDB 没有灵活服务器部署选项。
什么是 Azure Database for PostgreSQL?
如果你更喜欢 PostgreSQL,可以选择使用 Azure Database for PostgreSQL 来获得该数据库服务器在 Azure 云中的 PaaS 实现。 它提供与 MySQL 服务相同的可用性、性能、缩放性、安全性和管理优势。
可以从三个部署选项中进行选择:
Azure Database for PostgreSQL 灵活服务器
Azure Database for PostgreSQL 灵活服务器提供与 MySQL 灵活服务器相同的优势。 可以使用它来提供最高级别的可用性以及便捷的重启。
用于在 Azure 中运行 MySQL、MariaDB 和 PostgreSQL 的 IaaS 选项
使用 IaaS 方法在云中复制物理体系结构。 如果想保留对操作系统和系统基础软件的更多控制,则可以选择 IaaS。
不过,可以采用多种方法来实现 IaaS 方法,具体取决于你的需求和现有系统的复杂性。
直接迁移
一种方法是通过创建与数据中心相匹配的虚拟网络基础结构,在云中镜像本地体系结构,即为本地系统中的每个服务器创建一个虚拟机。 在虚拟机上安装并配置数据库管理系统软件 (MySQL、MariaDB 或 PostgreSQL)。 然后,将系统直接迁移到云中,几乎无需对客户端代码或配置进行修改。
使用此策略,可按照分步流程进行迁移。 使用 Azure 网关将系统的各个部分逐步移动到云中,同时保留本地的其他元素。 使用此混合方法在每个步骤中稳定系统,并在必要时回滚。
使用预生成的虚拟机
商城包含为 MySQL、MariaDB 和 PostgreSQL 服务器预配置的虚拟机。 这些映像可以节省时间,因为你不需要亲自安装数据库服务器软件。 如果要设置数据库虚拟机,请检查商城中是否有合适版本数据库软件的映像,并考虑使用它。
还可以将自定义虚拟机映像上传到 Azure,并使用它来创建虚拟机。 此映像可以包括所选的数据库软件,甚至数据库本身。 有关详细信息,请参阅教程:使用 Azure PowerShell 创建 Azure VM 的自定义映像。
使用 MySQL、MariaDB 或 PostgreSQL 容器
你可能会考虑的另一种虚拟化技术是容器化。 容器类似于虚拟机,但与主机共享操作系统。 容器比虚拟机小,因此你可以在主机上运行更多的容器,并更快地启动新的容器。 但由于操作系统是共享的,因此不能执行像在 Windows 计算机上运行 Linux 容器这样的操作。 若要在物理服务器上运行容器,需要容器主机软件,如 Docker。 容器根据映像部署,并且像虚拟机一样,这些映像可以包括诸如 MySQL、MariaDB 和 PostgreSQL 之类的数据库软件。
如果要在 Azure 中运行少量容器,请在虚拟机上安装 Docker。 或者,如果使用容器实例服务,则可以在 Azure 上运行容器,而无需设置自己的虚拟机。 如果想要轻松管理大量需要彼此通信的容器,请使用 Azure Kubernetes 服务。