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.gzhttp://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年