备份与恢复

术语

术语描述
PGPostgreSQL 数据库,由 SonarQube 用于存储核心数据
ESElasticsearch 搜索引擎,由 SonarQube 用于搜索

范围

本文档适用于 SonarQube 9.9.5 及以上版本。

WARNING

本文档已针对 SonarQube 9.9.5 进行了验证。虽然理论上这些程序应适用于版本 25.1.0,但尚未在该版本中进行实际验证。如果您使用 SonarQube 25.1.0,请先在非生产环境中进行测试。

概述

SonarQube 数据主要由两部分组成:

  1. PostgreSQL 数据库数据(核心数据)
  2. Elasticsearch 数据(搜索数据)

由于 Elasticsearch 数据可以通过数据库重新生成,因此我们只需备份 PostgreSQL 数据库以确保数据安全。

备份

根据您使用的 PostgreSQL 数据库类型,有两种备份方法:

  • 如果使用平台提供的 PG 实例(推荐在部署 SonarQube 实例时):
    • 您可以直接使用平台内置的数据库备份功能
    • 支持手动和定时自动备份
    • 操作简单,用户体验良好
  • 如果使用自建的 PG 实例,则需要自己完成备份

方法 1:备份平台提供的 PostgreSQL 实例(推荐)

如果您使用平台提供的 PostgreSQL 实例,可以直接使用平台的备份功能:

  1. 进入数据服务视图
  2. 找到您的 PostgreSQL 实例
  3. 打开 备份与恢复 标签
  4. 按照页面提示配置备份

平台 PG 实例支持自动备份,可以在备份配置过程中启用。具体操作方法,请参阅 Platform PG Backup and Recovery 文档。

完成备份配置后,您可以:

  1. 点击 创建备份 进行即时备份
  2. 在备份记录中检查备份状态

方法 2:备份自建 PostgreSQL 实例

如果使用自建数据库,您需要使用 pg_dump 工具进行备份。以下是基本的操作步骤:

pg_dump -U postgres -h 127.0.0.1 -p 5432 -d sonar -f sonar.dump

参数说明:

参数描述
-U postgres数据库用户名
-h 127.0.0.1数据库地址
-p 5432数据库端口
-d sonar数据库名称
-f sonar.dump备份文件名

提示:您可以使用 crontab 来实现自动定时备份。

恢复

数据恢复需要两个步骤:

  1. 恢复 PostgreSQL 数据库
  2. 部署一个新的 SonarQube 实例并将其连接到恢复的数据库

重要提示:建议创建一个新的 SonarQube 实例,而不是修改原始实例的数据库配置,这可以避免因操作失误导致数据丢失。

数据库恢复

恢复平台 PostgreSQL 实例

  1. 进入数据服务视图
  2. 找到目标 PostgreSQL 实例
  3. 打开 备份与恢复 标签
  4. 按照 数据库恢复 向导完成恢复

注意:恢复操作将创建一个新的数据库实例。

恢复自建 PostgreSQL 实例

自建 PG 实例需要自己完成恢复操作。以下恢复命令仅供参考:

命令参数说明:

参数描述
-U postgres数据库用户名
-h 127.0.0.1数据库地址
-p 5432数据库端口
-d sonar_new新数据库名称
-f sonar.dump备份文件名
  1. 创建一个新数据库:
psql -U postgres -h 127.0.0.1 -p 5432 -c "CREATE DATABASE sonar_new"
  1. 导入备份数据:
psql -U postgres -h 127.0.0.1 -p 5432 -d sonar_new < sonar.dump
  1. 验证恢复结果:
psql -U postgres -h 127.0.0.1 -p 5432 -d sonar_new -c "\dt"

如果可以看到数据表的列表,则恢复成功:

关系列表 Schema | Name | Type | Owner --------+---------------------------+-------+---------- public | active_rule_parameters | table | postgres public | active_rules | table | postgres ...

部署新 SonarQube 实例

请参考 SonarQube 部署文档以创建新的 SonarQube 实例。

请注意以下关键点:

  1. 新部署的 SonarQube 版本必须与原始实例相同版本
  2. 在部署时,需要正确配置数据库连接信息,即您在数据库恢复步骤中创建的数据库

有关配置数据库访问凭据的方法,请参阅 SonarQube 部署文档。