MySQLユーザー会2009年冬に参加してきた
元々はkazuhoさんにShibuya.pmの懇親会でお金を借りてしまってて、年内に返したかったという非常に個人的な事情で参加して、tritonnの開発者の人に会えたりする機会はあんまりなさそうだし、運用とかに関して色々聞いてみようかなぁと思って参加しました。
始めなんか機材トラブルみたいなのがあったらしくて、10分ぐらい遅刻してしまったが、何も影響がなかった。
その間に色々突発でセッションがあった。
以下ざっくりとしたまとめ。自分の知識より詳しいレベルの話がかなり多いコアな会だったので色々間違いなどあるかと思いますが、訂正よろしくおねがいします。
奥野さんの話
基本的には、MySQL5.5が出たのでその目玉機能の紹介 http://nippondanji.blogspot.com/2009/12/mysql-55_16.html の内容
とかだった気がします。
tritonnの話
序盤は概要みたいな感じで、あまりコアっぽい話はなかったが、質疑応答などでやや濃い話が聞けた
kazuhoさんの話
個人的によく話してるので、特に目新しい話はなかった気もする。
懇親会
- tritonnよくぶっ壊れる
- 自分も経験あり。一番最近起きたのは社内のサーバーが応答しなくなったときに電源断したら、tritonnが起動できなくなったのでinstallやりなおした。
- tritonnはWeb屋さんとしては、replicationしとけばよいので導入は簡単だけど、運用はややめんどうなことも多い。例えば、マスターとスレーブのメジャーバージョンは合わせとかないととか。
- あとは、masterがInnoDBでslaveにtritonnを持ってくる構成とかのときに、MyISAMでないといけないので、最初の前件データとかつくる際にテーブルデータをhotcopyするだけじゃダメなところとか。
- XtraBackupってどうなの?
- あまり利用経験のある人はいなかった
- 作者の木下さんは頼まれて作ったらできちゃっただけなのであまり気にいっていないといっていたw
- 基本的にはLVMと似たようなことをやるらしい
- LVMでは、snapshotを取る命令をした瞬間のsnapshotがとれるが、XtraBackupではinnoDBに命令をして、それ以降のログファイルをうまく解析することで、処理が終わったタイミングでのsnapshotがとれるらしい
- ちゃんとLVMを導入している環境であればバックアップにはLVMで十分で、LVM入っていないけどDB動いちゃってるとかであれば試してみるとよいのかも。
しばらく話していたら突発でセッションができた
XtraDBについて
- http://www.mysqlperformanceblog.com/ の中の人の一人
- おそらくInnoDBに関しては世界一詳しい人の一人
- InnoDB pluginに色々高速化するようなパッチを当てたもの
- 起動時にlogをなめて壊れていないか確認する処理が遅いので10倍くらい高速化するパッチとか
- SSDだと、seekが遅いという前提はないので、HDD前提の余計な処理をしないようにしたようなオプションをつけられるとか
- あとは細かく非常にマニアックなパッチの紹介とかが色々ありましたが、メモを取りわすれたので詳細な中身はあまり思い出せない。あの資料とか公開されてないでしょうか。
libdrizzleについて by tokuhirom
YAPCでやったやつ。libdrizzleは意外とstorageエンジンとか作ってみたりする人でも意外と触ってないらしい。
BSDライセンスというところとか、APIがより洗練されているところがよいので、libmysqlclientの代替としてよいよという話。
- drizzleはutf-8以外サポートしてないんだけど、そういうのはどうなるの?
- 検証していない。ので、誰か調べてくれるとうれしい。たぶん動かないかも。
- 動かないとすればそういう割り切りができる環境ではありかも。
MySQL/ruby by tmtmさん
RejectKaigi2009でやったやつ。
- mysqlプロトコルをしゃべるためにruby1.9のpackとかしたときにエンコーディング情報が抜け落ちてASCII-8BITになってしまうのをどう対策しているかを聞いた
- mysqlでは接続情報にエンコーディング情報があって、それを指定しておけばサーバーサイドで適切なエンコーディング情報に変換して返してくれるのでライブラリではpackしたあとで、接続エンコーディング情報を元にforce_encodingすればよいらしい
- やっぱりRDBMSはすばらしい
Oracleどうなるの?
- Montyの声明に対しては賛否両論を集めているらしい
- あとは...
Spiderについて
- Spiderには複数のクエリを各ノードに対して並列で投げるようなUDFが定義されてる。それを使えばサーバーレベルでNet::Drizzleっぽいことができるかも。
- そのUDF内だとUDF使えて、spiderのbackendにQ4Mみたいなやつを置いたりもできる。(逆にUDFが入ったようなエンジンはバックには置けないらしい
- reshardingするときはどう運用する?
- 現時点だとコマンド1発でできるわけではなく、やや複雑な運用が必要っぽい
- virtical storageエンジンを使って2重にDBを作った状態を作り出して、裏側のnodeを再分配してから投入するとか。
- やっぱりそのあたりはツールが欲しいよね。
- 裏に投げるときはSQLじゃなくてspiderプロトコルとかしゃべるともっと速いんじゃない?って話からMySQL Clusterとの比較論争とか。
- spider storage Engineは単一故障点になるのではないか?
- ならない
- spider storage engineを持ったノードに関してはtable情報くらいしか持っていないので、同じテーブルの状態を作ったノードを複数並べればそのままスケールするはず。
- ただし、spider engineノード間で情報をやりとりはしないので、テーブル情報を変えてreshardingするときはいったん1台にしないと...
あとは2時ぐらいまでぐだぐだ雑談していました
そのあと数名は朝まで飲んでたとか。
遅くまで会場を提供くださったgreeさん本当にありがとうございました。
http://d.hatena.ne.jp/sakaik/20091219/kaikai_2009d_finished にTB送るとよいらしいのでリンク貼っておく。