DeNA システム統括本部IT基盤部の岩永亮介といいます。お初にお目にかかります。
だいぶ報告が遅くなってしまったのですが、4月に参加してきた MySQL Conference 2010の報告を簡単にさせて頂きたいと思います。
こんてんつ
- はじめに
- 僕の見たMySQL Conference
- Performance Tunings and others
- MySQL and Cousins
- Future Databases
- おわりに
はじめに
MySQLを触り始めてまだ半年程度の自分でしたが、弊社の 「 国際学会派遣制度 」を利用して、今年4月にシリコンバレーで開催された MySQL Conference&Expo 2010 に 運良く参加させて頂くことになりました。
一人で海外とか初めてだし、英語もできないし、MySQLも初心者なので ホントにどうなることかと思いましたが、「MySQL愛してる!」という気持ちだけで 十分堪能することができましたので、簡単にシェアさせて頂こうと思います。
MySQL Conferenceは1+3日間の開催になります。1日目はTutorialという形式で 午前/午後の2コマ(内容は本当にTutorial的なものから長めのTalkingまで様々)、 2〜4日目は45分程度のセッションが1日に5、6コマある、というものです。 それぞれ1コマあたり8つのセッションが同時に行われています。
また、2〜4日目は毎日冒頭にKeynoteという形式で全参加者向けのセッションがあります。 ここには結構な有名人が登場するのでwktkします。 僕は4日ともフル参加の予定なので、前日の昼間くらいに到着しましたが、 明日から楽しい日々が始まると思うとなかなか寝付けませんでした><
僕の見たMySQL Conference
Conferenceの全ての内容について僕の様なレベルの人間が総括することなんて とてもできないので、自分の見聞きした範囲での内容をざっくりとまとめて ご説明したいと思います。
Performance Tunings and others
僕はとてもとてもInnoDBを愛しているので、ConferenceでもInnoDBに関するセッションを 多く聞いてきました。
特にFacebook社のセッションは人気でしたね。超大規模サイトを支える「X-thousands」の MySQLについて、徹底的にチューニングされている様は確かに凄まじかったです。 InnoDB plugin+XFS+deadline+vm.swappiness=0といったモダンな設定を あの大規模サイトでどんどんと導入していったというのはすごいですね。
ちなみにInnoDB pluginについてはこのConferenceが終わったあとの5.1.47のリリースから ついにGAになりました。そこで弊社でも遅まきながら実際にデータを入れてみて試しています。 個人的に今の所イケテルなと思ったのは、クラッシュリカバリの速さと innodb_adaptive_flushing=1です。
クラッシュリカバリは更新の多い系統のslaveとしてぶら下げて電源をブチっとしてみたところ builtinのInnoDBだと4時間くらいかかったものが、pluginにするだけで10分になりました! 涙が出ましたToT
innodb_adaptive_flushing=1はデータのflushのタイミングをよりアグレッシブにしてくれる 設定で、builtinのInnoDBだと状況によってはwriteでI/Oがバーストしてしまって困っていたのが 解消されていました。まぁ当然バーストしてない時のwriteの量は若干多くなるのですが、 弊社のようにWebで利用している場合にはバーストする方が困るので助かります。
閑話休題。他にFacebookで印象的だったのは「Query Comment」ですね。 SQL文自体にコメントを使って色んな情報を入れるというのは、まさに発想の転換ですね。 後でこの情報も取りたいとかになっても、SQL文を変えるだけで済むのが良いです。
Percona社のTutorialではMySQLのコンサルティングをしている彼らの ノウハウの一部を見せて頂きました。自分の仕事もMySQLの性能管理が主ですので これは本当に勉強になりました。性能問題を報告してきた人の言ってることを 鵜呑みにしちゃいけないよ、というのが印象的でしたw
直接チューニングとは関係ないのですが、データベース管理といえばbackupも重要です。 弊社のモバゲータウンでもデータサイズは相当に大きいので常に頭を悩ませています。 select into outfile/data load infileを組み合わせるとmysqldumpよりも速いという 話も印象的でしたが、やはりPercona社のxtrabackupが個人的には注目でした。 具体的なデモと共に使い方を見せて頂きましたが、InnoDBのホットバックアップが フリーのツールでできるなんてすばらしいですね。
というわけで、実際にxtrabackupを試しに使ってみてました。日本語の情報が 少なめなのですが、基本的にはdocument見たりソースを読めば簡単に使えます。
innobackupex-1.5.1 --user=root --password=XXXX --slave-info /data/xtrabackup
こんな感じにすれば、ローカルにibdataのコピーが取れて同時にその間の WAL(Write Ahead Log)が取得できているのであとは次のコマンドでWALを 適応してあげれば、バックアップ終了時点での静止断面が取得できます。
innobackupex-1.5.1 --apply-log /data/xtrabackup/xxxx
また、他にもxtrabackupのsteramモードだとWALの記録だけをしてくれるので、 tarやscpを使ってibdataをコピーするという方法もinnobackupexにはあります。 tarだと標準出力に出てくるだけなので、これをgzipに噛ませて圧縮することができます。 ただ、gzipは圧縮速度が遅くて困ったので、試しにlzopを使ってみたら160GBくらいの データを50分くらいで圧縮することができました!ただ、どうもtar(にパッチを当てたtar4ibd)では うまく行かないことがたまにあり、これはバグレポートする予定です。
scpの方はシングルプロセスで送ってると遅いのでマルチプロセスにして 送ってみたらまずまずのスピードで送れました。多様なバックアップ方法があって 考えるだけで楽しいですね!
という感じで、InnoDBについてこれでもかというくらい深い話を聞く事ができて、 脳みそ刺激されまくりでやばかったです。
MySQL and Cousins
会場ではMySQL5.5.4の発表がありました。SunがOracleに買収されて1年、 MySQLの開発は順調に進んでいるようです。5.5.4の機能は各所で紹介されていますので ここでは割愛しますが、GAリリースが待ち遠しいですね。
さて、MySQLはGPLで提供されているため、フォークして配布することが出来ます。 そのため様々なCousinsが活況を呈して来ているようです。Keynoteでは MariaDB、Drizzleが発表をしていたように、これらを含めて「MySQL」という 集まりができていることを改めて納得しました。
いろんなパッチが適応されているMariaDBも魅力的ですし、マイクロカーネルな Drizzleも楽しみですが、個人的に楽しみにしていたのはPBXTです。 これはMySQLのフォークというわけではないのですが、現状唯一のトランザクショナルな ストレージエンジンであるInnoDBの対抗として注目してます。
PBXTはログベースなストレージエンジンなところが、クラスタインデックスなInnoDBとの 一番の違いですね。ものによってはクラスタインデックスだと断片化が激しくて困ることが あったので、楽しみです。セッションの中でも説明があったのですが、ストレージエンジンレベルの レプリケーションができるというのもイカしてます>< ちょっとまだ手元で試せていないのですが、 pluginで簡単に組み込むことができるので今度buildして使ってみようと思います。
こうやって色んなソリューションが次々生まれてくるのもMySQLの魅力ですね!
Future Databases
そして、今回のMySQL Conferenceで個人的に一番熱いなと感じたのが「SSD」です。 何を今更、という感じに思われるかも知れないですが、弊社でも昨年から利用をはじめて その凄まじさを実感していたところに、各所で「あと2、3年で全てのDISKがSSDになる」という 風に言われていたのが本当に印象的でした。
今のMySQL(他のDBMSも)は基本的に「遅いHDD」をどうやって効率よく使うかという点に おいて究極を追い求めてきました。しかし、例えばFusion-IOのSSDを使ってしまえば 今まででは信じられないようなIOPSが達成できてしまうのですから、もはやDBMSの 仕組みから考え直す必要が出てくるのもうなづけます。まさかDBがIOネックではなく CPUネックになってくるとは思いもよりませんでしたが、本当にSSDに置き換わっていくなら 次はマルチコアでどこまでスケールできるか、の方が問題になってくることは明らかです。
そういう流れをうけてだとは思いますが、Conferenceの最後のKeynoteはRethinkDBでした。 まさに時代を感じられて、行って良かったという感じですね!
おわりに
MySQLは最高です。そしてConferenceではその開発者やパッチ作成者、 コミュニティの有名人などチョーかっこいい人達を生で見る事ができ、話を聞く事ができ、 本当に幸せでした。
マジメな話、4日間通して感覚が刺激されまくりでやばかったです。僕は英語が 結構悲惨なんですが、そんなのホント関係なくて、自分のアメリカ行きたいという思いと、 MySQLに詳しくなりたいという思いだけで、めいっぱい吸収してこれました。
段上に立ってMySQLについて熱く語る多くの「かっこいい」人々を見て、僕もいつかあそこで 発表したいなとはっきり思った次第です。
あと、5日目にフリーの日を頂いたので、シリコンバレーを満喫してきました。 Stanford Universityを見学したりCompurter History Museumを楽しんできました。 (ただCHMは改修中のためほとんど見れず><) シリコンバレーの空気は思考を解放してくれます。行くだけで意味があります。
聞く所によるとDeNAの学生向けのインターンイベント 「 Tech StuDIG 」 では優勝商品がシリコンバレーツアーとの話!学生のみなさん、これは申し込まないわけには いかないですね!(と、さらっと宣伝しておきます)
ではまた。Viva MySQL!!
参考までに
僕が聞いて来たセッションの一覧です。タイトルを見てるだけで興奮しますね><
- ◆1日目
- Tutorials
- Diagnosing and Fixing MySQL Performance Problems
- Scaling Applications with Caching, Sharding and Replication
- Tutorials
- ◆2日目
- Keynotes
- State of the Dolphin
- O’Reilly Radar
- MySQL at Facebook
- Sessions
- High Concurrency MySQL
- Performance and Feature Enhancements to MySQL and InnoDB
- A Practical Guide to the PBXT Storage Engine
- InnoDB: Status, Architecture, and New Features
- An Overview of Flash Storage for Databases
- Linux Performance Tuning and Stabilization Tips
- Keynotes
- ◆3日目
- Keynotes
- State of Drizzle
- State of MariaDB
- Under New Management: Next Steps for the Community
- Sessions
- Mysteries of the Binary Log
- MariaDB Release 5.1; What Is It and What to Expect From It
- Database Operations at Scale
- InnoDB Architecture and Performance Optimization
- How Solid-state Technologies are Transforming MySQL Server Performance and the Datacenter Architectures
- Ignite MySQL
- Keynotes
- ◆4日目
- Keynotes
- State of the MySQL Community
- The Engines Of Community
- Best of Ignite MySQL
- Sessions
- High-throughput MySQL
- XtraBackup: Hot Backups and More
- How to Fulfil the Potential of InnoDB’s Performance and Scalability
- Replication Tricks & Tips
- Keynote
- RethinkDB: Why Start a New Database Company in 2010
- Keynotes
最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。