外部データベースのセットアップ
TeamCity は、ビルド履歴、ユーザー、ビルド結果、一部のランタイムデータを組み込みの SQL データベースに保存します。
現在使用されているデータベースは、 管理 | グローバル設定 ページに表示されます。 また、サーバーの起動時に teamcity-サーバー.ログ にも表示されます。 HSQL* は、内部データベースが使用中であることを意味します。 安定性とセキュリティのために、デフォルトの HSQL から別のマシンにある外部データベースに移行することをお勧めします。
デフォルトの内部データベース
TeamCity の初回実行時には、デフォルトで内部 HSQLDB データベースの使用が提案されます。 内部データベースは評価目的にのみ適しています。初期状態ですぐに使えるため、追加のセットアップは必要ありません。
ただし、 本番環境では、バックエンド TeamCity データベースとして外部データベースを使用することを強くおすすめします。 外部データベースは通常、信頼性が高く、より優れたパフォーマンスを提供します。内部データベースはクラッシュしてすべてのデータを失う可能性があります (たとえば、「ディスク容量不足」の状態)。 内部データベースは、大規模なデータセット (200 MB を超えるデータベースストレージファイル) では極端に遅くなる可能性があります。 内部データベースを使用している場合、パフォーマンスやデータベースのデータ損失に関する課題はサポート対象外であることに注意してください。 TeamCity サーバーに保存されたデータに依存し始めた時点で、 外部データベースへ移行してください。
外部データベースエンジンの選択
原則として、環境に最適で、組織内でより適切に維持 / 構成できるデータベースを使用する必要があります。 TeamCity がすべての サポート対象データベースで同様に機能するよう努めていますが、TeamCity が生成する高負荷の下では、その一部で課題が表面化する可能性があります。
必要なデータベース容量を見積もることもできます。
一般的な手順
TeamCity で使用する外部データベースを構成します (下記の データベース固有のセクションを参照)。
TeamCity サーバーの初回起動時のフォームを使用するか、 データベース接続設定を手動で構成して、データベースへの接続を構成します。
TeamCity がデータベーススキーマの所有権を持つことに注意してください。 データベース構造は初回起動時に作成され、新しい TeamCity バージョンへのアップグレード中に積極的に変更されます。 TeamCity が正常に動作している間、スキーマは変更されません。
TeamCity が使用するユーザーアカウントには、すべてのテーブルに対する通常の読み取り/書き込み権限に加えて、そのスキーマ内で新しいテーブルを作成し、既存のテーブルを変更および削除する権限が必要です。データベース用の JDBC ドライバーもダウンロードする必要がある場合があります。 ライセンス条項により、TeamCity には外部データベース用のドライバー
.jarファイルはバンドルされていません。 Java JDBC ドライバーをダウンロードし、そこから適切な.jarファイル (以下のドライバー固有のセクションを参照) を<TeamCity データディレクトリ>/ライブラリ/JDBCディレクトリに配置する必要があります。.jarファイルは、TeamCity の実行に使用する Java バージョン以下の Java バージョン用にコンパイルされている必要があります。 そうしないと、データベースドライバークラスに関連する "サポートされていない major.minor バージョン"エラーが発生する場合があります。
データベース固有の手順
以下のセクションでは、データベースサーバーと TeamCity サーバーで必要な構成について説明します。
MySQL
MySQL サーバー側
推奨データベースサーバー設定:
InnoDB ストレージエンジンを使用します。
utf8mb4 文字セット (または MySQL バージョンが 5.5.2 以前の場合は utf8)を使用します。
大文字と小文字を区別する照合を使用します。
TeamCity を実行している JVM のタイムゾーンと MySQL インスタンスのタイムゾーンが同じであることを、
my.cnfファイルを使用するか、OS レベルでタイムゾーンを構成して確認してください。TeamCity は主キーのないテーブルを管理するため、サーバーの sql_require_primary_key システム変数を
オフに設定する必要があります。
TeamCity で使用する MySQL ユーザーアカウントには、TeamCity データベースに対するすべての権限を付与する必要があります。 これは MySQL コンソールから以下の SQL コマンドを実行できます。
TeamCity サーバー側 (MySQL 使用)
JDBC ドライバのインストール
MySQL JDBC ドライバー(英語)をダウンロードします。 必ずサーバーと互換性のあるバージョンを使用してください。
Windows の場合、インストーラーを「カスタム」モードで実行し、「MySQL コネクター | Connector/J」を選択してスタンドアロンコネクターをインストールします。
ダウンロードしたアーカイブ (Linux) またはインストールフォルダー (Windows) から
mysql-connector-j-<バージョン>.jarを<TeamCity データディレクトリ>/ライブラリ/JDBCディレクトリにコピーします (既存のファイルがある場合は削除します)。 TeamCity のセットアップに進みます。
PostgreSQL
PostgreSQL サーバー側
PostgreSQL に TeamCity 用の空のデータベースを作成します。
データベースが UTF8 を使用するように設定してください。
TeamCity がデータベースを操作するために使用するユーザーアカウントに、このデータベースを変更する権限を付与します。
TeamCity は、テーブルに使用するスキーマを指定しません。 デフォルトでは、PostgreSQL は public スキーマ(英語)にテーブルを作成します。 TeamCity は他の PostgreSQL スキーマでも動作できます。 別のスキーマに切り替えるには、ユーザー名とまったく同じ名前のスキーマを作成します。 これは、 pgAdmin ツールまたは次の SQL を使用して実行できます。
スキーマは空にする必要があります(テーブルを含めることはできません)。
TeamCity サーバー側 (PostgreSQL 使用)
必要な PostgreSQL JDBC42 ドライバ(英語)をダウンロードし、 <TeamCity データディレクトリ>/ライブラリ/JDBC ディレクトリに配置します (既存のファイルがある場合は削除します)。 TeamCity のセットアップに進みます。
Oracle
Oracle サーバー側
TeamCity 用の Oracle ユーザーアカウント/スキーマを作成します。
データベースインスタンスの各国語キャラクタセットが UTF または Unicode であることを確認してください。
このデータベースを操作するために TeamCity が使用するアカウントのユーザーに、
CREATE SESSION権限とCREATE TABLE権限を付与します。
初回接続時に、TeamCity はユーザーのスキーマ内に必要なすべてのテーブルとインデックスを作成します。 (注: TeamCity は、アクセス可能であっても他のスキーマにアクセスしようとすることはありません。)
TeamCity ユーザーにテーブルスペースへアクセスするためのクォータがあることを確認してください。
TeamCity サーバー側 (Oracle 使用)
Oracle JDBC ドライバーを入手します。 サポートされているドライバーバージョンは 11.1 以降です。 Oracle JDBC ドライバーは Oracle サーバーと互換性がある必要があります。
次のファイルを配置します:ojdbc8.jar(またはデータベースのバージョンに応じてojdbc6.jar、ojdbc7.jar)orai18n.jar(ドライバーのバージョンに存在しない場合は省略できます)
を<TeamCity データディレクトリ>/ライブラリ/JDBCディレクトリに配置します (そこに既存のファイルがある場合は除去してください)。
ドライバーは Oracle サーバーのインストール環境で探すことを強くお勧めします。 必要に応じて、ファイルについて DBA に問い合わせてください。 または、Oracle JDBC ドライバーを Oracle の Web サイトからダウンロードしてください。
TeamCity のセットアップに進みます。
Microsoft SQL サーバー
詳細な手順については、 専用ページを参照してください。 現在のセクションでは、セットアップに必要な重要な詳細について説明します。
MS SQL サーバー側
新しいデータベースを作成します。 プライマリ照合として、ロケールに対応する大文字と小文字を区別する照合(
_CS_ASで終わる照合名)を使用してください。TeamCity ユーザーを作成し、そのユーザーがデータベースの所有者であることを確認します (ユーザーに
dbo権限を付与します)。これにより、そのユーザーはデータベーススキーマを変更できるようになります。 SSL 接続の場合は、MS SQL サーバーのバージョンと TeamCity の Java バージョンに互換性があることを確認してください。 SQL サーバーの最新バージョンを使用することをお勧めします。サーバーの使用頻度に応じて、十分なトランザクションログスペースを割り当てます。 推奨されるセットアップは 1GB 以上です。
SQL Server ブラウザーが実行されていることを確認してください。
SQL Server インスタンスに対して TCP/IP プロトコルが有効になっていることを確認してください。
TeamCity サーバー側 (MS SQL 使用)
マイクロソフトダウンロードセンターから Microsoft JDBC ドライバー v12.6+ (
sqljdbc_12.6.xパッケージ)をダウンロードします。ダウンロードしたパッケージを一時ディレクトリに解凍します。 ダウンロードしたパッケージの
mssql-jdbc-<version>.jre11.jarを<TeamCity データディレクトリ>/ライブラリ/JDBCディレクトリにコピーします (存在する場合は削除します)。 MS SQL 統合セキュリティ (Windows 認証) では、 手順に従ってドライバーパッケージからsqljdbc_auth.dllをインストールする必要があります。TeamCity のセットアップに進みます。
jTDS ドライバー
Unicode 文字の使用に関する既知の問題があるため、jTDSJDBC ドライバーの使用はお勧めしません。
ドライバーを使用する場合(jtds テキストは database.properties の 接続 URL に表示されます)、ネイティブドライバーを切り替えることを強くお勧めします。
データベースを含む サーバーバックアップを作成します。
上記のセクションで説明したように、サーバーを停止し、ネイティブ MicrosoftJDBC ドライバーを使用するようにサーバーを構成します。
データベースをバックアップから新しい MSSQL データベースに復元します。
サーバーを実行します。
データベース接続の構成
プロパティファイル
データベース接続設定は、 <TeamCity データディレクトリ>/config/データベース.properties ファイルに保存されます。 このファイルは Java プロパティファイル(英語)です。 このファイルを変更して、データベース接続に必要なプロパティを指定できます。
サポートされているすべてのデータベースには、データベース固有のプロパティを持つ テンプレートファイルが <TeamCity データディレクトリ>/設定 ディレクトリにあります。 ファイルは database.<データベースタイプ>.properties.dist 命名形式になっており、必要な設定の参照として使用できます。
TeamCity はデータベース接続プールに Apache DBCP を使用します。 設定プロパティの詳細については、 Apache Commons のドキュメント(英語)を参照してください。
環境変数
主なデータベース接続設定は、TeamCity サーバーの環境で環境変数を設定することで定義できます。 環境変数は、 database.properties ファイルのプロパティの代わりに (またはプロパティに加えて) 使用できます。
環境変数を使用してデータベース接続を構成すると、次のシナリオで役立ちます。
database.propertiesファイルを定義せずに TeamCity サーバーを起動します。代わりに
TEAMCITY_DB_PASSWORD環境変数を設定することで、database.propertiesファイル内のデータベースパスワードの公開を回避します。
変数 | 説明 |
|---|---|
| データベースの JDBC 接続文字列。例:
|
| データベースへの接続に使用するユーザー名 |
| データベースへの接続に使用するパスワード |
環境変数は、 database.properties ファイル内の対応するプロパティよりも優先されることに注意してください。
TEAMCITY_DB_URLは接続 URLをオーバーライドしますTEAMCITY_DB_USERはconnectionProperties.userをオーバーライドしますTEAMCITY_DB_PASSWORDはconnectionProperties.passwordをオーバーライドします