TeamCity On-Premises 2024.03 Help

设置外部数据库

TeamCity 将构建历史、用户、构建结果和一些运行时数据存储在 SQL 数据库中。 在此处查看存储数据的完整列表

当前使用的数据库显示在 Administration | Global Settings 页面上。 它还在服务器启动时的 teamcity-server.log 中提到。 HSQL* 意味着正在使用内部数据库。

默认内部数据库

在首次运行 TeamCity 时,默认建议使用内部 HSQLDB 数据库。 内部数据库仅适用于评估目的;它开箱即用,无需额外设置。

然而,我们强烈建议在生产环境中使用外部数据库作为后端 TeamCity 数据库。 外部数据库通常更可靠,性能更佳:内部数据库可能会崩溃并丢失所有的数据(例如,“磁盘空间不足” 的情况)。 内部数据库在处理大数据集(数据库存储文件超过200 MB)时可能会变得极其缓慢。 请注意,如果您使用的是内部数据库,我们的支持不包括任何性能或数据库数据丢失问题。 一旦您开始依赖存储在您的 TeamCity 服务器上的数据, 就迁移到外部数据库

选择外部数据库引擎

作为一般规则,您应使用最适合您的环境并且您的组织可以更好地维护/配置的数据库。 在我们努力确保 TeamCity 在所有支持的数据库下都能同样出色地运行的同时,可能在某些在 TeamCity 生成的高负载下的数据库中出现问题。

您可能还需要估计所需的数据库容量

一般步骤

  1. 配置外部数据库以供 TeamCity 使用(参见下面的 特定数据库部分)。

  2. 通过在 首次启动 TeamCity 服务器 的表单上或手动配置 数据库连接设置 来配置与数据库的连接。
    请注意,TeamCity 将对数据库模式拥有所有权。 数据库结构在首次启动时创建,并在升级至新的 TeamCity 版本期间积极修改。 在 TeamCity 正常运行时,模式不会发生变化。
    TeamCity 使用的用户帐户应具有在其模式中创建新表、修改和删除现有表的权限,除此之外,还应具有对所有表的常规读/写权限。

  3. 您可能还需要下载您的数据库的 JDBC 驱动程序。
    由于许可条款,TeamCity 并未捆绑外部数据库驱动程序的文件 .jar。 您需要下载 Java JDBC 驱动程序,并将相应的 .jar 文件(请参阅下方的驱动程序特定部分)放入 <TeamCity 数据目录>/lib/jdbc 目录中。
    请注意, .jar 文件应该为不晚于运行 TeamCity 的 Java 版本进行编译。 否则,您可能会遇到与数据库驱动类相关的“Unsupported major.minor version”错误。

特定数据库的步骤

以下部分描述了数据库服务器和 TeamCity 服务器所需的配置。

MySQL

在 MySQL 服务器端

推荐的数据库服务器设置:

  • 使用 InnoDB 存储引擎。

  • 使用 utf8mb4 字符集 (或者如果 MySQL 版本是 5.5.2 或更早版本的话,使用 utf8)。

  • 使用区分大小写的排序规则。

  • 确保运行 TeamCity 的 JVM 和 MySQL 实例的时区保持一致,您可以使用 my.cnf 文件,或者在操作系统级别配置时区。

  • 服务器的 sql_require_primary_key 系统变量必须设定为 关闭 ,因为 TeamCity 管理的表格没有主键。

  • 也请参阅关于 MySQL 服务器设置的建议

将被 TeamCity 使用的 MySQL 用户帐户必须被授予对 TeamCity 数据库的所有权限。 这可以通过在 MySQL 控制台中执行以下 SQL 命令来完成:

create database <database-name> collate utf8mb4_bin; -- or utf8_bin on MySQL 5.5.2 or earlier create user <user-name> identified by '<password>'; grant all privileges on <database-name>.* to <user-name>; grant process on *.* to <user-name>;

在 TeamCity 服务器端(配合 MySQL)

JDBC 驱动安装:

  1. 下载 MySQL JDBC driver。 确保使用与您的服务器兼容的版本。 如果 MySQL 服务器版本是 5.5 或更高版本,那么 JDBC 驱动程序版本应至少为 5.1.23。 对于版本8以上,应使用驱动版本8。

  2. 对于 Windows,以“自定义”模式运行安装程序,并选择“MySQL Connectors | Connector/J”以安装独立连接器。

  3. 将下载的存档(Linux)或安装文件夹(Windows)中的 mysql-connector-java-*-bin.jar 复制到 <TeamCity 数据目录>/lib/jdbc 目录中(如果存在任何文件,请先删除)。 继续进行 TeamCity 设置。

PostgreSQL

在 PostgreSQL 服务器端

  1. 在 PostgreSQL 中为 TeamCity 创建一个空的数据库。

    • 确保将数据库设置为使用 UTF8。

    • 授予 TeamCity 用户帐户修改此数据库的权限,该用户帐户被用于与数据库工作。

  2. 另请参阅 PostgreSQL 服务器设置的建议

TeamCity 并未明确指定将为其表格使用哪种模式。 默认情况下,PostgreSQL 会在 public schema 中创建表。 TeamCity 也可以与其他 PostgreSQL 架构一起使用。 要切换到不同的模式,请创建一个与用户名完全相同的模式。 这可以使用 pgAdmin 工具来完成,或使用以下的 SQL:

create schema teamcity authorization teamcity;

模式必须为空(不得包含任何表格)。

在 TeamCity 服务器端(使用 PostgreSQL)

下载所需的 PostgreSQL JDBC42 驱动程序 并将其放入 <TeamCity 数据目录>/lib/jdbc 目录中(如有任何现有文件,请先删除)。 继续进行 TeamCity 设置。

Oracle

在 Oracle 服务器端

为 TeamCity 创建一个 Oracle 用户帐户 / 架构。

  • 确保数据库实例的国家字符集是 UTF 或 Unicode。

  • 授予 创建会话创建表格 权限给一个用户。这个用户的账号将被 TeamCity 用于与这个数据库进行操作。

在首次连接时,TeamCity会在用户的模式中创建所有必要的表格和索引。 (注意:TeamCity 从不尝试访问其他架构,即使它们是可访问的。)

确保 TeamCity 用户有权限访问表空间。

在 TeamCity 服务器端(使用 Oracle)

  1. 获取 Oracle JDBC 驱动。 支持的驱动程序版本为 11.1 及以后版本。 Oracle JDBC 驱动程序必须与您的 Oracle 服务器兼容。
    请放置以下文件:

    • ojdbc8.jar (或 ojdbc6.jarojdbc7.jar ,根据您的数据库版本而定)

    • orai18n.jar (如果在驱动版本中缺失,可以省略)
      导入至 <TeamCity 数据目录>/lib/jdbc 目录(如果有的话,删除那里的现有文件)。
      强烈建议您在 Oracle 服务器安装中定位驱动程序。 如果需要,联系您的 DBA 获取文件。 或者,从 Oracle 网站 下载 Oracle JDBC 驱动程序。

  2. 继续进行 TeamCity 设置。

Microsoft SQL Server

要查看逐步指导,请参见 专门页面。 当前部分提供了设置所需的关键细节。

在 MS SQL Server 端

  1. 创建一个新的数据库。 作为主要的排序约定,请使用与您的地区相对应的区分大小写的排序方式(排序名称以 _CS_AS 结尾)。

  2. 创建一个 TeamCity 用户,并确保此用户是数据库的所有者(授予用户 dbo 权限),这将赋予用户修改数据库架构的能力。 对于 SSL 连接,请确保 MS SQL 服务器的版本和 TeamCity 的 Java 版本兼容。 我们建议使用 SQL 服务器的最新版本。

  3. 根据服务器的使用强度,分配足够的事务日志空间。 我们建议的设置不低于 1 GB。

  4. 确保 SQL Server 浏览器正在运行。

  5. 确保已为 SQL Server 实例启用了 TCP/IP 协议。

在 TeamCity 服务器端(配合 MS SQL)

  1. 下载 Microsoft JDBC 驱动程序v8.4+sqljdbc_8.4.x 包)从 Microsoft 下载中心

  2. 将下载的包解压到一个临时目录中。 将刚刚下载的包中的 mssql-jdbc-*.jre11.jar 复制到 <TeamCity 数据目录>/lib/jdbc 目录中(如果有的话,删除那里现有的文件)。 MS SQL 集成安全性(Windows 认证)需要按照 说明 从驱动程序包中安装 sqljdbc_auth.dll

  3. 继续进行 TeamCity 设置。

jTDS 驱动

不建议使用 jTDS JDBC 驱动程序,因为它存在已知的使用 Unicode 字符的问题。

如果您使用的是驱动程序( jtds 文本出现在 connectionUrldatabase.properties 中),强烈建议您切换至本地驱动程序:

  1. 创建服务器 backup,包括数据库。

  2. 停止服务器并配置服务器,使其使用在上述部分中提到的原生 Microsoft JDBC 驱动程序。

  3. 将备份恢复到新的 MS SQL 数据库中。

  4. 运行服务器。

配置数据库连接

属性文件

数据库连接设置存储在 <TeamCity Data Directory>/config/database.properties 文件中。 该文件是一个 Java properties 文件。 您可以修改它以指定数据库连接所需的属性。

对于所有支持的数据库,都有带有数据库特定属性的 模板文件,位于 <TeamCity 数据目录>/config 目录中。 这些文件使用 数据库.<数据库类型>.属性.dist 命名格式,可以作为所需设置的参考。

TeamCity 使用 Apache DBCP 进行数据库连接池管理。 请参考 Apache Commons 文档 以获取配置属性的详细说明。

环境变量

主数据库连接设置可以通过在 TeamCity 服务器的环境中设置环境变量来定义。 环境变量可以用来替代(或者是补充) database.properties 文件中的属性。

使用环境变量配置数据库连接在以下情况中可能会很有用:

  • 在未定义 database.properties 文件的情况下启动 TeamCity 服务器。

  • 避免在 database.properties 文件中暴露数据库密码,而是通过设置 TEAMCITY_DB_PASSWORD 环境变量来代替。

变量

描述

TEAMCITY_DB_URL

数据库的 JDBC 连接字符串,例如:

  • jdbc:postgresql://localhost:5432/teamcityDB

  • jdbc:mysql://localhost:3306/teamcityDB

TEAMCITY_DB_USER

用于连接数据库的用户名

TEAMCITY_DB_PASSWORD

连接到数据库的密码

请注意,环境变量优先于 database.properties 文件中的相应属性:

  • TEAMCITY_DB_URL 覆盖了 connectionUrl

  • TEAMCITY_DB_USER 覆盖了 connectionProperties.user

  • TEAMCITY_DB_PASSWORD 覆盖了 connectionProperties.password

最后修改日期: 16日 7月 2024年