本文へ移動
Telemetry
データベースの信頼性 SQL レシピ

データベース移行の失敗をリリースごとに追跡する

ロールアウトを完了する前に、アプリケーションのリリースごとにデータベースの移行の成功、失敗、ロールバック、期間を比較します。

初心者database_migration_eventsレビュー済み 2026-07-28テスト済み アパッチ DataFusion 45.2.0

レビュー者 Telemetry 製品チーム . SQL の互換性、イベント コントラクト、合成出力、および操作上の注意事項. 基準と所有権を確認する

質問に回答しました

失敗したデータベース移行またはロールバックされたデータベース移行はどのリリースに含まれていますか?

デプロイは正常に見える一方で、部分的に適用された移行では、後のアプリケーション リクエストがリスクにさらされることがあります。 1 つのターミナル移行結果を記録すると、リリースの準備状況を検査できるようになります。

イベント契約

クエリが期待するフィールド

フィールド種類なぜ存在するのか
timestamp_utcTimestampUTC での端末移行時間。
migration_idUtf8ソース管理からの安定した移行識別子。
serviceUtf8移行を実行したサービスまたはデプロイ ジョブ。
database_nameUtf8承認された論理データベース名。
releaseUtf8アプリケーションまたはインフラストラクチャのリリース。
statusUtf8成功、失敗、または rolled_back。
duration_msFloat64移行の実行期間。
error_typeUtf8生のデータベース出力を使用しない制御された障害カテゴリ。
environmentUtf8導入環境。
DataFusion SQL

クエリをコピーする

sql
SELECT
  release,
  service,
  database_name,
  COUNT(*) AS migrations,
  SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS successful,
  SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed,
  SUM(CASE WHEN status = 'rolled_back' THEN 1 ELSE 0 END) AS rolled_back,
  100.0 * SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS success_rate_pct,
  AVG(duration_ms) AS average_duration_ms
FROM database_migration_events
WHERE timestamp_utc >= now() - INTERVAL '30 days'
  AND environment = 'production'
GROUP BY release, service, database_name
ORDER BY release DESC;

この読み取り専用クエリは、空の型付きテーブルに対して計画され、実行されます。 アパッチ DataFusion 45.2.0。決定論的なサンプル出力は合成され、個別にレビューされます。フィールド タイプ、しきい値、ビジネス定義を独自のデータと照合して検証します。 テスト方法を読んでください。

クエリ結果

リリースごとの移行成功率

新しいリリースには失敗した移行とロールバックされた移行の両方が含まれているため、完了したものとして扱うべきではありません。

releaseservicedatabase_namemigrationssuccessfulfailedrolled_backsuccess_rate_pctaverage_duration_ms
2026.07.2application-apiapp_production5311601,470
2026.07.1application-apiapp_production5500100890

合成出力例。運用上の決定に使用する前に、独自のイベント スキーマとしきい値に対してクエリを実行します。

Migration success rate by release: Track Database Migration Failures by Release 結果例からの合成 success_rate_pct 値の静的チャート
決定論的な出力例のインデックス可能な SVG。記事、ランブック、または出典を明示した設計レビューのためにダウンロードしてください。

例を再現する

パブリックフィクスチャをダウンロードする

JSON バンドルには、型付きイベント コントラクトが含まれています。 reproducible 入力行、正確な SQL、予想される出力、レビューメモ、およびエンジンのバージョン。 CSV には、表示された結果が含まれます。

SQL の仕組み

  1. 1移行ごとに 1 つのターミナル行により、開始イベントと再試行イベントの分母が大きくなるのを防ぎます。
  2. 2ロールバックが成功しても移行が出荷されなかったことを意味するため、失敗した結果とロールバックされた結果は別々のままです。
  3. 3リリース、サービス、データベースにより、レビューが必要な正確なロールアウト境界が特定されます。

決定すべきエッジケース

  • 一部の移行ツールは自動的に再試行します。 1 つの最終結果を出力する間、試行回数を個別に保存します。
  • 移行が成功しても、論理的に間違っている可能性があります。このビューをアプリケーションの正常性およびデプロイ後の検証と組み合わせます。
  • 生の DDL、接続文字列、または無制限のデータベース エラー テキストをログに記録しないでください。

推奨されるダッシュボード

  • バー: リリースごとに success_rate_pct
  • 表: 失敗した移行 ID とロールバックされた移行 ID
  • 傾向: デプロイごとの移行期間と数

アラートガイダンス

運用移行の最終結果が失敗またはロールバックされた場合、ロールアウトの完了をブロックします。

アラート設定を読む

レシピを活用する

関連する機器とガイド

分析を続ける

実際のイベントで実行する

テーブルを作成し、フィールドを調整して、結果を保存します

無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。

API キーを取得する