バックグラウンド移行のトラブルシューティング
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
バッチ処理されたバックグラウンド移行が完了していないため、データベース移行に失敗する
GitLabバージョン14.2以降にアップデートすると、次のようなメッセージでデータベース移行が失敗する場合があります:
StandardError: An error has occurred, all later migrations canceled:
Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active':
{:job_class_name=>"CopyColumnUsingBackgroundMigrationJob",
:table_name=>"push_event_payloads",
:column_name=>"event_id",
:job_arguments=>[["event_id"],
["event_id_convert_to_bigint"]]
}このエラーを解決するには:
- 14.2のバージョン固有のアップグレード手順に従った場合は、バッチ処理されたバックグラウンド移行を手動で完了してください。
- これらの手順に従わなかった場合は、次のいずれかの操作を行う必要があります:
- 14.2以降にアップデートする前に、必須バージョンのいずれかをロールバックしてアップグレードします。
- ロールフォワードして、現在のバージョンに留まり、バッチ処理された移行が正常に完了することを手動で確認します。
ロールバックして、必要なアップグレードパスに従ってください
ロールバックして、必要なアップグレードパスに従うには、次の手順を実行します:
- 以前にインストールしたバージョンをロールバックして復元する。
- 14.2以降にアップデートする前に、14.0.5または14.1にアップデートしてください。
- バッチ処理されたバックグラウンド移行のステータスを確認し、再度アップグレードを試みる前に、すべて完了とマークされていることを確認してください。アクティブとマークされたものが残っている場合は、手動で完了させてください。
アップグレードされたバージョンで移行をロールフォワードして完了します
ロールフォワードのプロセスは、ダウンタイムが必要かどうかによって異なります。
ダウンタイムを伴うデプロイの場合
すべてのバッチ処理されたバックグラウンド移行を実行すると、GitLabインスタンスのサイズによっては、かなりの時間がかかる場合があります。
データベース内のバッチ処理されたバックグラウンド移行のステータスを確認し、ステータスクエリが行を返さなくなるまで、適切な引数を指定して手動で実行します。
それらすべてのステータスが完了とマークされたら、インストールの移行を再度実行します。
GitLabアップグレードからデータベース移行を完了させます:
sudo gitlab-rake db:migrate再構成を実行します:
sudo gitlab-ctl reconfigureインストールのアップグレードを完了させます。
ダウンタイムなしのデプロイの場合
失敗している移行はデプロイ後の移行であるため、アップグレードされたバージョンの実行中のインスタンスにとどまり、バッチ処理されたバックグラウンド移行が完了するのを待つことができます。
- エラーメッセージからバッチ処理されたバックグラウンド移行のステータスを確認し、完了としてリストされていることを確認します。移行がまだアクティブな場合は、次のいずれかを行います:
- 完了するまで待ちます。
- 手動で完了させる。
- インストールの移行を再度実行して、残りのデプロイ後の移行を完了させます。
高度な検索移行がスタックしている
GitLab 15.0では、DeleteOrphanedCommitという名前の高度な検索移行は、アップグレード全体で保留状態のままになる可能性があります。このイシューはGitLab 15.1で修正されています。
高度な検索でGitLab 15.0を使用しているGitLab Self-Managedのお客様は、パフォーマンスの低下が発生します。移行をクリーンアップするには、15.1以降にアップグレードしてください。
保留中の問題でスタックしている他の高度な検索移行については、停止した移行を再試行してください。
高度な検索の保留中の移行がすべて完了する前にGitLabをアップグレードすると、新しいバージョンで削除された保留中の移行は、実行または再試行されません。この場合、インデックスをゼロから再作成する必要があります。
エラー: Elasticsearch version not compatible(コンポーネントビルドエラー: specは有効なJSONスキーマである必要があります)
この問題を解決するするには、お使いのElasticsearchまたはOpenSearchのバージョンがお使いのGitLabのバージョンと互換性があることを確認してください。