Help us learn about your current experience with the documentation. Take the survey.

PostgreSQL 升级时间线

GitLab 每年都会进行 PostgreSQL 数据库版本升级,以最大化运营效率并利用增强的功能。这一关键的基础设施更新会影响多个团队,需要协调以确保对我们的生产环境造成最小程度的干扰。

本文档建立了一个全面的框架,概述了 GitLab 中参与 PostgreSQL 升级过程的每个团队的责任。通过明确定义特定任务的所有权并设定完成时间表,我们旨在标准化我们的方法,降低风险,并确保在所有数据库环境中成功实施。

本文档中详细的时间表是我们 PostgreSQL 升级之旅的路线图,确保所有必要的步骤都得到适当的排序和执行。通过遵循这种结构化的方法,我们可以为客户提供最佳体验,最大限度地减少停机时间,并维持他们期望的 GitLab 高水平服务。

以下部分详细说明了分配给每个团队的具体责任以及推荐的活动顺序。此框架将作为所有未来 PostgreSQL 版本升级的标准操作程序。

时间表与团队职责

一月:团队认知与准备

负责人:所有跨职能团队

团队:数据库运维团队数据库框架团队、 构建团队、持久性团队Geo 团队专用团队

这个基础阶段启动资源动员,所有团队为即将到来的 PostgreSQL 版本实施进行战略规划。

团队任务:所有团队为即将到来的 PostgreSQL 更新准备工作并分配团队资源。

二月至四月:GitLab.com 平台兼容性保证

战略升级周期规划

分析并为 GitLab 提议新的 PostgreSQL 版本。

负责人:数据库运维团队

团队任务:

  1. 制定实施策略的高级摘要;
  2. 在升级史诗中记录 GitLab 的目的和预期收益,遵循 新项目模板
  3. 邀请利益相关者和跨职能团队直接在史诗中进行协作和评论;

PostgreSQL 测试兼容性与性能

确保 GitLab.com 与提议的新 PostgreSQL 版本的兼容性。

负责人:数据库框架团队

团队任务:

  1. 将新的 PostgreSQL 版本集成到夜间规范中;
  2. 确保与新 PostgreSQL 版本的兼容性;
  3. 通过链接到升级史诗的问题,记录并传达 PostgreSQL 的不一致性、技术发现和夜间规范结果;
  4. 在升级史诗中记录并向跨职能团队传达,全面测试确认 GitLab 与新 PostgreSQL 版本完全兼容;

云托管 PostgreSQL 测试兼容性

确保 GitLab Dedicated 云托管 PostgreSQL 与 GitLab.com 使用的稳定版本的兼容性。

负责人:专用团队

团队任务:

  1. 审阅稳定支持的 PostgreSQL 版本可用的 RDS 和 CloudSQL 升级文档;
  2. 使用当前稳定的 PostgreSQL 版本测试 AWS 和 GPC 的升级;
  3. 记录发布时间表和客户沟通计划。在升级史诗中链接发布时间表;

Geo 升级准备

负责人:Geo 团队

团队任务:验证 Geo 安装中 PostgreSQL 新版本的升级程序;

五月至七月:捆绑 PostgreSQL 兼容性保证

基于 GitLab.com 生产稳定版本验证捆绑的 PostgreSQL 升级。这通常只在每年的主要版本发布时发生,大约在五月。

验证支持部署方法的捆绑 PostgreSQL 升级

负责人:构建团队

团队任务:

  1. 进行部署特定的测试,确保 PostgreSQL 与 Docker、Kubernetes 和 Omnibus 的兼容性
  2. 彻底测试自动升级路径;

为捆绑 PostgreSQL 升级提供可选支持

负责人:构建团队

团队任务:

  1. 在安装指南中记录不同部署方法的升级程序;
  2. 现有安装将通过 pg-upgrade 实用工具获得验证的升级路径,允许有计划和受控的 PostgreSQL 升级;

八月至十月:预生产准备和 GitLab.com 升级

升级 GitLab.com 环境。

负责人:数据库运维团队

团队任务:

  1. 升级两个 STG 数据库和两个 PRD 数据库,通常是 CI + SEC 或 Registry。具体数据库可能因年份而异;
  2. 升级剩余的两个 STG 数据库和两个 PRD 数据库。具体数据库可能因年份而异;
  3. 向跨职能团队传达 GitLab 已成功过渡到新的 PostgreSQL 版本;

十一月至一月:稳定版本集成

基于 GitLab.com 的稳定生产版本进行工具更新。

此升级将客户迁移到新的 PostgreSQL 版本,从而停止对他们当前使用的版本的支持。

自动升级自管理的单节点 Omnibus 实例

负责人:构建团队

团队任务:为非高可用性环境自动升级 PostgreSQL 版本;

将新版本的捆绑 PostgreSQL 设为默认版本

负责人:构建团队

团队任务:

  1. 稳定的捆绑 PostgreSQL 版本将成为所有新安装的默认数据库版本;
  2. 监控客户采用情况并解决出现的问题;
  3. 在升级史诗中记录任何相关问题;

云托管 PostgreSQL 更新

进行 GitLab Dedicated 云托管升级。

负责人:专用团队

团队任务:

  1. 升级 UAT:升级 USPubSec 和商业专用环境;
  2. 升级生产租户:升级生产 USPubSec 和商业专用环境;
  3. 代码清理和发布后:更新 Instrumentor 的默认 PostgreSQL 版本;