SlideShare a Scribd company logo
カジュアルに
本番データを
開発環境に入れる
MySQL Casual Talks vol.9
@oinume
自己紹介
๏ Kazuhiro Oinuma (@oinume)
๏ MySQL user since v3.23
๏ CyberAgent,Inc
๏ Ameba Ownd
カジュアルに本番データを開発環境に入れる #mysqlcasual
๏ 簡単にオシャレなWebサイトが作れる
๏ ブログっぽいデザイン、キュレーションメディアのよ
うなデザインなどカスタマイズも可能
๏ Starbucks, VOGUE, NIGO, etc…
カジュアルに
本番データを
開発環境に入れる
動機
๏ 開発環境でちゃんとしたテストデータを作るの
つらい
๏ UGCかつデザインのバリエーションが多い
๏ 本番環境ディプロイ後に発見される不具合たち
http://techlife.cookpad.com/entry/2014/10/03/110806
本番データを開発環境
に入れちゃおう
DBサーバー構成
App
Replication
ELB
Slave
Master
調査用
RDS
流れ
๏ 1. 調査用のDBからmysqldump
๏ 2. 開発環境のDBにインポート
๏ 3. データを開発環境向けにUPDATE
๏ 上記をJenkinsのJobで毎日動かす
๏ あえてレプリケーション方式にはしなかった
๏ リアルタイム性は不要
๏ レプリが止まった時の対応が面倒そう
補足
๏ mysqldumpしたファイルのサイズは3GB弱ぐらい
๏ 小規模!!
๏ mysqldump するのに3分ぐらい
๏ dumpファイルをインポートするのに20分ぐらい
๏ MySQLのバージョンは5.6.19
๏ 5.7じゃなくてすいません(́・ω・`)
第一段階
mysqldumpしてインポートするだけなら簡単
問題
๏ mysqldumpしてからインポートするため、デー
タが一度消えてしまう
๏ →開発環境独自に作ったデータが消えてしまう
๏ 対策:開発環境独自のレコードのidを+10億に
๏ AUTO_INCREMENTをずらす
流れ v2
1. 調査用のDBからmysqldump
2. 開発環境DBでid >= 10億 のレコードをバックアップ
3. 1.の本番データを開発環境DBにインポート
4. データを開発環境向けにUPDATE
5. 2.でバックアップしたデータをリストア
6. 各テーブルのAUTO_INCREMENT値をずらす
id >= 10億 のレコード
のみmysqldump
$ mysqldump -h {db_host} -P {db_port} 
-u{db_user} -p{db_password} 
̶no-create-info 
̶order-by-primary 
̶default-character-set=utf8mb4 
̶insert-ignore 
̶where id >= 10億 {db_name} {table}
AUTO_INCREMENT
のずらし方
๏ INFORATION_SCHEMAから各テーブルの現在
のAUTO_INCREMENT値を取得
๏ ALTER TABLE {table}
AUTO_INCREMENT=… でずらす
INFORMATION_SCHEMA
からAUの値を取得
SELECT
t.table_name, t.auto_increment
FROM
information_schema.tables AS t
INNER JOIN
information_schema.columns AS c ON t.table_name = c.table_name
WHERE
t.table_schema = '{db_name}'
AND c.table_schema = {db_name}'
AND t.auto_increment IS NOT NULL
AND c.column_key = 'PRI' /* 主キーのみ対象 */
ORDER BY t.table_name;
INFORMATION_SCHEMA
からAUの値を取得
+--------------------------------+----------------+
¦ table_name ¦ auto_increment ¦
+--------------------------------+-----------------+
¦ blog_posts ¦ 900000 ¦
¦ blog_post_categories ¦ 250000 ¦
¦ pages ¦ 590000 ¦
…
※数字はフィクションです
AUTO_INCREMENTずらす
ALTER TABLE {table} AUTO_INCREMENT=…
よかったこと
๏ 不具合が本番ディプロイ前に発見しやすくなった
๏ 機能追加・修正のイメージがしやすくなった
๏ ユーザーと同等の体験をして開発できる
๏ 開発時に重いクエリに気付きやすくなった
๏ ALTER TABLEする場合にどのぐらい時間がかか
るか簡単に試せる
カジュアルに本番データを
開発環境に入れちゃおう
ありがとう
ございました

More Related Content

PPTX
Client Side Balzorでツールを作ってみた
PPTX
Ossフル活用でinfrastructure as codeやってみた
PDF
アカツキはどのようにAWSを活用しているか #jawsug
PPTX
OSS運用管理勉強会LT
PDF
仮想マシンを使った開発環境の簡単共有方法
PPTX
Azure DevOpsで技術同人誌作成
PDF
新登場!Surface Laptop 4
PPTX
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成
Client Side Balzorでツールを作ってみた
Ossフル活用でinfrastructure as codeやってみた
アカツキはどのようにAWSを活用しているか #jawsug
OSS運用管理勉強会LT
仮想マシンを使った開発環境の簡単共有方法
Azure DevOpsで技術同人誌作成
新登場!Surface Laptop 4
Rancher meetuptokyo #4 Vagrant でつくる Rancher HA構成

What's hot (20)

PDF
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
PPTX
Swarm mode運用してみた
PDF
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
PPTX
AzureDevOpsで始めるAndroidのCI/CD
PPTX
Shiva 〜Nextremerをscale upする機械学習環境〜
PDF
20150905 stream analytics
PDF
How Wantedly (in)directly uses AWS
PPTX
BITRISEを使っています
PPTX
Memtest86をかけてみた話
KEY
iOS6時代のTwitter / Facebook連携
PPTX
BIOSからUEFI
PPTX
Rancher Meetup Tokyo#3 Storageについて
PDF
Docker on azure!進化していくcontainerを覗いてみよう!
PDF
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
PDF
Azure Searchで作る検索サービス
PDF
君も今日からWebMatrixMan(仮)
PDF
Aurora MySQL HandMade Major VersionUp
PPTX
.NETラボ2021年10月 .NETの過去と現在
PDF
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
PDF
Rancherでwindows server上のコンテナを管理できるか
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Swarm mode運用してみた
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
AzureDevOpsで始めるAndroidのCI/CD
Shiva 〜Nextremerをscale upする機械学習環境〜
20150905 stream analytics
How Wantedly (in)directly uses AWS
BITRISEを使っています
Memtest86をかけてみた話
iOS6時代のTwitter / Facebook連携
BIOSからUEFI
Rancher Meetup Tokyo#3 Storageについて
Docker on azure!進化していくcontainerを覗いてみよう!
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
Azure Searchで作る検索サービス
君も今日からWebMatrixMan(仮)
Aurora MySQL HandMade Major VersionUp
.NETラボ2021年10月 .NETの過去と現在
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
Rancherでwindows server上のコンテナを管理できるか
Ad

Viewers also liked (6)

PDF
コードはナマモノ 腐らせないために今までやってきたこと
PDF
MySQL 初めてのチューニング
PDF
メンテナブルでありつづけるためのCSS設計
PPTX
本当のオブジェクト指向は可読性を上げる
PDF
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
PDF
逆説のスタートアップ思考
コードはナマモノ 腐らせないために今までやってきたこと
MySQL 初めてのチューニング
メンテナブルでありつづけるためのCSS設計
本当のオブジェクト指向は可読性を上げる
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
逆説のスタートアップ思考
Ad

カジュアルに本番データを開発環境に入れる #mysqlcasual