高速なデータ移行を実現するプラットフォーム

イントロダクション

プラットフォームの変更または更新時に情報を転送することは重要なタスクです。残高、賭けの履歴、ボーナス、KYCデータ、キャンペーン設定を紛失または歪めることはできません。最新のソリューションでは、自動化されたETLパイプラインと変更データキャプチャ(CDC)を使用して、業務ダウンタイムなしで数時間または数分で移行を完了します。

1.移行の分類

1.コールドマイグレーション

完全な輸出輸入、プラットフォームのシャットダウンが必要です。
低い活動か計画された維持窓のために適した。
2.ホット・マイグレーション

パラレルチャイETL+CDCレプリケーション、秒単位でカットオーバー。
24時間のトラフィックを持つ大型オペレータに適しています。

2.ETLおよびCDCアーキテクチャ

「マーメイド」
フローチャートLR
サブグラフソース
DB1(旧DB)
Stream1(旧DB CDC)
終了する
サブグラフコンベア
ETL [ETLジョブ]
CDC [CDCコンシューマー]
バリデータ[データバリデータ]
終了する
サブグラフの目的
DB2(新規DB)
終了する
DB1-->full dumpETL-->バリデータ-->DB2
Stream1-->real -time changesCDC-->バリデータ-->DB2
```

ETLジョブ:夜間またはスケジュールに一度、テーブルの完全なダンプを読み取り、フォーマットを変換し、新しいスキームにロードします。
CDC Consumer: WALログ(Debezium/MySQL Binlog)を聞き、INSERT/UPDATE/DELETEをリアルタイムモードでスキップします。
Validator:ベースロード後とストリーミングレプリケーション中のレコードのチェックサムとカウンタを検証します。

3.マイグレーションステージ

1.分析とマッピング(1-2日)

古いデータベースと新しいデータベースのスキームの比較、フィールド対応の決定(例:'player_balance'→'wallet。 。 。
型の変換の定義:行→JSON、タイムスタンプ、ENUM→参照テーブル。

2.試験環境の準備(1-2日)

本番データの膨大なスナップショットを使用したステージングクラスタの展開。
テストデータにETLおよびCDCコネクタを設定します。

3.「冷たい負荷」(2-4時間)

ソースDB→パラレルインポートからターゲットDBにフルダンプをエクスポートします。
ブート時に重複していないプロセス(ボーナスエンジンなど)を無効にします。

4.CDCレプリケーションを開始(連続)

ETL読み込みが開始されたときから変更のリスニングを開始します。
カットオーバーの準備ができるまでの操作の「尾」の蓄積。

5.カットオーバーとトラフィックスイッチング(1〜5分)

CDCテールの残りを整列させるためのアプリケーションを一時的に停止します。
新しいデータベースへの接続文字列の再構成。
基本的なスクリプトの煙テスト(ログイン、デポジット、スピン、内部)。

6.検証とロールバック(1-2時間)

キーテーブルのチェックサムチェック-ユーザー、残高、取引履歴。
重要なミスマッチの場合-スナップショットへの自動ロールバック。

4.テストと検証

行カウントとチェックサム:テーブルによるレコード数とハッシュ数の比較。
ドメインテスト:サンプルシナリオ-賭け、ボーナス、出金操作。
エンドツーエンドテスト:自動化されたCypress/Playwrightスクリプトは、移行後のステージングでキーフローを実行します。

5.ダウンタイムの最小化

Blue-Greenデータベース

並列データベースインスタンス……
プロキシレベルのカットオーバー

プロキシ(PgBouncer)を使用して、着信接続キューでスムーズなスイッチオーバーを行います。
フィーチャーフラグ

移行中に機能の一部を無効にして、すべてのサービスを完全にブロックしないようにします。

6.ツールとプラットフォーム

MySQL/PostgreSQL。
Airbyte、 Fivetran、 ETLパイプライン用Talend。
スキーママイグレーションとデータベースバージョン管理のためのFlyway/Liquibase。
安全なストレージ認証情報とローテーションのためのHashiCorp Vault。

お知らせいたします

高速なデータ移行をサポートするプラットフォームは、ETLロードとCDCレプリケーション、厳格なテスト、検証チェックを組み合わせたプロセスを構築します。有能なアーキテクチャと自動化により、ダウンタイムは数分に短縮され、データ損失または不一致のリスクはゼロになります。