狠狠撸
Submit Search
カジュアルに本番データを開発環境に入れる #mysqlcasual
?
4 likes
?
4,943 views
Kazuhiro Oinuma
Follow
MySQL Casual Talks vol.9の発表資料
Read less
Read more
1 of 22
Download now
Download to read offline
More Related Content
カジュアルに本番データを開発環境に入れる #mysqlcasual
1.
カジュアルに 本番データを 開発環境に入れる MySQL Casual Talks
vol.9 @oinume
2.
自己紹介 ? Kazuhiro Oinuma
(@oinume) ? MySQL user since v3.23 ? CyberAgent,Inc ? Ameba Ownd
4.
? 簡単にオシャレなWebサイトが作れる ? ブログっぽいデザイン、キュレーションメディアのよ うなデザインなどカスタマイズも可能 ?
Starbucks, VOGUE, NIGO, etc…
5.
カジュアルに 本番データを 開発環境に入れる
6.
動機 ? 開発環境でちゃんとしたテストデータを作るの つらい ? UGCかつデザインのバリエーションが多い ?
本番环境ディプロイ后に発见される不具合たち
7.
http://techlife.cookpad.com/entry/2014/10/03/110806
8.
本番データを開発環境 に入れちゃおう
9.
DBサーバー構成 App Replication ELB Slave Master 調査用 RDS
10.
流れ ? 1. 調査用のDBからmysqldump ?
2. 開発環境のDBにインポート ? 3. データを開発環境向けにUPDATE ? 上記をJenkinsのJobで毎日動かす ? あえてレプリケーション方式にはしなかった ? リアルタイム性は不要 ? レプリが止まった時の対応が面倒そう
11.
補足 ? mysqldumpしたファイルのサイズは3GB弱ぐらい ? 小規模!! ?
mysqldump するのに3分ぐらい ? dumpファイルをインポートするのに20分ぐらい ? MySQLのバージョンは5.6.19 ? 5.7じゃなくてすいません(??ω?`)
12.
第一段階 mysqldumpしてインポートするだけなら簡単
13.
問題 ? mysqldumpしてからインポートするため、デー タが一度消えてしまう ? →開発環境独自に作ったデータが消えてしまう ?
対策:開発環境独自のレコードのidを+10億に ? AUTO_INCREMENTをずらす
14.
流れ v2 1. 調査用のDBからmysqldump 2.
開発環境DBでid >= 10億 のレコードをバックアップ 3. 1.の本番データを開発環境DBにインポート 4. データを開発環境向けにUPDATE 5. 2.でバックアップしたデータをリストア 6. 各テーブルのAUTO_INCREMENT値をずらす
15.
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}
16.
AUTO_INCREMENT のずらし方 ? INFORATION_SCHEMAから各テーブルの現在 のAUTO_INCREMENT値を取得 ? ALTER
TABLE {table} 础鲍罢翱冲滨狈颁搁贰惭贰狈罢=… でずらす
17.
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;
18.
INFORMATION_SCHEMA からAUの値を取得 +--------------------------------+----------------+ ? table_name ?
auto_increment ? +--------------------------------+-----------------+ ? blog_posts ? 900000 ? ? blog_post_categories ? 250000 ? ? pages ? 590000 ? … ※数字はフィクションです
19.
AUTO_INCREMENTずらす ALTER TABLE {table}
础鲍罢翱冲滨狈颁搁贰惭贰狈罢=…
20.
よかったこと ? 不具合が本番ディプロイ前に発見しやすくなった ? 機能追加?修正のイメージがしやすくなった ?
ユーザーと同等の体験をして開発できる ? 開発時に重いクエリに気付きやすくなった ? ALTER TABLEする場合にどのぐらい時間がかか るか簡単に試せる
21.
カジュアルに本番データを 開発環境に入れちゃおう
22.
ありがとう ございました
Download now