Spanner 发布核对清单

此发布清单列出了在 Spanner 上发布生产应用之前需要考虑的事项。本文并非旨在详尽地介绍 Spanner 部署,而是旨在突出重点,帮助您尽量降低风险、优化性能并确保与业务和运营目标保持一致,并提供系统性方法来实现顺畅可靠的 Spanner 部署。

此核对清单分为以下部分:

设计、开发、测试和优化

优化架构设计、事务和查询对于利用 Spanner 的分布式架构实现高性能和可伸缩性至关重要。严格的生产规模和端到端测试可确保系统能够处理实际工作负载、高峰负载和并发操作,同时最大限度地降低生产过程中出现瓶颈或失败的风险。

复选框 活动
❑  
在设计架构时,请考虑可伸缩性和 Spanner 的分布式架构。遵循最佳实践,例如选择合适的主键和索引以避免热点,并考虑对相关数据进行表交错等优化。查看架构设计最佳实践,以确保架构在预期工作负载下支持高性能和可伸缩性。
❑  
优化事务和查询,以尽量减少锁定并实现最佳性能。使用 Spanner 的事务模式(例如锁定读写、强制只读和分区 DML 语句),以平衡一致性、吞吐量和延迟时间。通过使用只读事务进行查询、批处理以最大限度提高 DML 吞吐量或使用分区 DML 语句进行大规模更新和删除,最大限度地缩小锁定范围。从具有不同隔离级别(例如 PostgreSQL 或 MySQL)的系统迁移时,请使用事务以避免性能瓶颈。如需了解详情,请参阅事务
❑  
进行严格的大规模负载测试,以验证架构设计、事务行为和查询性能。模拟峰值和高并发场景,以模拟实际应用负载,包括各种事务形状和查询模式。评估在这些条件下的延迟时间和吞吐量,以确认数据库设计和实例拓扑是否满足性能要求。 在开发过程中迭代使用负载测试,以优化和完善实现。
❑  
扩展负载测试,以涵盖所有互动服务,而不仅仅是独立的应用。模拟全面的用户体验历程以及并行进程,例如访问数据库的批量加载或管理任务。对生产 Spanner 实例配置运行测试,确保负载测试驱动程序和服务在地域上与预期的生产部署拓扑保持一致。这种全面的方法可提前发现潜在冲突,并确保在实际操作期间数据库性能顺畅。
❑  
为确保查询性能可预测,请使用已测试工作负载的优化器版本。默认情况下,Spanner 数据库会使用最新的查询优化器版本。在受控环境中定期评估新的优化器版本,仅在确认兼容性和性能改进后才更新默认版本。如需了解详情,请参阅查询优化器概览
❑  
确保查询优化器统计信息是最新的,以支持高效的查询执行计划。 虽然统计信息会自动更新,但在进行大规模数据修改(例如批量插入、更新或删除)、添加新索引或更改架构等场景时,不妨考虑手动构建新的统计信息软件包。 保持查询优化器统计信息的最新状态对于保持最佳查询性能至关重要。

迁移(可选)

数据库迁移是一个全面的过程,需要深入了解每个迁移历程的具体细节。在制定迁移策略时,请考虑以下事项:

复选框 活动
❑  
为迁移切换制定详细的标准操作程序 (SOP)。这包括应用发布步骤、数据库切换步骤以及自动化步骤,以最大限度地减少手动干预。 提前确定潜在的停机时间窗口并与利益相关者进行沟通。实施可靠的监控和提醒机制,以实时跟踪迁移过程并及时检测任何异常情况。 确保切换过程包含验证检查,以确认迁移后的应用功能和数据完整性。
❑  
准备详细的后备计划,以便在迁移过程中出现严重问题时还原到源系统。在预演环境中测试后备程序,以确保它们可靠且可以在尽可能短的停机时间内执行。明确定义会触发后备的条件,并确保团队经过培训,能够快速高效地执行此计划。

部署

适当的部署规划可确保 Spanner 配置满足可用性、延迟时间和可伸缩性方面的工作负载要求,同时考虑地理位置和操作方面的因素。通过调整大小、资源管理、故障切换场景和自动化,可最大限度地降低风险,确保最佳性能,并防止在关键操作期间出现资源限制或服务中断。

复选框 活动
❑  
确保您的 Spanner 实例配置(无论是区域级、双区域还是多区域)符合应用的工作负载可用性和延迟时间要求,同时还要考虑地理位置因素。根据预期的存储空间大小、流量模式和建议的利用率上限计算目标计算容量,确保在发生可用区级或区域级服务中断时有足够的容量。通过启用自动扩缩来应对流量高峰。 您可以为计算容量设置上限,以建立费用保障。如需了解详情,请参阅计算容量、节点和处理单元
❑  
如果您使用的是双区域或多区域实例配置,请选择一个主要区域,以最大限度地缩短从部署在延迟最敏感位置的服务发出的应用写入的延迟时间。 测试不同主要区域对操作延迟的影响,并进行调整以优化应用性能。通过确保应用拓扑能够在区域级服务中断期间适应主要区域更改,为故障切换场景制定计划。如需了解详情,请参阅修改数据库的主要区域
❑  
适当配置标记和标签,以便清晰了解操作情况并跟踪 Google Cloud 资源。使用标记按环境或工作负载类型对实例进行分组。使用标签来标记元数据,以便于进行费用分析和权限管理。如需了解详情,请参阅使用标记控制访问权限并整理实例
❑  
评估是否需要预热 Spanner,尤其是对于预计在发布时会突然出现大量流量的服务。 在高初始负载下测试延迟时间可能会发现需要进行预发布预热以确保实现最佳性能。如果需要预热,请生成人工负载。如需了解详情,请参阅在应用发布之前预热数据库
❑  
在部署前查看 Spanner 限制和配额。 如有必要,请在 Google Cloud 控制台中申请增加配额,以避免在高峰期受到限制。请注意硬性限制(例如,每个数据库的表数量上限),以防部署后出现问题。如需了解详情,请参阅配额和限制
❑  
使用 Terraform 等自动化工具来预配和管理 Spanner 实例,确保配置高效且无误。对于架构管理,不妨考虑使用 Liquibase 等工具,以避免在更新过程中意外删除架构。如需了解详情,请参阅将 Terraform 与 Spanner 搭配使用

灾难恢复

制定可靠的灾难恢复 (DR) 策略对于保护数据、最大限度地缩短停机时间以及在发生意外故障时确保业务连续性至关重要。定期测试恢复程序和自动化备份有助于确保业务准备就绪、符合恢复目标,以及根据组织需求量身定制的可靠数据保护。

复选框 活动
❑  
为 Spanner 定义全面的灾难恢复策略,其中包括数据保护、恢复目标和故障场景。明确设定恢复时间目标 (RTO) 和恢复点目标 (RPO),并确保这些目标符合业务连续性要求。指定备份频率、保留政策,并使用时间点恢复 (PITR) 来最大限度地减少发生故障时的数据丢失。查看灾难恢复概览,找出合适的工具和技术,确保应用符合可用性、可靠性和安全性要求。如需了解详情,请参阅 Spanner 中的数据保护和恢复解决方案白皮书。
❑  
为备份和恢复程序创建详细的文档,包括针对各种恢复场景的分步指南。 定期测试这些程序,以确保具备运行就绪状态并验证 RTO 和 RPO 要求。测试应模拟真实的故障条件和场景,以发现缺陷并改进恢复过程。如需了解详情,请参阅恢复概览
❑  
实施自动备份时间表,以确保一致且可靠的数据保护。配置频率和保留设置,以满足业务需求和法规义务。使用 Spanner 的备份时间表功能可自动创建、管理和监控备份。如需了解详情,请参阅创建和管理备份时间表
❑  
将故障切换程序与应用的实例配置拓扑结构保持一致,以最大限度地减少发生故障时延迟时间的影响。测试灾难恢复场景,确保在将主要区域移至故障切换区域时,应用能够高效运行。如需了解详情,请参阅修改数据库的主要区域

查询优化器和统计信息管理

管理查询优化器版本和统计信息对于保持可预测且高效的查询性能非常重要。使用经过测试的版本并保持统计信息的最新状态可确保稳定性,防止性能意外发生变化,并优化查询执行计划,尤其是在进行重大数据或架构修改时。

复选框 活动
❑  
默认情况下,Spanner 数据库使用最新的查询优化器版本。为确保查询性能可预测,请使用已测试工作负载的优化器版本。定期在受控环境中评估新的优化器版本,并仅在确认兼容性和性能改进后更新默认版本。如需了解详情,请参阅查询优化器概览
❑  
确保查询优化器统计信息是最新的,以支持高效的查询执行计划。 虽然统计信息会自动更新,但在进行大规模数据修改(例如批量插入、更新或删除)、添加新索引或更改架构等场景时,不妨考虑手动构建新的统计信息软件包。 保持查询优化器统计信息的最新状态对于保持最佳查询性能至关重要。
❑  
在某些情况下,例如在批量删除后或新统计信息生成可能会不可预测地影响查询性能时,建议固定特定统计信息软件包。这样可以提供一致的查询性能,直到可以生成和测试新软件包为止。定期检查是否需要固定统计信息,并在更新后的软件包通过验证后取消固定。如需了解详情,请参阅查询优化器统计信息软件包

安全性

实施访问权限控制措施对于保护敏感数据和防止未经授权的访问至关重要。通过强制执行最小权限访问精细访问权限控制 (FGAC)数据库删除保护,您可以最大限度地降低风险、确保合规性,并保护关键资产免受意外或恶意操作的侵害。

复选框 活动
❑  
审核并实施Identity and Access Management (IAM) 政策,并根据最小权限原则为访问数据库的所有用户和服务账号实施这些政策。仅分配执行特定任务所需的必要权限,并定期审核访问权限,以确保遵循此模型。使用具有最小权限的服务账号来执行自动化流程,以降低未经授权的访问风险。如需了解详情,请参阅 IAM 概览
❑  
如果应用需要对表中的特定行、列或单元格进行受限访问,请实现精细访问权限控制 (FGAC)。根据用户属性或数据值设计并应用条件式访问权限政策,以强制执行精细的访问权限规则。定期审核并更新这些政策,以满足不断变化的安全和合规要求。如需了解详情,请参阅精细访问权限控制概览
❑  
实施自动备份时间表,以确保一致且可靠的数据保护。配置频率和保留设置,以满足业务需求和法规义务。使用 Spanner 的备份时间表功能可自动创建、管理和监控备份。如需了解详情,请参阅创建和管理备份时间表
❑  
启用数据库删除防护功能,以防止意外或未经授权的删除操作。将此与严格的 IAM 控制措施结合使用,可将删除权限限制在一小组受信任的用户或服务账号。此外,您还可以配置 Terraform 等基础设施自动化工具,以防意外删除数据库。这种分层方法可最大限度地降低对关键数据资产的风险。如需了解详情,请参阅防止意外删除数据库

日志记录和监控

有效的日志记录和监控对于保持对数据库操作的可见性、检测异常和确保系统健康至关重要。通过使用审核日志、分布式跟踪、信息中心和主动提醒,您可以快速发现和解决问题、优化性能并满足合规性要求。

复选框 活动
❑  
启用审核日志记录,以捕获有关数据库活动的详细信息。根据合规性和操作要求适当配置审核日志级别,以便有效监控访问模式并检测异常情况。请注意,审核日志可能会变得非常大,尤其是对于 DATA_READDATA_WRITE 请求,因为系统会为这些请求记录所有 SQL 和 DML 语句。如需了解详情,请参阅 Spanner 审核日志记录

将这些日志路由到用户定义的日志存储桶,可让您优化日志保留费用(前 30 天不收费),并使用日志视图精细控制日志访问权限。
❑  
使用 OpenTelemetry 对应用逻辑进行插桩,以分发跟踪和可观察性,从而收集客户端指标。设置 OpenTelemetry 插桩,以捕获 Spanner 中的跟踪记录和指标,确保对应用性能和数据库互动的端到端可见性。如需了解详情,请参阅使用 OpenTelemetry 捕获自定义客户端指标
❑  
创建和配置监控指标,以直观呈现查询性能、延迟时间、CPU 利用率和存储空间用量。使用这些指标可实时跟踪数据库性能并对其进行历史分析。如需了解详情,请参阅使用 Cloud Monitoring 监控实例
❑  
针对关键指标定义基于阈值的监控提醒,以主动检测和解决问题。针对查询延迟时间长、存储空间可用性低或流量意外激增等情况配置提醒。将这些提醒与突发事件响应工具集成,以便及时采取行动。如需了解详情,请参阅为 Spanner 指标创建提醒

客户端库

配置操作标记、会话池和重试政策对于优化性能、调试问题和在 Spanner 中保持弹性至关重要。这些措施可增强可观测性、缩短延迟时间,并确保高效处理工作负载需求和瞬时错误,使系统行为与应用要求保持一致。

复选框 活动
❑  
将客户端库配置为使用有意义的查询请求和事务标记。您可以使用请求标记和事务标记来了解查询、读取和事务。 最佳做法是在代码中使用上下文元数据(例如应用组件、请求类型或用户上下文),以实现增强的调试和自省。确保标记在查询统计信息和日志中可见,以便进行性能分析和问题排查。如需了解详情,请参阅使用请求标记和事务标记进行问题排查
❑  
通过在客户端库中启用会话池来优化会话管理。配置池设置(例如会话数下限和上限),以满足工作负载需求,同时最大限度地减少延迟时间。定期监控会话用量,以微调这些参数,并确保会话池能够提供一致的性能优势。如需了解详情,请参阅会话
❑  
在极少数情况下,需要配置重试的默认客户端库参数(包括重试次数上限和指数退避间隔),以平衡弹性与性能。请彻底测试这些政策,确保它们符合应用需求。 如需了解详情,请参阅配置自定义超时和重试

支持

为了尽可能减少停机时间和影响,请明确定义突发事件角色和职责,以确保对 Spanner 相关问题做出及时、协调一致的响应。如需了解详情,请参阅获取支持

复选框 活动
❑  
建立明确的突发事件响应框架,为参与管理 Spanner 相关突发事件的所有团队成员定义角色和职责。指定突发事件角色,例如突发事件指挥官、通信主管和主题专家 (SME),以确保在突发事件发生期间高效协调和沟通。制定并记录用于识别、上报、缓解和解决问题的流程。遵循 Google SRE 手册中的突发事件响应管理突发事件中概述的最佳实践。 定期进行突发事件响应培训和模拟,以确保团队做好准备,并提高团队有效应对高压情境的能力。

费用管理

实施承诺使用折扣 (CUD)、自动缩放和增量备份等成本管理策略,可确保高效利用资源并大幅节省成本。将资源预配与工作负载需求保持一致,并优化非生产环境,从而进一步降低开支,同时保持性能和灵活性。

复选框 活动
❑  
评估并购买 Spanner CUD,以降低可预测工作负载的费用。与按需定价相比,这些承诺可能会带来显著的节省。分析历史用量模式,确定最优的 CUD 承诺。如需了解详情,请参阅承诺使用折扣Spanner 价格
❑  
监控计算容量利用率,并调整已预配资源以保持建议的 CPU 利用率水平。过度预配计算资源可能会导致不必要的费用,而预配不足可能会影响性能。请遵循建议的 Spanner 最大 CPU 利用率准则,以确保资源对齐性价比高。
❑  
启用自动扩缩功能,以根据工作负载需求动态调整计算容量。这样可确保在高负载期间获得最佳性能,同时在活动较少的时期降低成本。使用上限和下限配置扩缩政策,以控制费用并避免过度扩缩。如需了解详情,请参阅自动扩缩概览
❑  
使用增量备份来降低备份存储空间费用。 增量备份仅存储自上次备份以来的数据更改。与完整备份相比,这可以显著降低存储空间要求。 将增量备份纳入您的备份策略。如需了解详情,请参阅增量备份
❑  
通过选择最优实例配置并在环境未使用时取消配置资源,优化非生产环境的费用。例如,在非工作时间缩减非关键环境的规模,或针对开发和测试场景自动扩缩资源。这种方法可最大限度地降低成本,同时保持运营灵活性。