TeamCity 2020.2 ヘルプ

外部データベースの設定

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/(英語) から MySQLJDBC ドライバーをダウンロードします。サーバーと互換性のあるバージョンを使用していることを確認してください。MySQL サーバーのバージョンが 5.5 以降の場合、JDBC ドライバーのバージョンは少なくとも 5.1.23 である必要があります。8 を超えるバージョンの場合は、ドライバーバージョン 8 を使用する必要があります。

  2. ダウンロードしたアーカイブから mysql-connector-java-*-bin.jar<TeamCity Data Directory>/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 を設定して、PostgreSQLJDBC ドライバーでこの問題(英語)に対処します。

Oracle

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

Oracle サーバー側

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

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

  • このデータベースを操作するために TeamCity がアカウントを使用するユーザーに CREATE SESSIONCREATE TABLE 権限を付与します。

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

TeamCity サーバー側 (Oracle との)

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

  • ojdbc8.jar (またはデータベースのバージョンに応じて ojdbc6.jarojdbc7.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 Download Center (英語) から Microsoft JDBC driver 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 のドキュメント(英語)を参照してください。