tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

MySQL ユーザコンファレンスに行ってきました (1日目)

MySQL ユーザコンファレンスに行ってきました。自分が受講したセッションについてざっくりまとめます。

※あくまでも私の聞いた(つもりの)内容と私が書いたメモが元になっておりますので、実際のセッションや発言とは異なる可能性があります。

E-1マイグレーションの基礎

Oracle など、他の DB から MySQL に移行する際の概要に関するセッション。

マイグレーションチェックリスト

MySQL の PS 部隊が使っているチェックリストらしい。どのくらい移行が大変かの目安になるようだ。

  • OLTP か DWH か Read-Intensive か?
    • ストレージエンジンの選択に影響
  • 期間
  • ツール
    • ETL, スクリプト, 手動での書き換え, PS
    • PL/SQL, T-SQL など、DB 独自の機能を使っていると移行が大変
      • この場合は手動で書き換えるしかない
  • どんなデータベースオブジェクトがあるか?
  • 外部の C プログラムがどのくらいあるか?
    • (オレ註: Perl とか他のプログラムでも影響あると思うなぁ)
  • 帳票はどのくらいあるか?
  • DB のサイズはどのくらいか?
    • ストレージエンジンの選択に影響
  • 同時ユーザ数
  • 単位時間あたりのクエリ量
  • 移行したついでにデータ量を増やしたり、可用性を上げたりするか?
Oracle -> MySQL の移行
  • プロプライエタリからオープンへの移行というメリットもあるが、一番のメリットはコスト
  • データ型はだいたいサポートされる
    • ROWID, Interval ほげほげ, TIMESTAMP などはダメ
  • LOB, 文字列, 数値は同等の機能を持ったデータ型に置き換える
  • PL/SQL は手動での書き換えが必要

(オレ註: 結構大変そうだ...)

Migration Toolkit
  • MySQL が提供する移行ツール
  • GUI ツール
  • 直接テーブルを作成することもできるし、作成スクリプトを作ることもできる
MS SQL Server -> MySQL の移行
  • 基本データ型は大体使える
    • でも型名の置き換えは必要
  • T-SQL は手作業で書き換えが必要
  • Migration Toolkit も使える
Q.A.
  • 質問があまりなかったので、発表者から逆質問。

(発表者) : 「この中で、他の DB から MySQL に置き換えた経験のあるひとは?」

  • > 挙手した人が1名

(発表者) : どうだった?
(挙手した人) : 結構大変。Oracle -> MySQL の移行で、Oracle だといい加減にインデックスを張ってもそこそこパフォーマンスが出るが、MySQL だとかなりチューニングが必要だった
(発表者) : MySQL のバージョンは?
(挙手した人) : 4.X
(発表者) : 4.X だと今よりパフォーマンスが良くない

所感

やはりマイグレーションは大変そうだな、というのが第一印象。とくに Oracle を使っている場合はコストメリットは大きいけれども、移行自体にかなりコストがかかってしまうのではないか。Migration Toolkit はどこまで使えるか正直疑問。

E-2 Memcached and MySQL

  • 立見が出てた。みんな興味があるみたい
出自
  • LiveJournal というところで、30GB のキャッシュ/æ•°TB の DB を実装使っているときに作ったらしい。
  • 今では mixi など、色々な所で使われている
アーキテクチャ
  • サーバはシンプル
  • クライアントはサーバの情報を持つ
    • フェイルオーバーもクライアントで行う
  • 認証はできない
    • LAN 内に入れること
  • Consistent Hash というしくみを使っているらしい
libmemcached
  • C/C++ のライブラリ
    • Perl, Ruby などの LL もこれを使っている
  • m_get という同時 get のインターフェースがある
    • パフォーマンスがいいらしい
プロトコル
  • HTTP ã‚„ SMTP などのように、telnet して叩けるような簡易な仕組みになっている
負荷
  • CPU はあまり使わない
    • ほぼ 0
最新リリース(1.2.5)について
  • 複数のネットワークインターフェースのサポート
  • ツール類の整備
  • Solaris 対応
今後について
  • バイナリプロトコルのサポート
    • google の Protocol Buffers を意識してるのかな?
  • Consistent Hash 以外のエンジンのサポート
    • とくに Queue をサポートしたいらしい
Q.A.

Q. サンプルで、DB のトリガーで memcached を叩いているが、良いのか?ドキュメントには NG だと書いてあったが。
A. 問題ない。実際に使っている企業もある。ただ、トリガーを使うとパフォーマンスが良くないから、私なら普通の select と insert を使う

所感

難解な内容だったが、かなり興味深いものだった。最近のメジャーな Web 系の企業では、良く使われているらしい。企業毎に色々な構成があってそれが面白かった。

E-3 MySQL Enterprise ツールのご紹介: Workbench、Query Analyzer、Proxy

Enterprise Edition を購入した際に利用できるツールについて

  • Workbench
  • Enterprise Edition
  • Enterprise Monitor
  • Query Analyzer
Workbench
  • E-R図の作成などを行うツール
  • 現時点では Windows 用
    • Linux, Mac は CYQ4 2009 にサポート予定
  • 既存 DB のリバースエンジニアリング
    • DB にアクセスして E-R図を作成する
  • DB 間の比較機能
    • 例) 本番環境 <=> 開発環境の比較
  • 同期化
    • 比較して差分のあった部分を同期する
    • スキーマのみ。データはできない
  • Free版と有償版($99)がある
    • 利用できる機能に差がある
Enterprise Edition について
  • DB のサポート
    • 月次アップグレード
    • HotFix etc
  • モニタツール
  • サポート
    • Plutinum, Gold など
  • 1年毎の契約
Enterprise Monitor
  • Web ベースのモニタリングツール
  • クライアントにはエージェントをインストールする必要がある
  • SlowQuery Log
    • 所定の時間以上かかっているクエリを検出
    • インデックスがないクエリを検出 etc.
  • Process List
    • 現在のプロセスを見る
  • EXPLAIN
    • クエリの前につける
    • truss/strace の SQL 版のような感じ
  • SNMP トラップも可能
Query Analyzer
  • クエリの統計を表示するツール
  • Enterprise Monitor に最近統合された
  • MySQL Proxy 上に構成されている
    • Proxy は通信を仲介して、その中身を調べる
  • 画面はプロファイラのような感じ
    • 期間などを指定してモニタリング可能
所感

Query Analyzer は有用だと思うが、Enterprise Edition が必須であり、「お金をかけられないときのチューニングをどうするか?」については、ノウハウを溜めないと困るのではないか、と思った。

E-4 MySQL ライセンスの考え方

各製品とライセンス
  • Enterprise Edition と Communitiy Server(GPL)がある
  • Enterprise Edition もデフォルトは GPL
    • 無償で商用ライセンスに変更できる
  • 組込み版(Embedded)というバージョンもある
  • Cluster もある
    • 共有ディスクなしのクラスタ
    • GPL 版と商用版がある
GPL
  • GPL 版は、他者に配布(Distribute)する場合はソースを公開しなければならない
    • 社内での利用なら、修正しても公開の義務はない
    • ASP, ホスティングの場合も社内での利用と同様
FAQ

Q. ISV アプリを作成。ユーザに Communitiy Edition(GPL)をダウンロードして使ってもらう。これは問題ない?
A. NG。JDBC コネクタなど、アプリとの接続部分が GPL の用件を満たせない。商用ライセンスを購入する

Q. 社内で利用している場合。ソースを修正しても、コミュニティにフィードバックしなくても良い?
A. 問題ない。でもフィードバックしてほしい

Q. 開発を Community Server(GPL版)で行い、サポートが欲しいので Enterprise Edition のライセンスを購入した。しかしリスクがあるので、商用版のバイナリと現行を入れ換えるのはしたくない。この場合でもサポートを受けられるか?
A. 問題ない。(ただし、MySQL Cluster の場合はバイナリの入れ換えが必要。クラスタだと色々複雑なためらしい)

Q. Enterprise Edition のサブスクリプションを購入しないとソースがダウンロードできないが、これは GPL 上問題ない?
A. ない。バイナリを提供される顧客にはソースが提供されるから。

Q. ISV が Community Server(GPL版)でソースも含めて顧客に納入。ISV <-> 顧客のライセンスが非GPL。これは問題ない?
A. NG。配布にあたるから。商用ライセンスを購入する必要がある

Q. 3rd ベンダーが MySQL のプラグインを作成した場合のライセンスは?
A. ケースバイケース。(かなり難しそうだった)

Q. Enterprise Edition のソースを(権利を持っている)誰かがアップロードしても(また、そのソースを使っても)問題ない?
A. GPL 上は問題ない。ただし、Sun は責任を持てない(多分サポートが受けられなくなる)

所感

意外と面白かったセッション。自分としても、GPL について誤解していた部分もあった。