MySQL 是世界上最受欢迎的开源关系型数据库之一。MySQL 之所以广受欢迎,原因之一是它能够以多种符合用户工作负载要求的方式托管和管理数据库。用户可以选择将数据库设置为在本地自行管理、在云的虚拟机中自行管理,或者使用云服务提供商的全托管式产品。本文重点介绍自行管理的 MySQL 选项和 Google Cloud 提供的全托管式解决方案 Cloud SQL for MySQL。我们将介绍每个选项的优缺点。
自行管理的 MySQL 选项意味着用户(大多数情况下是数据库管理员)需要主要负责设置、安装、配置和维护数据库、操作系统 (OS)、网络、存储、虚拟机 (VM) 实例,以及托管数据库实例和服务器的硬件。其中一些任务(例如硬件、虚拟机实例、存储、网络和操作系统任务)可以利用 Google Cloud 等云服务提供商更轻松地完成。无论用户是在本地自行管理数据库还是在云端自行管理数据库,他们都负责确保系统平稳运行所需的一些主要数据库管理任务。下面列出了这些任务。
下图展示了用户选择自行管理设置时的责任。虽然 Google Cloud 的自行管理减少了与硬件、计算、网络和存储相关的一些任务,但用户仍需负责管理栈的其余层。数据库管理员和应用开发者仍必须投入足够的时间、精力和资源来管理 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 Insights 和 Recommender 等功能,让用户能够排查和识别查询或工作负载的性能瓶颈。这些功能很难在自行管理的 MySQL 环境中实现。
集成:Cloud SQL 可让您轻松连接到网络并与 Google Cloud 中的其他服务集成,例如 Google Kubernetes Engine、Compute Engine 和 Cloud Run,从而轻松开发深度集成的解决方案。Cloud SQL 还提供与 BigQuery 和 Looker 的原生集成,可用于 Cloud SQL 中的数据分析处理。
修补:作为一项托管式服务,Cloud SQL 会自动更新实例以确保底层硬件和操作系统可靠、性能出色、安全、保持最新状态。其中大部分更新都在 Cloud SQL 实例启动和运行期间执行。但是,某些系统更新可能需要短暂中断服务,用户可以针对升级活动定义维护窗口。
版本升级:Cloud SQL 还提供数据库 (MySQL) 版本的升级自动化流程。用户还可以通过将数据迁移到更高版本的实例来升级主要版本。
优点
缺点
优点
缺点