🚚 SECTION 3
データソリューションの移行
公式試験範囲: ~23%。DMS と Datastream の使い分けがほぼ毎回出る。
🎯 1. DMS vs Datastream(最頻出)
DMS — Database Migration Service
用途: DB の完全移行、プライマリ切替
ターゲット: Cloud SQL / AlloyDB
モード: One-time / Continuous
対応: 同種 (MySQL→Cloud SQL MySQL) + 異種 (Oracle→PG)
Datastream
用途: CDC イベント連携
ターゲット: BigQuery / GCS / Pub/Sub
モード: 継続レプリ
対応ソース: Oracle / MySQL / PG / SQL Server / MongoDB
一発判定
「DBを移行する」「プライマリ切替」 → DMS
「変更を BigQuery に分析統合」「Pub/Sub にイベント連携」 → Datastream
「DBを移行する」「プライマリ切替」 → DMS
「変更を BigQuery に分析統合」「Pub/Sub にイベント連携」 → Datastream
🗺 2. 移行ツール選定マップ
| シナリオ | 推奨ツール |
|---|---|
| MySQL → Cloud SQL MySQL | DMS |
| PostgreSQL → Cloud SQL Postgres | DMS |
| PostgreSQL → AlloyDB | DMS |
| SQL Server → Cloud SQL SQL Server | DMS |
| Oracle → AlloyDB/PostgreSQL(異種) | DMS Heterogeneous / Ora2Pg / Striim |
| Oracle → Bare Metal Solution | Data Pump / RMAN(リフトアンドシフト) |
| 任意 RDBMS → BigQuery(分析) | Datastream |
| 任意 RDBMS → Pub/Sub(イベント連携) | Datastream |
| オフライン大容量(>10TB) | Transfer Appliance |
| S3 → GCS | Storage Transfer Service |
| MongoDB → Firestore (MongoDB-compatible) | mongodump / mongorestore |
⏱ 3. ダウンタイム別の戦略
| 許容ダウンタイム | 推奨手段 | 注意 |
|---|---|---|
| ゼロ | DMS Continuous + リバースレプリ | 最複雑、コスト高 |
| 数秒〜数分 | DMS Continuous | 標準、業務クリティカル |
| 数時間 | DMS One-time or mysqldump / pg_dump | 夜間メンテで実施可 |
| 数日許容 | Transfer Appliance | PB級・帯域不足の場合 |
🚀 4. ゼロダウンタイム移行フロー
Phase 0: 準備
├ ソース DB バックアップ
├ ターゲット DB 構築 (HA 構成)
├ ネットワーク確立 (VPN / Interconnect)
└ DMS ジョブ準備 (Continuous モード)
Phase 1: 初期移行
├ DMS スナップショット取得
├ CDC 開始 (バイナリログ / WAL から継続適用)
└ レプリ遅延を継続監視 (< 5秒目標)
Phase 2: テスト
├ ステージングでカットオーバー リハーサル
├ 整合性チェック (行数・サンプル・ハッシュ)
└ アプリ E2E テスト
Phase 3: カットオーバー
├ アプリ書き込み停止 (数秒)
├ 残バイナリログ適用完了待ち
├ DMS Promote (新DBをPrimaryに)
├ アプリ接続先切替
└ 書き込み再開
Phase 4: 後処理
├ リバースレプリケーション開始 (新→旧)
├ 監視強化
└ 数日〜数週間運用後、旧DB廃止
🔄 5. フォールバック / リバースレプリケーション
移行後の保険として、新 DB の変更を旧 DB に逆方向同期する。問題発生時に旧 DB に戻せる。
同種 DB の場合
DMS のジョブを 逆向き に作る(新→旧)
数日〜数週間運用後、問題なければ停止
異種 DB の場合
Striim や手動の Logical Replication で実現
複雑度高、テスト必須
🔍 6. 整合性検証 4 階層
- 行数チェック —
SELECT COUNT(*)を旧新で比較(最も基本) - ハッシュチェック —
MD5(STRING_AGG(...))で全体を厳密比較 - サンプリングチェック — ランダム n 行を抽出して詳細比較
- アプリ E2E テスト — 主要業務フローを実行(最終確認)
📋 7. 異種DB 移行で覚えるべき変換
Oracle → PostgreSQL/AlloyDB
- NUMBER → NUMERIC
- DATE → TIMESTAMP
- CLOB → TEXT
- PL/SQL → PL/pgSQL(要書き換え)
- SEQUENCE → SEQUENCE(互換高)
- ROWID → 別主キーで代替
SQL Server → PostgreSQL
- T-SQL → PL/pgSQL
- IDENTITY → SERIAL / GENERATED
- NVARCHAR → TEXT / VARCHAR
- Linked Server → FDW
📊 8. 主要ツール比較
| ツール | 用途 | 提供 |
|---|---|---|
| DMS Migration Assistant | スキーマ変換・データ移行 | Google 公式 |
| Database Migration Assessment (DMA) | 移行前評価、難易度判定 | Google 公式 |
| Ora2Pg | Oracle → PostgreSQL 変換 | OSS |
| Striim | 商用 CDC、複雑な異種移行 | パートナー |
このセクションの要点
- DMS = DB 移行、Datastream = CDC 連携 を即答できる
- ゼロダウンタイム = DMS Continuous + リバースレプリ
- 異種 DB は DMA → DMS Migration Assistant or Ora2Pg
- 整合性は4階層で検証
- 失敗要因は「テスト不足 + ロールバック計画不在」