早くなったのか? 5.5から5.6への
アップグレード事例 株式会社ベストリザーブ
貫井 剛
高橋 良明
Web/App
Server
Cycle
Crawler
システム概要
Action
Crawler
Master
DB
Slave
DB
Master
DB
Slave
DB
Master
DB
Slave
DB
Master
DB
Slave
DB
Web/App
Server
Site R
Site J
Site Q
Site Y
Site B
Browser
HTML 取得・解析
データ登録
リクエスト データ登録
レプリ
ケーション データ検索 情報閲覧
システム規模(クロール編)
サイクルクロール(以下の規模を約20時間でデータ収集)
5サイト
120日分
のべ10万ホテル
のべ150万プラン
500万ページ
100プロセス
アクションクロール
クロール実施 顧客の約1割弱
クロール実施 120プロセス
株式会社ベストリザーブ
システム規模(DB編)
CPU : Intel Xion 2.8GHz(4Core)
Memory : DDR3 16Gb
Strage : SATA3 RAID1+0
DB File : 40Gb/月 ×40ヶ月
Red Hat Enterprise Linux 6
同じスペックのサーバが8台、Master・Slaveで4セットのDB
サーバを構成
ホテルの所在地などを元にして、どのサーバにデータを保存するのかはアプリケーション側で選定
株式会社ベストリザーブ
アップグレードの手順
1. MySQLの停止
2. バックアップの作成
3. アップグレードバイナリ環境への移行
4. 設定ファイルの更新
5. MySQLの起動
6. mysql_upgradeの実行
7. MySQLの停止
8. MySQLの起動
株式会社ベストリザーブ
アップグレードの注意点
当社でのアップグレード時の詰まった点
OS環境 glibc のバージョンが2.5以上が必要
新機能に対するパラメータ レプリケーションのチェックサム機能(binlog_checksum)
既存のパラメータのデフォルト値 テーブル単位にデータファイルを作成(innodb_file_per_table)
廃止されるパラメータ InnoDBの内部データなどを保持するための領域(innodb_additional_mem_pool_size)
株式会社ベストリザーブ
Before⇔After 1 サーバステータス
Master DB
Status Before(5.5) After(5.6) Difference
Connections 29,989 33,180 3,191
Bytes_received 212,258,673 267,941,567 55,682,894
Bytes_sent 625,357,151 1,091,448,872 466,091,721
Innodb_data_read 437,479,869 1,106,519,440 669,039,571
Innodb_data_written 482,531,551 1,266,796,277 784,264,726
株式会社ベストリザーブ
Slave DB
Status Before(5.5) After(5.6) Difference
Innodb_data_read 410,713,043 382,077,017 -28,636,026
Innodb_data_written 618,098,477 952,248,854 334,150,377
Before⇔After 2 バッファの使用率とヒット率
Before⇔After 3 オプティマイザ
株式会社ベストリザーブ
select
daily.01_stock_room,
daily.01_stock_room_status,
daily.01_discount_price,
daily.01_sales_status,
daily.31_stock_room,
daily.31_stock_room_status,
daily.31_discount_price,
daily.31_sales_status,
from
t_plan_base as base
inner join
t_plan_daily_history_201307 as daily
on
base.supplier_hotel_id = daily.supplier_hotel_id
and base.capacity = daily.capacity
and base.room_plan_id = daily.room_plan_id
where
base.supplier_hotel_id = ?
and base.capacity = ?
and base.active_status = 1
and daily.active_status = 1
and daily.check_dtm <= '2013-07-31 09:00:00'
and ifnull( daily.next_check_dtm, '2013-07-31 09:00:00') >= '2013-07-31 09:00:00'
5.6で導入された「Index
Condition Pushdown Optimization(ICP)」が効くようになり同じSQLでも実行時間の短縮されました。
結果は如何に!
Before⇔After 4 実処理時間
株式会社ベストリザーブ
Proccess Before(5.5) After(5.6) Difference
デイリーレポート
(6万件のバッチ処理) 864秒 740秒
最低価格一覧 6秒 4秒
販売履歴 12秒 8秒
株式会社ベストリザーブ
質疑応答
株式会社ベストリザーブ
アップグレードにかかった作業時間は?
早くなる以外のメリットは?
MySQL5.6って本当にイイの?
今後MySQLに期待することは?
ベストリザーブってロンゲとスキンしか居ないの?
宣伝:ベストリザーブ
ハイランクホテル
プレミアムなホテルを リーズナブルなプライスでご紹介
お天気保険 雨が降ったら宿泊料金全額返金!
ポイントキャンペーン中
もれなく300ポイント贈呈!実質300円引きで泊まれちゃう!泊まった後にも特別ボーナスが!
株式会社ベストリザーブ
http://www.bestrsv.com/
参考資料など
Release Notes http://dev.mysql.com/doc/relnotes/mysql/5.6/en/index.html
Upgrade手順 http://dev.mysql.com/doc/refman/5.6/en/upgrading-downgrading.html
5.5から5.6へのアップグレードに関する記載 http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html
レプリケーションに関する注意点 http://dev.mysql.com/doc/refman/5.6/en/replication-upgrade.html
サーバステータスの説明 http://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html
株式会社ベストリザーブ
ご静聴ありがとうございました。