最佳做法

本页面介绍了一些最佳做法,遵循这些做法可从 Cloud SQL 获得最佳的性能、耐用性和可用性。

如果您的 Cloud SQL 实例出现问题,请在排查问题时查看以下内容:

实例配置和管理

最佳做法 更多信息
阅读并遵循操作指南,确保您的实例在 Cloud SQL 服务等级协议 (SLA) 的涵盖范围内。
为主实例配置维护期,以控制执行中断性更新的时间。 请参阅维护期
如果您定期删除并重新创建实例,请在实例 ID 中使用时间戳以增加新实例 ID 可用的可能性。
在先前操作完成之前,请勿启动管理操作。

Cloud SQL 实例在完成先前的操作之前不接受新的操作请求。如果您试图提前启动新操作,则操作请求将失败。这也包括实例重启在内。

Google Cloud 控制台中的实例状态不会反映操作是否正在运行。绿色对勾标记仅表示实例处于 RUNNABLE 状态。如需查看操作是否正在运行,请转到操作标签页,然后检查最近操作的状态。

配置存储空间以支持重要的数据库维护。

如果停用了启用存储空间自动扩容功能实例设置,或者启用了存储空间自动扩容上限,请确保您至少有 20% 的可用空间以支持 Cloud SQL 可能执行的重要数据库维护操作。

如果您希望在可用磁盘空间低于 20% 时收到提醒,请为磁盘利用率指标创建基于指标的提醒政策,并设置高于阈值的阈值位置和 .8 的阈值。如需了解详情,请参阅创建基于指标的提醒政策

防止 CPU 利用率过高。

您可以在 Google Cloud 控制台的“实例详情”页面上查看实例正在使用的可用 CPU 的百分比。如需了解详情,请参阅指标。您还可以使用创建指标阈值提醒政策,监控 CPU 使用率并在达到指定的阈值时收到提醒。

为了避免利用率过高,您可以增加实例的 CPU 数。更改 CPU 需要重启实例。如果实例的 CPU 数已达到上限,则必须将数据库分片到多个实例。

避免内存耗尽。

在查找内存耗尽迹象时,应主要使用 usage 指标。为避免发生内存不足的错误,我们建议将此指标保持在 90% 以下。

您还可以使用 total_usage 指标来观察 Cloud SQL 实例正在使用的可用内存百分比,包括数据库容器使用的内存以及操作系统缓存。

通过观察这两个指标之间的差异,您可以确定进程使用的内存量与操作系统缓存使用的内存量。您可以将此缓存中的内存改作他用。

如需预测内存不足问题,请检查这两个指标并一起解读。如果这些指标看起来较高,则表示实例可能内存不足。这可能是因为自定义配置和/或工作负载的实例规模不足。

扩缩 Cloud SQL 实例以增加其内存大小。 更改实例的内存大小需要重启实例。 如果实例已达到内存大小上限,则必须将数据库分片到多个实例。如需详细了解如何在 Google Cloud 控制台中监控两个指标,请参阅指标

数据架构

最佳做法 更多信息
尽可能将大型实例拆分为较小的实例。 如果可能,使用多个较小的 Cloud SQL 实例要优于使用一个大型实例。 管理单个大型实例时,会遇到一组较小实例不会发生的难题。

应用实现

最佳做法 更多信息
采用最佳连接管理做法,例如连接池和指数退避算法。 使用这些方法会改善应用对资源的使用,并帮助您保持在 Cloud SQL 连接限制内。如需了解详情和代码示例,请参阅管理数据库连接
测试应用对维护更新的响应情况,这可能在维护期间随时发生。 尝试自助维护以模拟维护更新。在维护期间,实例在短时间内变得不可用,并且现有连接会被丢弃。通过测试维护发布,您可以更好地了解应用处理计划性维护的方式以及系统恢复的速度。
测试应用对故障切换的响应情况,这可能随时发生。 您可以使用 Google Cloud 控制台、gcloud CLI 或 API 手动启动故障切换。请参阅启动故障切换
避免大型事务。 保持事务小而简短。如果需要进行大型数据库更新,将其分为几个较小的事务执行,而不是通过一个大型事务。
如果您使用的是 Cloud SQL Auth 代理,请确保使用最新版本。 请参阅保持 Cloud SQL Auth 代理为最新版本

数据导入和导出

最佳做法 更多信息
加快小型实例的导入。 对于小型实例,您可以临时增加实例的 CPU 和 RAM,以提高导入大型数据集时的性能。
如果您要导出数据以导入到 Cloud SQL 中,请务必采用正确的过程。 请参阅从外部代管式数据库服务器导出数据

备份与恢复

最佳做法 更多信息
使用适当的 Cloud SQL 功能保护您的数据。

备份和导出是提供数据冗余和保护的方法。它们各自防范不同的情形,并在强大的数据保护策略中相互补充。

备份属于轻量级;通过备份,可以将实例上的数据恢复到进行备份时的状态。但是,备份也存在一些限制。如果您删除实例,备份也会被删除。您无法备份单个数据库或表。并且如果实例所在的区域不可用,则无法通过对应备份恢复实例,即使在可用区域中也不行。

导出需要较长时间才能创建,因为在 Cloud Storage 中创建了可用于重新创建数据的外部文件。如果您删除实例,导出不会受影响。此外,您可以只导出单个数据库甚至表,具体取决于您选择的导出格式。

保护您的实例和备份免遭意外删除。

默认情况下,您在 Google Cloud 控制台中或通过 Terraform 创建的 Cloud SQL 实例可以防止意外删除。

使用 Cloud SQL 中的导出功能导出数据以提供额外保护。将 Cloud Scheduler 与 REST API 搭配使用以自动执行导出管理。对于更高级的场景,将 Cloud Scheduler 与 Cloud Functions 搭配使用以实现自动化。

后续步骤

如需详细了解数据库引擎的一般做法,请参阅: