TeamCity On-Premises 2026.2 Help

AWS Aurora データベースクラスターの使用

このページでは、TeamCity データベースサーバーとして Amazon Aurora クラスターを使用する方法について詳しく説明します。

TeamCity がデータベースサーバーとして クラスターエンドポイント を指す AWS Aurora クラスターを使用する場合、AWS Aurora クラスターがフェイルオーバーすると何が起こるかを理解しておくことが重要です。

両方の AWS Aurora DB インスタンスが再起動され(そのため、短時間 TeamCity はクラスターへの接続を完全に失い)、

  • 元の DB インスタンスは読み取り専用モードで起動されます(新しいリーダーインスタンス)。

  • 前のフェールオーバーインスタンスは新しいライターであり、クラスターエンドポイント DNS レコードは新しいライターインスタンスを指すように変更されます。

デフォルトでは、TeamCity JVM は DNS 名のルックアップをキャッシュします。つまり、DNS キャッシュの有効期限が切れるまで、TeamCity は元の DB インスタンスに接続されたままになります。 その結果、TeamCity 側のデータベース接続プールに、新しいリーダーへの接続が追加されます。

TeamCity の JVM 固有のキャッシュの有効期限が切れ、無効な接続がプールから削除されるまでには、しばらく時間がかかります。

一般的な推奨事項

フェイルオーバークラスターを使用する場合は、TeamCity での JVM 固有の DNS キャッシュ時間を TTL を 60 に設定して 短縮することをお勧めします:

  1. 環境変数-Dsun.net.inetaddr.ttl=60 JVM オプションを追加します。

  2. 変更を有効にするには、TeamCity を再起動します。

TeamCity を新しいライターに強制的に接続する

TeamCity を新しいライターに手動または自動で強制的に接続させることができます。

手動で で接続を強制するには:

  • 新しい DB リーダーインスタンスをもう一度再起動します。再起動には最大 2 分かかりますが、これは DNS キャッシュの有効期限が切れ、無効な接続がプールから削除されるのに十分な時間です。

  • または、TeamCity を手動で再起動すると、すべての接続が新たに作成されます。

新しいプライマリインスタンスがアップして実行中になり次第、TeamCity に 自動的に 接続させるには:

  1. データベース接続プールが特別な検証クエリを使用するように設定します。これにより、DB インスタンスへの接続は使用前、使用後、またはその両方でテストされ、読み取り専用データベースへの接続が検出された場合は、その接続がプールから削除されます。
    そのため、次の行を <TeamCity データディレクトリ>/config/ database.properties に追加します:
    Aurora MySQL の場合:

    testOnBorrow=true testOnReturn=true testWhileIdle=true timeBetweenEvictionRunsMillis=60000 validationQuery=select case when @@read_only + @@innodb_read_only \= 0 then 1 else (select table_name from information_schema.tables) end as `1`

    Aurora PostgreSQL の場合:

    testOnBorrow=true testOnReturn=true testWhileIdle=true timeBetweenEvictionRunsMillis=60000 validationQuery=select case when not pg_is_in_recovery() then 1 else random() / 0 end
  2. TeamCity サーバーを再起動します。 その後、指定された検証クエリは、すべての接続がプールから借り出されるか返却されるたび、およびアイドル状態の接続については 1 分ごと(60000 ミリ秒)に実行され、読み取り専用データベースへの接続ごとにエラーを発生させます。

Aurora MySQL クラスターへの SSL 接続の使用

Amazon Aurora MySQL バージョン 2(MySQL 5.7 以降と互換性あり)以降では、 対応するクエリ を実行することで、TeamCity が DB クラスターへの安全な SSL 接続を使用しているかどうかを確認できます。 必要に応じて、Amazon サーバー側で 接続モード(英語)を変更できます。

Amazon Aurora MySQL バージョン 1(MySQL 5.6 以前と互換性あり)を使用している場合、 tcpdump のようなパケットアナライザーでトラフィックを調べることで、TeamCity と DB クラスター間の接続が安全かどうかを確認できます。
SSL 接続のモードを変更するには(たとえば、強制または無効にする場合)、対応する sslMode パラメーターを MySQL Connector/J JDBC ドライバーに渡します。そのためには、 <TeamCity データディレクトリ>/config/database.properties ファイルに追加します:

  • 別の行を追加します。

    connectionProperties.sslMode=<value>

    または

  • 接続文字列に ?sslMode=<値> 引数を追加します。 例:

    connectionUrl=jdbc:mysql://<hostname>:3306/<dbname>?sslMode=<value>

Connector/J リファレンス / 構成プロパティ(英語)のサポートされている接続モード値のリストを参照してください。

2026 年 9 月 11 日