外部データベースへの移行
この記事では、TeamCity データをある種類のデータベースから別の種類のデータベースに移行するために必要な手順について説明します。 TeamCity の初回起動時から外部データベースを使用する方法の詳細、および外部データベースに関する一般情報とデータベース固有の構成手順については、 この記事を参照してください。
移行の最も一般的なケースは、デフォルトの内部データベースで TeamCity を評価し、本番環境で使用するために TeamCity インストールを外部データベースに切り替える必要がある場合です。 推奨される手順は、ある外部データベースから別のデータベースに切り替える場合にも適用できます。 たどって同じ型のデータベースサーバー間を移動することもできますが、その場合、データベース固有のデータ転送が通常より望ましいです。
データを新しいデータベースに移行するには、いくつかの方法があります。
切り替え 、データ移行なし: ビルド構成設定は保持されますが、過去のビルドデータやユーザーは保持されません。
完全移行: サードパーティプラグインによってデータベースに保存されたデータを除き、すべてのデータが保持されます。
バックアップしてから復元する: 完全移行と同じですが、2 段階のアプローチを使用します。
データ移行なしの切り替え
外部データベースにすばやく切り替え、サーバー上のユーザーやビルドなどの 既存のデータを保持したくない場合は、以下の手順に従ってください。 切り替え後、サーバーは空のデータベースで起動しますが、TeamCity データディレクトリに保存されているすべての 設定を保持します (何がどこに保存されているかについては 詳細を参照してください)。
TeamCity で使用する 外部データベースを作成して構成します。
TeamCity サーバーをシャットダウンします。
サーバーが使用する
<TeamCity データディレクトリ>の バックアップコピーを作成します。systemディレクトリをクリーンアップします: 必要がありますmessagesおよびアーティファクトディレクトリを、systemディレクトリ (<TeamCity データディレクトリ>) から除去します。 場合があります 古い HSQLDB ファイルbuildserver.*を削除して、不要になった内部ストレージデータを除去します。TeamCity サーバーを起動します。
完全移行
これらの手順では、すべてのデータを保持しながら別のデータベースに切り替える方法について説明します。 これは、TeamCity 移行ツール — maintainDB コマンドラインユーティリティで実行されます。
maintainDB.[cmd|sh] シェル/バッチスクリプトは、 <TeamCity ホームディレクトリ>/バイナリ ディレクトリにあり、TeamCity データの移行、 バックアップ 、および 復元に使用されます。 このユーティリティは、TeamCity .tar.gz および . exe ディストリビューションでのみ使用できます。
TeamCity は HSQLDB、 MySQL、 Oracle、 PostgreSQL 、および Microsoft SQL サーバー をサポートしています。これらのデータベース間では、いずれの組み合わせでも移行できます。
ターゲットデータベースは、移行プロセスの前に空である必要があります(テーブルを含んではいけません)。
既存のデータをすべて新しい外部データベースに移行するには:
TeamCity で使用する 外部データベースを作成して構成し、データベースドライバーを TeamCity にインストールします。 この段階では TeamCity の設定を変更しないでください
TeamCity サーバーをシャットダウンします。
対応するテンプレート (
<TeamCity データディレクトリ>/config/database.<データベース_タイプ>.properties.dist) を使用して、ターゲットデータベースのカスタム名 (database.<データベースタイプ>.propertiesなど) を持つ一時プロパティファイルを作成します。 プロパティを構成し、ファイルを任意の一時ディレクトリに配置します。 元のdatabase.<データベースタイプ>.propertiesファイルを変更しないでください。migrateコマンドでmaintainDBツールを実行し、-Tオプションで新しく作成されたターゲットデータベースプロパティファイルへの絶対パスを指定します。maintainDB.[cmd|sh] migrate -T <path to database.properties file>TEAMCITY_DATA_PATH環境が TeamCity データディレクトリ を指していない場合は、コマンド呼び出しに-Aパラメーターを追加します:maintainDB.[cmd|sh] migrate -A <path to TeamCity Data Directory> -T <path to database.properties file>データベース移行の正常な補完時に、一時ファイルは TeamCity で使用される
<TeamCity データディレクトリ>/config/データベース.propertiesファイルにコピーされます。 一時ファイルは安全に削除できます。 外部データベース間で移行する場合、ソースデータベースの元のdatabase.propertiesファイルは、-Tオプションで指定されたファイルに置き換えられます。 元のdatabase.propertiesファイルの名前は自動的にdatabase.properties.before.<タイムスタンプ>に変更されます。TeamCity サーバーを起動します。 前回実行したものと同じ TeamCity バージョンである必要があります (TeamCity の アップグレードは別のプロシージャとして実行する必要があります)。
移行が成功したことを確認したら、 場合があります 古い HSQLDB ファイル:
buildserver.*を削除して、不要になった内部ストレージデータを除去します。
バックアップと復元
バックアップを作成し 、異なるターゲットデータベース設定を使用して 復元することができます。 データベースデータのみを復元するには、復元オプションを指定する必要がある場合があります。
トラブルシューティング
移行実行中の拡張情報は、
logs\teamcity-maintenance.logファイルに記録されます。 また、logs\teamcity-maintenance-truncation.logには、移行プロセス中のデータの切り捨てに関する拡張情報が含まれています。エラー "メモリ不足" が発生した場合は、
-Xmx512mパラメーターの数値をmaintainDBスクリプト内で増やしてみてください。 32 ビットプラットフォームでは、最大値は約 1300 MB です。
または、HSQLDB をスタンドアロンモードで次の方法で実行しますjava -Xmx256M -cp ..\webapps\ROOT\WEB-INF\lib\hsqldb.jar org.hsqldb.Server -database.0 <TeamCity Data Directory>\system\buildserver -dbname.0 buildserver次に、データベースをソースとして指定して移行ツールを実行します:
jdbc:hsqldb:hsql://localhost/buildserver sa ''ツールの実行中に "入力行が長すぎます" エラーが発生した場合は、代替クラスパスメソッドを使用するようにスクリプトを変更してください。
maintainDB.batでは、" WEB-INF\lib からすべての JAR をクラスパスに追加" コメントの下にある行を除去し、" 代替クラスパス: 必要な JAR のみを追加" コメントの下にある行をコメント解除してください。