Section 3 — 要点と暗記カード
🎯 全レベル向けチートシート。DMS / Datastream の使い分けを暗記。
🚚 移行ツール選定マップ(暗記必須)
シナリオ 推奨ツール
─────────────────────────────────────────────────────────────
MySQL → Cloud SQL MySQL DMS
PostgreSQL → Cloud SQL PostgreSQL DMS
PostgreSQL → AlloyDB DMS
SQL Server → Cloud SQL SQL Server DMS
SQL Server → Cloud SQL PostgreSQL (異種) DMS Heterogeneous
Oracle → Cloud SQL PostgreSQL / AlloyDB DMS Heterogeneous (拡大中) / Ora2Pg
Oracle → Bare Metal Solution (リフトアンドシフト) Data Pump / RMAN
Oracle → BigQuery (分析統合) Datastream
MySQL → BigQuery (分析統合) Datastream
PostgreSQL → BigQuery (分析統合) Datastream
任意 RDBMS → Pub/Sub (イベント連携) Datastream
任意 RDBMS → GCS (データレイク) Datastream
オフライン大容量 (>10TB) Transfer Appliance
S3 → GCS Storage Transfer Service
MongoDB → Firestore (MongoDB) mongodump / mongorestore
他DWH → BigQuery BigQuery Data Transfer Service
🎯 DMS vs Datastream 一発判定
| キーワード |
答え |
| 「DBを移行する」「プライマリを切り替える」「リフトアンドシフト」 |
DMS |
| 「変更を BigQuery にリアルタイム」「分析統合」「CDC」 |
Datastream |
| 「Pub/Sub に変更を流す」「イベント駆動」 |
Datastream |
| 「GCS にデータレイクとして」 |
Datastream |
| 「ニアゼロダウンタイム移行」 |
DMS Continuous |
⏱️ ダウンタイム → 推奨手段
| 許容時間 |
手段 |
| ゼロ |
DMS Continuous + リバースレプリ |
| 数秒〜数分 |
DMS Continuous |
| 数時間 |
DMS One-time or mysqldump/pg_dump |
| 数日 |
Transfer Appliance |
🧩 ゼロダウンタイム フロー(暗記)
1. 準備(バックアップ・ターゲット構築・ネットワーク)
↓
2. DMS Continuous 開始(スナップショット + CDC)
↓
3. 遅延 < 5秒 を確認
↓
4. アプリ書き込み停止 → 残ログ適用待ち
↓
5. Promote(新DBを Primary に昇格)
↓
6. アプリ接続先切替 → 書き込み再開
↓
7. リバースレプリケーション(保険)
↓
8. 数日〜数週間運用後、旧 DB 廃止
🔄 リバースレプリケーション
| 用途 |
実装 |
| 同種 DB の保険 |
DMS で逆方向ジョブを作る |
| 異種 DB の保険 |
Striim or 手動 CDC |
| 不要な場合 |
ダウンタイム許容 or バックアップで代替 |
📋 異種DB移行 主要ツール
| ツール |
用途 |
| DMS Migration Assistant |
Google 公式、対応拡大中 |
| Database Migration Assessment (DMA) |
移行前評価、難易度判定 |
| Ora2Pg |
Oracle → PostgreSQL、OSS の定番 |
| Striim |
商用、リアルタイム CDC、複雑な変換対応 |
🚨 移行で失敗するパターン TOP 5
- 事前テスト不足 → 本番でアプリが動かない
- ロールバック計画なし → 問題発生時に詰む
- DDL/DML 互換性確認漏れ → ストアドプロシージャが動かない
- DMS 遅延の監視不足 → カットオーバーで詰む
- コミュニケーション不足 → カットオーバー中にアプリ側が動けない
💡 整合性検証 4 階層
- 行数 (COUNT(*) を旧新で比較)
- ハッシュ (MD5 で全体を比較)
- サンプリング (ランダム n 行を比較)
- アプリ E2E テスト (業務フロー実行)
🚫 ひっかけパターン
| 問題 |
NG 回答 |
正解 |
| 「Oracle を AlloyDB へ完全移行」 |
mysqldump |
DMS Heterogeneous / Ora2Pg |
| 「Oracle の変更を BigQuery 分析へ」 |
DMS |
Datastream |
| 「MongoDB アプリ移行」 |
Bigtable |
Firestore (MongoDB-compatible) |
| 「PB級オフライン転送」 |
gsutil cp |
Transfer Appliance |
| 「Oracle Exadata を物理移行」 |
Cloud SQL |
Bare Metal Solution |
| 「リアルタイム DB → BigQuery」 |
BigQuery Data Transfer |
Datastream |
🔧 DMS Continuous 設定で覚えるべき項目
- ソース DB: バイナリログ (MySQL) / WAL (Postgres) 有効化
- 権限: replica ユーザー(読み取り + バイナリログアクセス)
- 接続: VPN or Cloud Interconnect or Public IP + Allowlist
- ターゲット: 新規 Cloud SQL / AlloyDB(移行中は Replica 状態)
- モード: Continuous(推奨)
- 監視: レプリ遅延、エラーログ
- Promote: 手動ボタン押下で Primary 昇格