TeamCity 2020.1ヘルプ

外部データベースの設定

TeamCityはビルド履歴、ユーザー、ビルド結果、いくつかのランタイムデータをSQLデータベースに保存します。手動バックアップと復元ページのどこに格納されているかの説明も参照してください。

本番用に推奨されていない内部データベースを使用してTeamCityを評価した場合は、外部データベースへの移行を参照してください。

現在使用中のデータベースは管理 | グローバル設定ページのデータベースフィールドに表示され、またサーバー起動時のteamcity-server.logにも表示されます。 HSQL* は、内部データベースが使用中であることを意味します。

デフォルトの内部データベース

最初のTeamCityの実行時には、デフォルトでHSQLDBデータベースエンジンに基づく内部データベースを使用することをお勧めします。内部データベースは評価目的にのみ適しています。すぐに動作し、追加の設定は必要ありません。

ただし、実稼働環境では外部データベースをバックエンドTeamCityデータベースとして使用することを強くお勧めします。外部データベースは通常、信頼性が高く、パフォーマンスが向上します。内部データベースはクラッシュし、すべてのデータが失われる可能性があります(「ディスク容量不足」の場合など)。また、内部データベースは大きなデータセットでは極端に遅くなるかもしれません(たとえば、200Mbを超えるデータベースストレージファイル)。また、内部データベースを使用している場合、弊社のサポートはパフォーマンスまたはデータベースデータ損失の課題をカバーしていません。

つまり、本番用TeamCityインスタンスに内部HSQLDBデータベースを決して使用しないでください。TeamCityサーバーに保存されたデータに頼り始める瞬間外部データベースに移行します

外部データベースエンジンの選択

原則として、自分の環境により適したデータベースを使用し、組織内でより適切に保守/構成できるようにする必要があります。サポートされているすべてのデータベースでTeamCityが同等に機能するように努力していますが、TeamCityによる負荷が高い場合、課題が発生することがあります。

必要なデータベース容量を引用もることもできます。

サポートされているデータベース

TeamCityは以下のデータベースをサポートします。

  • MySQL

  • PostgreSQL

  • Oracle

  • MS SQL

一般的な手順

  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サーバー側

推奨データベースサーバー設定:

TeamCityによって使用されるMySQLユーザーアカウントには、TeamCityデータベースに対するすべての権限が付与されている必要があります。これはMySQLコンソールから以下のSQLコマンドを実行することで実行できます。

create database <database-name> collate utf8_bin; 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. http://dev.mysql.com/downloads/connector/j/(英語)からMySQL JDBCドライバーをダウンロードしてください。サーバーと互換性のあるバージョンを使用していることを確認してください。8より上のバージョンでは、ドライババージョン8を使用する必要があります。MySQLサーバーのバージョンが5.5以降の場合、JDBCドライバーのバージョンは少なくとも5.1.23でなければなりません。

  2. ダウンロードしたアーカイブから mysql-connector-java-*-bin.jar を<TeamCityデータディレクトリ> / lib / jdbcディレクトリに置きます(存在する場合は、そこに既存のファイルを削除します)。TeamCityセットアップに進みます。

PostgreSQL

サポートされるバージョン

PostgreSQLサーバー側

  1. PostgreSQLでTeamCity用の空のデータベースを作成します。
    • データベースがUTF8を使用するように設定してください。

    • データベースを操作するためにTeamCityによって使用されるユーザーアカウントにこのデータベースを変更するための権限を付与します。

  2. PostgreSQLサーバーの設定に関する推奨事項も参照してください

TeamCityは、テーブルに使用されるスキーマを指定しません。デフォルトでは、PostgreSQLは「public」 スキーマ(英語)にテーブルを作成します (「public」はスキーマの名前です)。TeamCityは、他のPostgreSQLスキーマでも機能します。別のスキーマに切り替えるには、次の手順を実行します。

ユーザー名とまったく同じ名前のスキーマを作成します。これは、pgAdmin ツールを使用するか、次のSQLを使用して実行できます。

create schema teamcity authorization teamcity;

スキーマは空にする必要があります(テーブルを含めることはできません)。

TeamCityサーバー側 (PostgreSQLとの連携)

必要なPostgreSQL JDBC42ドライバ(英語)をダウンロードして、<TeamCityデータディレクトリ> / lib / jdbcディレクトリに置きます(存在する場合は、そこに既存のファイルを削除します)。TeamCityセットアップに進みます。

2018.1.2より前のTeamCityの場合、データベースプロパティファイルconnectionProperties.autosave=conservative を設定して、PostgreSQL JDBCドライバーでこの課題(英語)に対処します。

Oracle

サポートされるバージョン

Oracleサーバー側

TeamCity用のOracleユーザーアカウント/スキーマを作成します。

  • データベースインスタンスの各国語キャラクタセットがUTFまたはUnicodeであることを確認してください。

  • このデータベースを操作するためにTeamCityによって使用されるアカウントを持つユーザーに CREATE SESSION , CREATE TABLE 許可を付与します。

TeamCityは最初の接続で、ユーザーのスキーマに必要なすべてのテーブルとインデックスを作成します。(メモ: TeamCityは他のスキーマがアクセス可能であってもそれらにアクセスしようとしません)

TeamCityサーバー側 (Oracleとの)

1. Oracle JDBCドライバーを入手してください。サポートされているドライバーのバージョンは11.1以上です。次のファイルを配置します。

  • ojdbc8.jar (またはデータベースのバージョンに応じて ojdbc6.jar , ojdbc7.jar )

  • orai18n.jar (ドライババージョンにない場合は省略可能)を<TeamCityデータディレクトリ> / lib / jdbcディレクトリに追加します(存在する場合は既存のファイルを削除します)。

Oracleサーバーのインストール場所にドライバを配置することを強くお勧めします。必要に応じて、ファイルについてDBAに連絡してください。または、Oracle Webサイト(英語)からOracle JDBCドライバをダウンロードしてください。ドライバのバージョンがOracleサーバーと互換性があることを確認してください。

2. TeamCityセットアップに進みます。

Microsoft SQL Server

サポートされるバージョン

詳しい手順については、専用のページを参照してください。現在のセクションでは、セットアップに必要な主な詳細情報を提供します。

MS SQLサーバー側

  1. 新しいデータベースを作成します。プライマリ照合として、ロケールに対応する大文字と小文字を区別する照合( _CS_ASで終わる照合名)を使用してください。

  2. TeamCityユーザーを作成し、このユーザーがデータベースの所有者であることを確認します(ユーザーにdbo権限を付与します)。これにより、ユーザーはデータベーススキーマを変更することができます。SSL接続の場合は、MS SQLサーバーのバージョンとTeamCityバージョンのjavaの間に互換性があることを確認してください。最新のSQLサーバーを使用することをお勧めします。

  3. サーバーの使用頻度に応じて、十分なトランザクションログ領域を割り当てます。推奨設定は1Gb以上です。

  4. SQL Serverブラウザが起動していることを確認してください。

  5. TCP / IPプロトコルがSQL Serverインスタンスに対して有効になっていることを確認してください。

TeamCityサーバー側 (MS SQL)

  1. Microsoft ダウンロードセンター(英語)からMicrosoft JDBCドライバーv6.4+(英語)sqljdbc_6.*.x パッケージ)をダウンロードしてください。

  2. ダウンロードしたパッケージを一時ディレクトリに解凍します。

  3. ダウンロードしたばかりのパッケージから mssql-jdbc-*.jre8.jar を<TeamCityデータディレクトリ> / lib / jdbcディレクトリにコピーします(存在する場合は、そこに既存のファイルを削除します)。MS SQL統合セキュリティ(Windows認証)を使用するには、指示に従ってドライバパッケージから sqljdbc_auth.dll をインストールする必要があります。

  4. TeamCityセットアップに進みます。

jTDSドライバー

jTDS JDBCドライバを使用することはお勧めできません。ドライバの使用中にUnicode文字を使用することに関する少なくとも既知の課題があります。

ドライバを使用する場合(jtds テキストは database.propertiesconnectionUrl に表示されます)、ネイティブドライバを切り替えることを強くお勧めします。

スイッチの適切な手順は次のとおりです。

  • データベースを含むサーバーバックアップを作成する

  • 上記のセクションで説明したように、サーバーを停止し、ネイティブのMicrosoft JDBCドライバーを使用するようにサーバーを構成します。

  • データベースをバックアップから新しいMS SQLデータベースに復元する

  • サーバーを実行する

データベース構成プロパティ

データベース接続設定は、<TeamCityデータディレクトリ> /config/database.propertiesファイルに保存されます。ファイルはJava プロパティファイルです(英語)。これを変更して、データベース接続に必要なプロパティを指定できます。

サポートされているすべてのデータベースに対して、<TeamCityデータディレクトリ> / configディレクトリにデータベース固有のプロパティを持つテンプレートファイルがあります。ファイルの命名形式は database.<database_type>.properties.dist であり、必要な設定の参照として使用できます。

TeamCityはデータベース接続プーリングにApache DBCPを使用します。構成プロパティの詳細な説明については、Apache Commonsのドキュメント(英語)を参照してください。