9月の第2週からの移行体験を時系列で記録しておく。最初は簡単だと思ってたが、実際は予想以上に時間がかかった。
9月7日(土)朝4時 - メモリエラーでサーバーダウン。mysqld: Out of memory (Killed by signal 15)
。この時点でもう移行は避けられない状況だった。MySQL メモリ関連の問題は頻繁に発生する。
9月9日(月) - 朝会で移行の期限と予算が決定。「来月までに何とかしろ」と言われ、月30万の予算で作業開始。データベース移行の計画を立てる必要があった。
9月10日 - AWS DMSとGoogle Cloud DMSを比較検討。Googleの「同種移行は追加料金なし」という説明に惹かれて決定。
9月11日 - 接続設定でつまずく。IPアドレスのタイプミス(10.0.1.100のつもりが10.0.1.10)で40分ほど悩んだ。ERROR 2003 (HY000): Can't connect to MySQL server
が出続けた。MySQL接続のトラブルシューティングは事前に読んでおくべきだった。
9月12日〜15日 - 実際の移行作業。1.2TBのデータ移行に予想以上の時間(13時間)がかかった。大容量データベースの移行では事前の計画が重要。
9月16日 - 移行完了したが、文字化け問題が発覚。
9月17日〜18日 - 文字コード修正で週末作業。MySQL文字セットの変換は時間がかかる。
AWS DMSとの比較
AWS DMS(Database Migration Service)とGoogle Cloud DMSで比較検討した結果。AWS DMSの機能とGoogle Cloud DMSの違いを理解することは重要:
料金比較:
- AWS DMS: t3.micro($0.0309/時間)+ データ転送料金
- Google Cloud DMS: 「同種移行は追加料金なし」
Googleの「追加料金なし」に惹かれて決定したが、これはDMSサービスの利用料のみで、移行先のCloud SQLインスタンス料金(月¥32,000程度)は別途必要だった。事前に料金計算機でしっかり計算すべきだった。
実際の移行結果
予想より良かった点:
- Change Data Captureで本番を停止せずに移行できた(約15分のダウンタイムのみ)
- レプリケーション設定を手動で行う必要がなかった
- Google Cloud Consoleで移行進捗をリアルタイムで確認できた
想定外だった問題:
- VPC peering設定で半日ほど時間を費やした。
gcloud compute networks peerings create
の権限設定でつまずいた - 文字エンコード問題:
ERROR 1366: Incorrect string value
エラーが大量発生。古いテーブルのlatin1エンコードに日本語データが混在していた - ネットワーク帯域の不足。100Mbpsでは不十分で、深夜の長時間作業が必要だった
実際にかかった期間:
公式ドキュメントも事前に確認しておくべきだった。