TeamCity On-Premises 2024.03 Help

从备份中恢复 TeamCity 数据

TeamCity 管理员能够通过 TeamCity 用户界面或手动使用 maintainDB 命令行工具来恢复 备份的数据。

在还原之前

您可以将备份的数据恢复到同一数据库或不同的数据库中;从 / 到任何 支持的数据库 (例如,您可以将 HSQL 数据库的数据恢复到 PostgreSQL 数据库,也可以将 PostgreSQL 数据库的备份恢复到新的 PostgreSQL 数据库)。

可以使用 TeamCity 的更新版本来恢复由任何先前的 TeamCity 版本创建的备份(前提是 TeamCity 版本晚于 6.0)。

在恢复大型数据库时,您可能希望配置特定于数据库的设置以使批量数据更改更快(例如将 SQL Server 的 "Recovery Model" 设置为 "Simple")。 请咨询您的数据库管理员获取更多详细信息。

一份 TeamCity 备份文件 不包含构建的工件。 为备份构建日志和工件,手动将 artifact directory(默认为 <TeamCity 数据目录>/system/artifacts )内容从旧位置复制到新位置。 数据 system/artifacts 的一般兼容性规则是,由旧版 TeamCity 创建的文件可以被新版读取,但反过来可能不一定成立。

当启用 外部制品存储 时,TeamCity 数据目录的 制品目录 将包含制品映射的元数据,因此请确保对它们进行了恢复。

请参阅 TeamCity Data Directory 描述中的目录详细信息。

请注意,在服务器启动之前复制工件非常重要,因为在从备份中恢复的服务器启动时,会自动启动重建构建元数据。 如果在索引过程中丢失了一些工件,可能会导致 TeamCity 服务器的一部分无法使用(例如,一个 NuGet 源)。 如果您在服务器启动后(或在服务器启动前未完成复制工件)复制了工件,您可能需要手动 重新索引构建元数据,并等待重新索引完成。

执行还原

TeamCity 可以自动恢复备份数据到 一个新的 TeamCity 安装(例如,创建一个现有服务器的副本)。 这个过程依赖于 maintainDB 工具,但会在后台执行所有必要的操作:

  1. 在浏览器中打开 TeamCity URL(默认情况下,对于 exe 安装为 http://localhost/ ,对于 tar.gz 为 http://localhost:8111/)。

  2. 在 TeamCity 首次启动 页面上,输入 数据目录 的路径,然后点击 从备份还原。

  3. 在 TeamCity 服务器上输入备份目录的绝对路径,或者上传一个包含备份数据的 ZIP 归档文件。

  4. 选择目标数据库。 如果您使用外部数据库,请配置其地址和凭证。

  5. 继续进行恢复。

TeamCity 将恢复数据并显示 maintainDB 实用程序日志。 如果备份数据的版本早于当前版本,TeamCity 将建议您进行升级。

为了将备份的文件恢复到 现有的 TeamCity 安装,或者克服自动恢复的限制,手动使用 maintainDB 工具。 这部分只描述了 一部分 的 maintainDB 选项。 要获取所有可用选项的完整列表,请在没有参数的情况下从命令行运行 maintainDB。 另请参见 maintainDB 启动选项。

通过 maintainDB 从备份文件中进行恢复:

  1. 从 tar.gz 或 .exe 安装包中安装 TeamCity 服务器。 不要启动 TeamCity 服务器。

  2. 创建一个新的空的 TeamCity 数据目录。

  3. 选择以下选项之一:

    • 要将备份还原到一个新的外部数据库中,创建并配置一个空数据库,配置一个与数据库设置的 database.properties 文件以便稍后传递给 恢复 命令,然后将其放置在新创建的TeamCity 数据目录的 /配置 子目录中,或者放在您的文件系统的 TeamCity 数据目录之外的任何地方。

    • 要将数据恢复到备份创建的相同数据库中,请继续下一步。

  4. 将所需的 数据库驱动程序 放入新创建的 TeamCity Data Directory 目录的 lib/jdbc 子目录中。

  5. 使用位于 <TeamCity 安装目录>/bin 目录中的 maintainDB 工具来运行 恢复 命令:

    a. 要将备份恢复到一个 新的外部数据库中

    • 如果 database.properties 文件位于 TeamCity 数据目录中:

    maintainDB.[cmd|sh] restore -A <absolute path to the newly created TeamCity Data Directory> -F <path to the TeamCity backup file> -T <config/database.properties>
    • 如果 database.properties 文件位于 TeamCity 数据目录之外:

    maintainDB.[cmd|sh] restore -A <absolute path to the newly created TeamCity Data Directory> -F <path to the TeamCity backup file> -T <absolute path to the database.properties file of the target database on the file system outside data dir>

    b. 要将数据恢复到备份创建自的相同数据库:

    maintainDB.[cmd|sh] restore -A <absolute path to the newly created TeamCity Data Directory> -F <path to the TeamCity backup file>

    c. 将备份恢复到内部数据库:

    maintainDB.[cmd|sh] restore -A <absolute path to the newly created TeamCity Data Directory> -I -F <path to the TeamCity backup file>
  6. 如果过程成功完成,为了完成恢复,您需要从旧目录复制过 <TeamCity 数据目录>/system/artifacts。 该目录储存工件,但它们未被包含在备份文件中。

关于 恢复 命令选项的注释:

  • 如果您已设置 TEAMCITY_DATA_PATH 环境变量,那么可以省略 -A 参数。

  • -F 参数可以是绝对路径,也可以是相对于 <TeamCity 数据目录>/system/backup 目录的路径。

  • -T 参数必须指向在步骤 3 中创建的 database.properties 文件。

  • 如果没有指定 -T 参数,并且新创建的 <TeamCity 数据目录>/config 和备份文件中存在 database.properties 文件,则数据库会使用 <TeamCity 数据目录>/config 中的属性文件进行恢复。

  • 默认情况下,如果没有指定除 -F 之外的其它选项,所有备份范围将从备份文件中恢复。 要从备份文件中只还原特定范围,请使用 maintainDB 工具的相应选项: -D, -C, -U, -L 和 -P。

仅恢复数据库

在恢复数据库但保留较新的 TeamCity Data Directory 时,确保数据的一致性非常重要:

在将 TeamCity 数据库恢复到现有服务器之前,请确保 TeamCity 服务器未在运行。

要从备份文件中只恢复 TeamCity 数据库到现有服务器:

  1. 创建并配置数据库,将 database.properties 文件放入 TeamCity Data Directory(TeamCity 数据目录) 的 配置 子目录中。

  2. 确保所需的数据库驱动程序存在于 /lib/jdbc 子目录中。

  3. 使用位于 <TeamCity 数据目录>/bin 目录中的 maintainDB 工具(仅在 TeamCity .tar.gz 和 .exe 分发版中提供)。

  4. 如果备份中包含 补充数据,请删除 <TeamCity 数据目录>/system/pluginData 目录的内容(建议首先在另一个位置备份)。

  5. 使用 恢复 命令( -T 参数必须指向在第一步中创建的 database.properties 文件):

    maintainDB.[cmd|sh] restore -A <absolute path to TeamCity Data Directory> -F <path to the TeamCity backup file> -T <path to the database.properties file of the target database> -D
  6. 查看 maintainDB 工具控制台输出。 如果有要求,您可能需要手动复制 database.properties 文件。

  7. 删除 <TeamCity 数据目录>/system/caches 目录的内容。

在中断后恢复恢复

恢复过程可能会因以下原因被中断:

  • 文件系统或数据库中的空间不足

  • 对文件系统或数据库权限不足

当某一个表或索引无法被恢复时,就会发生中断,该情况会在 maintainDB 实用程序控制台输出中显示。
在恢复前,请手动从数据库中删除错误恢复的对象。

要在中断后恢复备份恢复,请运行带有所需选项和 --继续 选项的 maintainDB 实用程序,并执行 恢复 命令:

maintainDB.[cmd|sh] restore <all previously used restore options> --continue
最后修改日期: 16日 7月 2024年