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 数据库使用最新的查询优化器版本。为确保可预测的查询性能,请使用已对工作负载进行测试的优化器版本。定期在受控环境中评估新的优化程序版本,仅在确认兼容性和性能提升后更新默认版本。如需了解详情,请参阅查询优化器概览
❑  
确保查询优化器统计信息是最新的,以支持高效的查询执行计划。虽然统计信息会自动更新,但在进行大规模数据修改(例如批量插入、更新或删除)、添加新索引或更改架构等情况下,不妨考虑手动构建新的统计信息包。 为了保持最佳查询性能,请务必及时更新查询优化器统计信息。
❑  
在某些情况下(例如在批量删除后或新统计信息生成可能会对查询性能产生不可预测的影响时),建议固定特定的统计信息软件包。这样一来,在生成和测试新软件包之前,查询性能会保持一致。定期检查是否需要固定统计信息,并在更新后的软件包通过验证后取消固定。如需了解详情,请参阅查询优化器统计信息软件包

安全

若要保护敏感数据并防止在 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 利用率准则,以确保以经济高效的方式调整资源。
❑  
启用自动扩缩功能,以根据工作负载需求动态调整计算容量。这样可以确保在高负载期间获得最佳性能,同时在活动量较低的时期降低费用。配置上限和下限的扩缩政策,以控制费用并避免过度扩缩。如需了解详情,请参阅自动扩缩概览
❑  
使用增量备份来降低备份存储费用。 增量备份仅存储上次备份之后的数据更改。与完整备份相比,这可以显著降低存储空间要求。 将增量备份纳入备份策略。如需了解详情,请参阅增量备份
❑  
通过选择最优的实例配置并在环境闲置时取消预配资源,优化非生产环境的费用。例如,在非工作时间缩减非关键环境的规模,或为开发和测试场景自动扩缩资源。这种方法可最大限度地降低费用,同时保持运营灵活性。