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 会为你运行物理基础结构。 创建虚拟机和虚拟网络来连接它们,然后安装必要的软件和数据。 运行虚拟机就像运行物理服务器一样。 您维护操作系统和软件,但不必担心数据中心、环境控制或与互联网的连接。
  • 平台即服务(PaaS)。 如果选择 PaaS 方法,Azure 将运行物理基础结构、必要的虚拟服务器和数据库软件。 无需在这些组件上执行配置或维护任务。 例如,Azure 会自动应用服务包。 可以专注于数据库管理。 用于在 Azure 上运行开源数据库的 PaaS 产品/服务包括 Azure Database for MySQLAzure Database for MariaDBAzure Database for PostgreSQL

什么是适用于 MySQL、MariaDB 和 PostgreSQL 的 Azure 数据库服务?

如果本地数据库系统基于 MySQL、MariaDB 或 PostgreSQL 构建,并且想要将数据库移动到云中,请考虑使用 Azure Database for MySQLAzure Database for MariaDBAzure Database for PostgreSQL。 你可能还希望使用这些服务来实现新数据库。 例如,如果开发人员和数据库管理员对这些数据库服务器有经验,并且不希望他们花时间学习新系统,则使用 Azure Database for MySQLAzure Database for MariaDBAzure Database for PostgreSQL 使员工能够使用其现有知识。 Azure Database for MySQLAzure Database for MariaDBAzure Database for PostgreSQL 是 PaaS 系统,因此你不必担心构建或实现虚拟服务器或网络。

什么是 Azure Database for MySQL?

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 是一个由社区创建的 MySQL 分支,用于响应 Oracle 收购 MySQL。 Azure Database for MariaDB 是 Azure 云中 MariaDB 的 PaaS 实现。

MariaDB 被设计为 MySQL 的直接替换项,因此可以将 MySQL 数据库替换为 MariaDB 数据库,而无需对客户端应用进行大量重新编码或大幅更改数据库架构。 MariaDB 的许多功能与 MySQL 中的功能相同,例如:

  • 数据库结构和索引
  • 数据定义命令
  • 客户端协议、结构和 API
  • mysqldumpmysqladmin 程序

MySQL 和 MariaDB 之间的这种相似性意味着,从 MySQL 到 Azure MySQL 数据库的迁移任务与从 MariaDB 到 Azure MariaDB 数据库的迁移任务非常相似。 系统之间存在一些差异。 例如,MariaDB 支持 ColumnStore 和 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 服务。