すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:データインジェストに関する FAQ と解決策

最終更新日:Aug 20, 2026

Flink CDC によるデータインジェスト ジョブに関するよくある質問 (FAQ) と解決策です。

クイックリファレンス

現象 フェーズ 重要度 リンク
SnapshotSplits メトリクス値が高い場合の JobManager の OOM (メモリ不足) スナップショット 重大 FAQ 1
残りのシャードが少ない場合の TaskManager の OOM (メモリ不足) スナップショット 重大 FAQ 3
インクリメンタル読み取り中のステートリカバリにおける JobManager の OOM (メモリ不足) インクリメンタル 重大 FAQ 2
pt-osc によるロックフリーのスキーマ変更後に新しいデータがない スキーマ変更 高 FAQ 4
ロックフリーのスキーマ変更後の Transform での列タイプの不一致 スキーマ変更 高 FAQ 5
スキーマ変更前のセーブポイントからのジョブのリストア失敗 ステートリカバリ 高 FAQ 6
スナップショットフェーズ中のバイナリログのパージによる同期失敗 バイナリログの保持 高

スナップショットフェーズ

FAQ 1:スナップショットフェーズ中の JobManager の OOM (メモリ不足)

重要度:重大 | フェーズ:スナップショット | 影響を受けるバージョン:すべての VVR エンジンバージョン

現象

  • スナップショット フェーズ中にジョブが繰り返し再起動します。

  • JobManager のログに OutOfMemoryError (OOM) のスタックトレースが含まれています。

  • [アラーム] タブで、Num of remaining SnapshotSplits と Num of processed SnapshotSplits メトリックが、異常に高い値を示します。

Alarm tab showing high SnapshotSplits metrics

原因

スナップショット フェーズ中、MySQL ソースはすべてのテーブル シャードのメタデータを Flink ジョブのステートに永続化します。ジョブが大量のデータを処理する場合や、非常に小さいシャード サイズを使用する場合、JobManager は過剰な数のシャードを作成し、利用可能なメモリを使い果たしてしまいます。

解決策

  1. JobManager のメモリリソースを増やしてください。

  2. 次のパラメーターを調整して、JobManager のヒープメモリとオフヒープメモリを増やしてください。

    • jobmanager.memory.heap.size

    • jobmanager.memory.off-heap.size


FAQ 3:スナップショットフェーズの終盤における TaskManager の OOM (メモリ不足)

重要度:重大 | フェーズ:スナップショット | 影響を受けるバージョン:すべての VVR エンジンバージョン

現象

  • スナップショット フェーズの後半、通常は少数のシャードのみが残っている時点で、TaskManager のメモリが不足します。

  • TaskManager ログで using select statement を検索すると、最後の無制限のクエリが非常に大量のデータを含んでいることがわかります。

原因

スナップショット フェーズ中の長時間のデータ読み取りにより、インクリメンタル データが最後のシャードに蓄積されます。TaskManager がこれらの蓄積された大きなシャードを処理する際に、メモリ不足が発生します。

解決策

  1. 次のオプションを設定してください。

       scan.incremental.snapshot.unbounded-chunk-first.enabled: true
  2. スナップショットを再実行してください。


インクリメンタルフェーズ

FAQ 2:インクリメンタルフェーズでのステートリカバリ中の JobManager の OOM (メモリ不足)

重要度:重大 | フェーズ:インクリメンタル | 影響を受けるバージョン:VVR 11.1 以前

現象

  • ジョブはインクリメンタル フェーズに入りますが、ステートリカバリ中に失敗します。

  • JobManager のログに OOM (メモリ不足) が記録されます。

原因

VVR 11.1 以前のバージョンでは、インクリメンタル フェーズへの移行後に、ジョブのステートから永続化されたテーブルスキーマ情報が適切にクリーンアップされない場合があります。この残されたスキーマ データが蓄積され、ジョブがチェックポイントからリストアする際に OOM (メモリ不足) を引き起こします。

解決策

  1. VVR 11.2 以降にアップグレードしてください。


スキーマ変更

FAQ 4:pt-osc を使用したロックフリーのスキーマ変更後に新しいデータがない

重要度:高 | フェーズ:スキーマ変更 | 影響を受けるバージョン:VVR 11.1 以前

現象

  • ロックフリーのテーブルスキーマ変更後、ジョブは再起動せずに実行を継続します。

  • CurrentFetchTimeLag メトリクスは期待どおりに進み、データがフェッチされていることを示します。

  • MySQL ソースが新しいデータの生成を停止し、CurrentEmitTimeLag メトリクスの更新が停止します。

原因

VVR 11.1 以前のバージョンでは、pt-osc などのロックフリーのスキーマ変更ツールによって生成された DDL イベントを正しく処理できないため、データパイプラインが停止します。

解決策

  1. VVR 11.2 以降にアップグレードしてください。

  2. 次のオプションを設定してください。

       scan.parse.online.schema.changes.enabled: true

FAQ 5:ロックフリーのスキーマ変更後の Transform での列タイプの不一致

重要度:高 | フェーズ:スキーマ変更 | 影響を受けるバージョン:VVR 11.1 以前

現象

  • ロックフリーのテーブルスキーマ変更 (たとえば pt-osc を使用するなど) が行われると、ジョブが予期せず再起動します。

  • Transform オペレーターのログに、列タイプの不一致エラーが示されます。

原因

VVR 11.1 以前のバージョンでは、ロックフリーのスキーマ変更中に大量のデータがテーブルに挿入されると、エンジンが解析不能なイベントを生成する可能性があります。

解決策

  1. VVR 11.2 以降にアップグレードしてください。

  2. ロックフリーのスキーマ変更前に作成されたセーブポイントから、ステートフルな再起動を実行してください。


ステートリカバリ

FAQ 6:スキーマ変更前のセーブポイントからのジョブのリストア失敗

重要度:高 | フェーズ:ステートリカバリ | 影響を受けるバージョン:VVR 11.1 以前

現象

  • テーブルのスキーマ変更前に作成されたセーブポイントからのステートフルな再起動が失敗します。

  • エラーメッセージは、バイナリログを消費する際のテーブルスキーマの不一致例外を示します。

原因

VVR 11.1 以前のバージョンは、互換性のないテーブルスキーマを含むセーブポイントからのステートフルな再起動をサポートしていません。

解決策

  1. VVR 11.2 以降にアップグレードしてください。

  2. アップグレード後、スキーマ変更前のセーブポイントからジョブを再起動してください。

バイナリログの保持

FAQ 7:スナップショットフェーズ中のバイナリログのパージによる同期失敗

重要度:高 | フェーズ:スナップショット / インクリメンタル | 影響を受けるバージョン:すべての VVR エンジンバージョン

現象

  • Flink CDC ジョブがスナップショット フェーズ中に失敗し、必要なバイナリログの位置が存在しなくなったか、パージされたことを示すエラーが表示されます。

原因

Flink CDC ジョブは、異なるバイナリログ消費パターンを持つ 2 つの連続したフェーズで動作します。

  • スナップショットフェーズ:履歴データを読み取り、比較的古いバイナリログ エントリを再生します。スナップショット フェーズに時間がかかりすぎると、スナップショットが完了する前に、ジョブがまだ必要としているバイナリログ ファイルが MySQL によってパージされる可能性があります。これにより、必要なログの位置が利用できなくなるため、ジョブは失敗します。

  • インクリメンタルフェーズ:最新のバイナリログ エントリをほぼリアルタイムで読み取ります。インクリメンタル フェーズは常に最新のログ位置を追跡するため、通常、標準のバイナリログ パージポリシーの影響を受けません。

解決策

  1. ジョブが現在スナップショットフェーズと増分フェーズのどちらにあるかを確認するには、ジョブモニタリングメトリック (たとえば、Num of remaining SnapshotSplits メトリック。値が 0 より大きい場合は、ジョブがまだスナップショットフェーズにあることを示します) を確認します。

  2. バイナリログのパージが原因でスナップショット フェーズでジョブが失敗した場合は、次のいずれかまたは両方を実行してください。

    • バイナリログの保持期間を延長する:MySQL インスタンスで、想定されるスナップショット期間をカバーするようにバイナリログの保持期間を延長してください。

      • MySQL 5.7 以前では、expire_logs_days を十分な日数に設定します。

      • MySQL 8.0 以降: binlog_expire_logs_seconds を十分な秒数に設定します。

    • スナップショット期間を短縮する:ステートレスな再起動を実行し、ジョブの並列度を上げることで、スナップショット期間を短縮してください。並列度が高いほどスナップショット フェーズが高速化され、バイナリログがパージされる可能性のある期間が短縮されます。