日常维护对于维护任何健康的数据库系统都至关重要。“维护”包括更新您的操作系统和升级您的数据库软件,以便您可以放心,您的系统是安全的、高性能的和最新的。当您在 Cloud SQL 上运行数据库时,我们会在您每周维护窗口中每隔几个月为您安排一次维护,以便您将注意力转移到更有趣的事情上。但是有时您可能会发现 Cloud SQL 的定期维护节奏不起作用。也许您需要从最新的数据库次要版本中修复错误以解决性能问题,或者您的安全团队希望尽快修补操作系统漏洞。无论如何,在下一次计划的维护事件之前灵活地更新最好的。
Cloud SQL 现已全面开放自助维护。自助维护让您可以自由地将 Cloud SQL 实例的维护版本自行升级到最新版本,以便您可以按需接收最新的安全补丁、错误修复和新功能。结合拒绝维护期,自助维护让您可以根据自己的维护计划灵活地升级您的实例。您可以通过 gcloud 或 API 使用单个命令执行自助维护。
Cloud SQL 还推出了维护变更日志,这是我们文档中的一个新部分,描述了 Cloud SQL 发布的维护版本的内容。对于每个数据库引擎主要版本,Cloud SQL 都会发布维护版本的运行列表以及每个版本中引入的更改,例如数据库次要版本升级和安全补丁。通过维护更改日志,您可以了解最新维护版本的新增功能,并在定期安排维护之前就何时需要自行维护实例做出明智的决定。 Cloud SQL 还会为每个维护变更日志维护一个 RSS 提要,您可以订阅提要阅读器并在 Cloud SQL 发布新的维护版本时接收通知。
如何进行自助维护?
假设您是一家名为 Taxio 的税务会计软件公司的 PostgreSQL 数据库管理员。在每年的第一季度,您使用拒绝维护期跳过名为 tax-services-prod 的数据库实例的维护,以确保您的环境在繁忙季节尽可能稳定。现在是 5 月,您可以仔细查看 PostgreSQL 12.8 实例在旧维护版本上的运行情况。
在使用 Query Insights 研究查询性能模式后,您意识到使用正则表达式的查询运行速度远低于您的预期。您查看 PostgreSQL 错误页面,您会看到其他用户在 PostgreSQL 12.8 中报告了相同的性能回归。幸运的是,该问题似乎已在 PostgreSQL 12.9 及更高的次要版本中修复。
您决定要在几个月后的下一次定期维护活动之前立即着手解决问题。首先,您需要查看正在运行的维护版本 tax-services-prod 以及可用的最新维护版本是什么。您启动 gcloud 并使用以下命令检索实例的配置信息:
gcloud sql instances describe tax-services-prod
Cloud SQL 返回以下信息:
connectionName: taxio:us-central1:tax-services-prod
createTime: '2019-03-22T03:30:48.231Z'
databaseInstalledVersion: POSTGRES_12_8
…
maintenanceVersion: POSTGRES_12_8.R20210922.02_00
…
availableMaintenanceVersions:
- POSTGRES_12_10.R20220331.02_01
您会看到有一个新的维护版本 POSTGRES_12_10.R20220331.02_01,它比您当前的维护版本 POSTGRES_12_8.R20210922.02_00 更新得多。从版本名称看,新的维护版本似乎在 PostgreSQL 12.10 上运行。但您需要确定一下,您导航到文档中的 PostgreSQL 12 维护更改日志页面,并确认新的维护版本将数据库次要版本升级到 PostgreSQL 12.10。
您决定执行自助维护。您在 gcloud 中输入以下命令:
gcloud sql instances patch tax-services-prod \
–maintenance-version=POSTGRES_12_10.R20220331.02_01
Cloud SQL 返回以下信息:
The following message will be used for the patch API method.
{"maintenanceVersion": "POSTGRES_12_10.R20220331.02_01", "name": "tax-services-prod", "project": "taxio", "settings": {}}
Patching Cloud SQL instance...working..
几分钟后,您的 tax-services-prod 是最新的,运行 PostgreSQL 12.10。您运行了一些验收测试,并且很高兴看到使用正则表达式的查询的性能要好很多。