AWS Database Migration Service(DMS)を使ったデータ移行
株式会社スペースマーケット / kazuki0122
メンバー / フロントエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
| 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|---|
Full Load Only | 10名以下 | 2025年2月 | C to C |
| 利用機能 | Full Load Only |
|---|---|
| ツールの利用規模 | 10名以下 |
| ツールの利用開始時期 | 2025年2月 |
| 事業形態 | C to C |
導入の背景・解決したかった問題
導入背景
既存で利用していた MySQL 5.7(Community 版および Aurora MySQL 版)がサポート切れとなり、コスト削減と運用負荷の軽減を目的に、独立して稼働していた MySQL Community の DB を Aurora MySQL クラスターに統合することにした。
当初は mysqldump での移行を検討していたが、mysqldump では移行中の書き込みを反映できず整合性が担保できないため、長いダウンタイムが必要になり、サービス影響が大きくなる懸念があった。
そこで、いかにダウンタイムを最小限に抑えながらデータ移行を行える方法を探していた。
ツール導入前の課題
・mysqldump はスナップショットのみで、更新分を反映できない。
・そのため DB 切り替え時に長時間のダウンタイムが必要となり、ユーザー影響を抑えることが難しい。
どのような状態を目指していたか
・切り替え時のダウンタイムを最小限に抑えること。
・移行中に発生した書き込みについても整合性を維持できる状態。
・移行進捗を可視化できること。
比較検討したサービス
特になし。
選定理由
・レプリケーション機能が使える。
・データ移行の状態がコンソール上で確認できる。
・移行用インフラを自前で準備する必要がなく、AWS のマネージドサービスとして利用できる点も評価された。
導入の成果
改善したかった課題はどれくらい解決されたか
・CDC(Change Data Capture:ソース DB の変更を継続的に同期する機能)を利用するには binlog_format=ROW の設定が必要で、Aurora MySQL 環境ではクラスター再起動を伴うため断念した。
・そのため継続レプリケーションはできなかったが、Full Load Onlyでも移行中の変更が反映され、最終的な切り替え時のダウンタイムは最小限に抑えられ、サービス影響を軽減できた。
どのような成果が得られたか
・dumpでは得られなかった「移行状況をGUIで確認できる」という安心感を得られた。
・移行タスクを自動化できたことで、手動 dump/import よりもヒューマンエラーのリスクを減らせた。
・一方で、セカンダリインデックスが引き継がれないことが分かり、テーブル定義を事前に準備する必要があると学べた。
・Aurora MySQLではCDCを使うために binlog_format=ROW が必要である、という制約面の知見も得られた。
導入に向けた社内への説明
上長・チームへの説明
・移行作業にあたりmysqldumpでは移行中の書き込みが反映されず整合性が保てない課題があることを共有。
・上長から DMSの提案があり、実際に試すことになった。
・費用については新たなインフラ構築が不要で、AWS のマネージドサービスとして利用できるため追加コストは限定的と理解された。
・チームとしては「差分を同期できる(はず)」「GUIで進捗が見える」という点が評価され、採用に至った。
活用方法
よく使う機能
移行(Full Load Only)
ツールの良い点
・一度限りの移行であっても、移行中に移行元のDBに書き込みがあった場合レプリケーションされる。
・データの移行状況がGUI上で可視化される。
・移行用のインフラを自前で準備せず、マネージドサービスとして利用できるため、運用負荷を軽減できる。
ツールの課題点
・継続的なレプリケーションをする場合DBのバイナリログがROWでないと動かない。
・データ移行をする際に、テーブル定義を事前に dump しないと引き継がれない。
ツールを検討されている方へ
・DMS を使ってデータ移行をする際に、移行先の DB にテーブル定義も作ってくれるが、その際にインデックスの情報は引き継がれないので、事前にテーブル定義を移行先のDBに準備しておく必要がある。
・バイナリログのフォーマットがROWでないと継続的なレプリケーションは行えないので、事前に確認しておく必要がある。
株式会社スペースマーケット / kazuki0122
メンバー / フロントエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
株式会社スペースマーケット / kazuki0122
メンバー / フロントエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
目次
- 導入の背景・解決したかった問題
- 活用方法

.png)
