自行管理的 MySQL 与 Cloud SQL for MySQL

MySQL 是世界上最受欢迎的开源关系型数据库之一。MySQL 之所以广受欢迎,原因之一是它能够以多种符合用户工作负载要求的方式托管和管理数据库。用户可以选择将数据库设置为在本地自行管理、在云的虚拟机中自行管理,或者使用云服务提供商的全托管式产品。本文重点介绍自行管理的 MySQL 选项和 Google Cloud 提供的全托管式解决方案 Cloud SQL for MySQL。我们将介绍每个选项的优缺点。

自行管理的 MySQL

自行管理的 MySQL 选项意味着用户(大多数情况下是数据库管理员)需要主要负责设置、安装、配置和维护数据库、操作系统 (OS)、网络、存储、虚拟机 (VM) 实例,以及托管数据库实例和服务器的硬件。其中一些任务(例如硬件、虚拟机实例、存储、网络和操作系统任务)可以利用 Google Cloud 等云服务提供商更轻松地完成。无论用户是在本地自行管理数据库还是在云端自行管理数据库,他们都负责确保系统平稳运行所需的一些主要数据库管理任务。下面列出了这些任务。

  • 可用性:硬件和软件组件不可避免地会发生故障。不过,在设计系统时应使其能够承受硬件和软件故障,并确保数据库、服务器和应用的持续可用性。 
  • 数据库维护:在自行管理的 MySQL 选项中,用户需要使用最新版本的软件更新应用堆栈的各个层,决定支持生命周期结束、不受支持或旧版本的硬件、操作系统和其他软件。此外,用户需要定期安装软件、操作系统和 MySQL 补丁,同时确保数据库正常运行,而不会出现重大中断。
  • 可伸缩性:随着应用使用量的增加,对改善数据库性能的需求也会增加。 类似地,为了支持大量工作负载或客户群,硬件资源也需要进行纵向扩容或横向扩容。 对于自行管理的 MySQL,用户需承担此责任。在本地环境中扩缩硬件资源是一项非常耗时且复杂的活动,有时会导致系统停机。
  • 安全性:近来安全性已成为涉及数据库系统多层的最重要方面,从物理保护硬件到配置网络防火墙、保护数据库连接,等等。这些都是复杂的活动,需要大量的工作和专业知识,才能完成自行管理的设置。
  • 监控:除了设置、安装和配置 MySQL 之外,用户还需要关注监控所有栈层的各个组件,例如在硬件级别、操作系统和 MySQL 中进行监控,以及在发生故障时采取纠正措施。

下图展示了用户选择自行管理设置时的责任。虽然 Google Cloud 的自行管理减少了与硬件、计算、网络和存储相关的一些任务,但用户仍需负责管理栈的其余层。数据库管理员和应用开发者仍必须投入足够的时间、精力和资源来管理 MySQL。

显示数据库管理员的所有责任在于自行管理的数据库托管的图片

什么是 Cloud SQL for MySQL?

Cloud SQL 是一项全托管式数据库服务,可让您轻松地在 Google Cloud 上设置配置、维护、管理和控制 MySQL、PostgreSQL 和 SQL Server 数据库。Cloud SQL 可管理硬件、网络、操作系统、安全、监控、维护、可用性和扩缩 MySQL 数据库的所有方面。用户可以不必关注所有这些责任,而专注于应用开发并为客户带来价值。

下图与上图类似,后者显示了管理 MySQL 数据库的各个层所涉及的任务,唯一的区别是 Cloud SQL 代表用户管理的所有任务都以蓝色表示。

全托管式数据库托管图片

除了管理上述众多任务之外,Cloud SQL 还提供自行管理的环境中本身不提供的各种功能和解决方案。下面列出了 Cloud SQL 提供的一些主要功能。

可靠性:备份和恢复是数据库管理中最重要的活动。Cloud SQL 提供自动备份按需备份功能,可用于在发生损坏、灾难或意外数据修改时将数据库恢复到某个时间点

可用性:Cloud SQL 通过实例化跨多个可用区托管数据库的多台服务器来提供高可用性,并具有自动故障切换功能,以在虚拟机或数据中心出现故障时提供高可用性。Cloud SQL 保证在全球任何地方的可用性都超过 99.95%。

除了高可用性功能之外,Cloud SQL 还提供了一个全天候站点可靠性工程 (SRE) 团队,负责确保 Google Cloud 上的 Cloud SQL for MySQL 数据库实例的可靠性。

跨区域读取副本是另一项功能,可在发生任何故障时用作灾难恢复机制。它可让用户在其他网站(区域)快速启动受影响的数据库,将对业务的影响降至最低。

可伸缩性:Cloud SQL 支持创建 MySQL 读取副本(例如位于同一区域或远程区域的其他 MySQL 只读实例),这些实例允许处理来自副本以及主实例的请求,从而提供更好的读取性能。读取副本还可用于报告用途,可在满足业务需求后销毁。

Cloud SQL 支持对 MySQL 实例上的资源(CPU、内存和存储空间)进行扩容和缩容,同时将停机时间缩至最短。对于自行管理的设置,这些复杂的活动需要大量的工作、专业知识和规划。

安全性:Cloud SQL for MySQL 数据库服务器位于 Google Cloud 安全的数据中心内,可确保较高级别的安全性。此外,Google Cloud 还提供与 Virtual Private Cloud 的专用连接,以及受防火墙保护并由用户控制的网络访问机制,这可以确保用户数据库服务器不受恶意操作者的影响。

安全的另一个方面是遵守安全法规。Cloud SQL 符合许多公认的法规,例如 SSAE 16、ISO 27001、PCI DSS 和 HIPAA。

Cloud SQL 提供了通过 IAM 集成来管理用户及其对数据库的访问权限的功能。此集成可管理 Google Cloud 用户的授权和身份验证,并提供对特定 Google Cloud 资源的精细访问权限,从而防止对数据库进行未经授权的访问。此外,Cloud SQL 提供旨在控制 Cloud SQL 资源访问权限的预定义角色,从而简化身份和访问权限控制。

Cloud SQL 的另一项安全功能是加密静态数据和传输中的数据,从而确保任何未经授权的用户都无法访问用户数据。

Cloud SQL 为数据库用户提供了密码验证功能,使客户能够在实例级层定义密码复杂性、最小密码长度、密码更改间隔以及密码中使用用户名方面的密码政策。客户还可以在个别用户级层定义密码失效天数、失败尝试次数和旧密码更改要求方面的政策。Cloud SQL 中的这些功能可提供安全合规性方面的最佳实践,并降低关键数据遭到未经授权的访问的风险。

Cloud SQL 还提供了一种使用审核日志插件审核对 MySQL 数据库的操作的方法。通过审核日志,您可以深入了解谁在何时对哪个对象执行了什么操作。借助数据库审核,您可以跟踪数据库中的特定用户操作,例如表更新、读取查询、用户特权授予等。

可观测性:Cloud SQL 提供了多种监控解决方案,并且有越来越多的开箱即用指标,这些指标可让您深入了解数据库的状态。用户可以利用这些指标创建提醒,让管理员始终了解数据库的健康状况。

Cloud SQL 还提供了 Query InsightsRecommender 等功能,让用户能够排查和识别查询或工作负载的性能瓶颈。这些功能很难在自行管理的 MySQL 环境中实现。

集成Cloud SQL 可让您轻松连接到网络并与 Google Cloud 中的其他服务集成,例如 Google Kubernetes EngineCompute EngineCloud Run,从而轻松开发深度集成的解决方案。Cloud SQL 还提供与 BigQueryLooker 的原生集成,可用于 Cloud SQL 中的数据分析处理。

修补:作为一项托管式服务,Cloud SQL 会自动更新实例以确保底层硬件和操作系统可靠、性能出色、安全、保持最新状态。其中大部分更新都在 Cloud SQL 实例启动和运行期间执行。但是,某些系统更新可能需要短暂中断服务,用户可以针对升级活动定义维护窗口

版本升级:Cloud SQL 还提供数据库 (MySQL) 版本的升级自动化流程。用户还可以通过将数据迁移到更高版本的实例来升级主要版本。  

如何在 Cloud SQL for MySQL 中创建 MySQL 数据库实例?

自行管理的 MySQL 的优缺点

优点

  1. 能够使用 MySQL 生态系统中的任何 MySQL 分支(如 MariaDB 或 Percona)设置 MySQL。
  2. 由于用户可以完全控制实例、资源和操作系统,因此可以灵活地配置和设置 MySQL。此外,用户可以使用他们选择的操作系统,根据需要配置操作系统,并根据其需求配置 MySQL,而不受任何限制。
  3. 用户不受 Cloud SQL 限制(例如,最大存储空间大小为 64 TB)的约束。用户可以超过 64 TB 的存储空间限制,并使用更高的计算基础设施来托管 MySQL。
  4. 用户拥有对 MySQL 实例的完整访问权限(包括 SUPER 特权),并且拥有操作系统的完整权限(包括 sudo 权限)。
  5. 即使不受 Cloud SQL 支持,用户也可以根据其要求设置高可用性和复制拓扑。

缺点

  1. 用户负责在本地环境中管理复杂的硬件基础设施、网络和数据中心运营。即使在云中自行管理 MySQL 时,用户也需要处理以下这些复杂事务:设置、永久性磁盘和实例的配置,以及高可用性集群的设计和管理、安全性、灾难恢复和可伸缩性。
  2. 及时更新数据库版本、操作系统版本和硬件系统,使其包含最新的补丁,以避免 bug 和安全漏洞,这样可能需要大量费用、资源、复杂性和停机时间。
  3. 除了数据库设置之外,用户还必须在各个层配置和管理安全性,而不仅仅是数据库本身。例如,确保在传输过程中使用 SSL 加密连接,使证书保持最新状态,加密静态数据,以及管理用户和服务账号对数据库的登录访问权限。
  4. 为了确保实例的可用性,必须监控数据库系统的各个层是否存在任何故障。用户必须使用额外的资源来设置和配置监控工具。必须定义提醒,以便在出现错误时发出通知,并且需要采取纠正措施来修复所有故障。
  5. 用户需要花费大量的时间、资源和精力来设置和管理数据库,而不是关注应用开发。

Cloud SQL for MySQL 的优缺点

优点

  1. Cloud SQL for MySQL 为开发者和工程师提供了一个人性化界面,用于创建、管理、访问和监控 MySQL 数据库,即使是那些不具备数据库专业知识的人员也不例外。为了快速上手,Cloud SQL 还提供了一种简单的方法,用于将现有 MySQL 数据库从本地或其他云平台迁移到 Google Cloud 的 Cloud SQL for MySQL
  2. Cloud SQL for MySQL 提供了丰富的一系列功能来托管各种应用所需的 MySQL 数据库,从微型网站数据库到高度关键的大型企业应用、游戏应用,以及用于分析应用场景的数据,不一而足。使用这些丰富的功能,用户可以构建高度可靠且可伸缩的应用。
  3. Cloud SQL 与用户共同承担安全责任。Cloud SQL 可以确保较低级别的基础设施和网络的安全性,使用户能够专注于配置和开发更高级别的应用。
  4. Cloud SQL 提供了各种安全功能,例如密码验证插件审核日志记录。这些功能在社区版本中尚未提供,并且在自行管理的环境中实现很复杂。Cloud SQL 可以简化这些功能,方便用户随时使用。
  5. Cloud SQL 提供了多种与数据库交互的方法。用户可以使用 GUI、CLI 和 API 根据自己的需求用最少的工作量自定义操作。
  6. Cloud SQL 可与 BigQuery 等其他解决方案和产品轻松集成,让您可以用最少的工作量开发分析解决方案。
  7. Cloud SQL 通过其高可用性基础设施、自我修复解决方案以及全天候 SRE 团队,负责数据库实例的可靠性。
  8. 这样,用户就可以将更少的时间和精力放在数据库的运营任务上,从而可以专注于应用开发,以便更高效地提供满足其业务需求的解决方案。
  9. 除了帮助管理数据库之外,Cloud SQL 还会提供一些提示和建议,以使用查询数据分析建议等功能提升数据库性能这些功能可让您轻松、安全且经济高效地在云端托管和管理数据库。
  10. Cloud SQL 提供客户服务,以简化与数据库相关的任何问题或请求所需的支持。

缺点

  1. Cloud SQL 不支持来自 MySQL 生态系统(例如 MariaDB 和 Percona)的 MySQL 分支。
  2. 某些 MySQL 功能不受支持。了解有关不受支持的功能的详细信息。
  3. Cloud SQL 支持配备高达 624 GB RAM 和 96 个 CPU 的机器类型。支持高达 64 TB 的存储空间。如果数据库需要更高的容量,则自行管理选项是目前唯一的选项。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。

Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
控制台