オンプレから Aurora へ 移行する 3 つの手法 ~ mysqldump, xtrabackup, DMS ~ #AuroraMatsuri 2017/07/05
アジェンダ はじめに 自己紹介 funplex 紹介 funplex のシステム移行 オンプレから Aurora へ移行 mysqldump XtraBackup DMS さいごに
はじめに
自己紹介 名前 出身 パクジョンウン 経歴 韓国出身 渡日 12 年目 https://www.facebook.com/jungeun.park.1112 インフラ 10 年目 元グリーのインフラ 構築 監視 運用 などインフラ全般の業務を担当 グリーインフラ女子の一人 現ファンプレックスのインフラ AWS 歴 :3 年 得意分野 インフラ費用削減 AWS レクチャー 好きなもの Aurora Au 肉 Au 酒
funplex とは? グリー株式会社 100% 出資のゲーム運営子会社 社名 : ファンプレックス株式会社親会社 : グリー株式会社設立 :2015 年 10 月 15 日従業員数 :205 名 (2017 年 7 月時点 ) 主要事業 : ゲーム運営運営タイトル数 :13 本 インタビュー記事 ( 出典 :SGI) http://gamebiz.jp/?p=181017 代表取締役社長 : 下村直仁 コーポレートサイト :https://funplex.co.jp/ グリーが培ったゲーム運営のノウハウを集結した ソーシャルゲーム運営のプロフェッショナル集団 です
funplex のシステム移行
funplex のシステム移行 システム移管の効果 技術的負債の返済 耐障害性の向上 コストパフォーマンスの最適化 運用の最適化
funplex のシステム移行 システム移管で行うこと cache サーバーを ElastiCache へ移行 DB サーバーを Aurora へ移行 モニタリングツール変更 リポジトリ変更 deploy ツール変更 MWバージョンアップグレードドメイン変更 CDN 導入管理ツールの移行 SSL 証明書変更 開発環境の移行 QA 環境の移行
funplex のシステム移行 システム移管で行うこと cache サーバーを ElastiCache へ移行 DB サーバーを Aurora へ移行 モニタリングツール変更 リポジトリ変更 deploy ツール変更 MWバージョンアップグレードドメイン変更 CDN 導入管理ツールの移行 SSL 証明書変更 開発環境の移行 QA 環境の移行
オンプレから Aurora へ移行
Aurora 移行の手法 以下の 3 つの手法について事例を紹介します mysqldump XtraBackup DMS (Database Migration Service) 紹介する事例は契約上タイトル名が公開できない旨 ご了承くささい
Aurora 移行の手法 mysqldump XtraBackup DMS (Database Migration Service)
Aurora 移行の手法 mysqldump + mysqlimport (Bulk Data Loading) プロダクト : 某ソーシャルゲーム DAU : 約 4 万 (2016/06 システム移行当時 ) DB エンジン :MySQL 5.6 DB クラスター数 :7 以上 DB レコード数 :3 億件以上 mysqldump でテーブル定義とテーブルデータを整形してデータを抽出 mysqlimport でデータを並列でロード 1 mysqldump 取得 dump. sql 2 mysqldump 転送 作業用 EC2 3 mysqlimport Aurora Cluster writes Replication Master Slave Standby MySQL 5.6 Cluster Volume システム構成図は簡略してデータベースの 1 クラスタだけ表しました
Aurora 移行の手法 mysqldump + mysqlimport (Bulk Data Loading) よかったところ MySQL の機能だけで済む 別途インストールなど不要 Bulk Data Loading でデータ移行の高速化 並列して 2 本以上のデータの流し込みが可能なのでテーブルインポートや DB インポートより早い 大変だったところ mysqlimport の際にやりすぎて Aurora がハングアップした 1000 万件 (1.78GB/csv) を 9 本並列を流し仕込んだ aurora (db.r3.8xlarge) が耐えられなかった トランザクションが長すぎたため トランザクションのサイズを小さくした 流す本数を減らして対応した (100 万件を 5 本並列に変更 )
Aurora 移行の手法 mysqldump + mysqlimport (Bulk Data Loading) データ量が少ないデータベース レコード数が少なければテーブルインポートや DB インポートでも良い サービス停止を伴う データ量に比例して長時間かかるケースがある 13 時間くらい所要 レコード数 3 億件の規模
Aurora 移行の手法 mysqldump XtraBackup DMS (Database Migration Service)
Aurora 移行の手法 XtraBackup プロダクト : 某ソーシャルゲーム DAU : 約 6 万 (2016/11 システム移行当時 ) DB エンジン :MySQL 5.6 DB クラスター数 :20 以上 DB レコード数 :6 億件以上 DB サーバーに XtraBackup をインストールする Aurora Cluster 1 XtraBackup 取得 Replication 2 S3 bucket に backup 転送 S3 bucket 3 aurora 構築 writes Master Slave Standby MySQL 5.6 Cluster Volume システム構成図は簡略してデータベースの 1 クラスタだけ表しました
Aurora 移行の手法 XtraBackup よかったところ mysqldump と比べて Backup, Restore が高速 Aurora 構築が簡単 XtraBackup から直接 Aurora の構築が可能 DB サーバーに XtraBackup をインストール 作業自体は大して大変ではなかった 大変だったところ
Aurora 移行の手法 XtraBackup 簡単かつ確実に移行可能 テーブルの定義を手動でインポートしたりしなくても済む サービス停止を伴う データ量に比例して長時間かかるケースがある 5 時間くらい所要 レコード数 6 億件規模 いくつか制約あり http://docs.aws.amazon.com/ja_jp/amazonrds/latest/userguide/aur ora.migrate.mysql.html#aurora.migrate.mysql.s3 プロシージャは対応しない など
Aurora 移行の手法 mysqldump Xtrabackup DMS (Database Migration Service)
Aurora 移行の手法 DMS (Database Migration Service) プロダクト : 某ソーシャルゲーム DAU : 約 8 万 (2017/06 システム移行当時 ) DB エンジン :MySQL 5.1, 5.6 DB クラスター数 :25 以上 DB レコード数 :60 億以上 オンプレ環境と AWS の間を通して Replication する Stunnel 以外に Direct Connect でも可能 DMS はデータとキーしか移行できないため テーブル定義などは mysqldump で移行 Replication proxy Stunnel 6 DMS タスクでデータ移行 4 Aurora 構築 Aurora Cluster 7 Replication 設定 Replication Master Slave Standby snap shot Replication MySQL 5.1 1 snapshot 取得 MySQL 5.1 5.5 Replication DMS 5 Replication 2 snapshotで構築 Instance 構築 3 5.1から5.5へVerUP 8 Replication 設定 Cluster Volume writes システム構成図は簡略してデータベースの 1 クラスタ (MySQL5.1 ケース ) だけ表しました
Aurora 移行の手法 DMS (Database Migration Service) 移行当日の作業が簡単 Behind がないことを確認して Aurora へ Endpoint を変更するだけ サービスのメンテナンス時間が短縮できるよかったところ 大変だったところ 事前準備として構築作業が発生 AWS 中に MySQL on EC2 + DMS + Aurora を各クラスター分構築するので手間がかかる MyISAM など replication ができないテーブルは手動でテーブルを作成
Aurora 移行の手法 DMS (Database Migration Service) 長時間サービス停止が困難なシステム オンプレと AWS 間の NW 品質によってレプリケーションが影響を受ける Stunnel はほとんど behind が発生しなかった DMS の制約あり http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/chap_sour ce.mysql.html Drop Table Rename Table できない など
さいごに
まとめ 各移行手法の工数 mysqldump XtraBackup DMS 事前準備の工数メンテ作業の工数サービス停止時間
さいごに システムの規模や状況に応じて 適切な移行方法を選びましょう!! Aurora 専用のかっこいいアイコンがほしいです
ご静聴 ありがとうございました!!