MySQL: Cloud サービス 「Xeround」を実際に使ってみた

Scalability and High Availability for your MySQL Database in the Cloud
MySQLクラウドサービスがあることを知ったので、実際に使ってみたログ。

MySQLクラウドとは、
client=データを扱う側=connectする側
から見ると
server=データを格納する側=connectされる側
が1台のMySQLに見えるってことのようです。

server側のスケールアウトともなう作業などがなくなるので
非常に手間が減ってうれしいことこの上ない。
が、実際に使ってみないとなんとも言えないので、早速使ってみた。

まずは、サイトに移動してみる。
今はまだBeta版。






アカウントを作ってみるわけですが、
クラウド的な質問が最後に2つ。













データベースの容量をいくつにするか
予想量を記入しないといけないみたいです。

特に考えてないので、
10GB以上を選択しておきました。




もうひとつが、クライアント側のサーバがどこにあるか、
ということを入力する必要があるみたい。
某レンタルサーバや自宅サーバから
つないでみるつもりだったので
「On-premise data center」
を選択したけど、これでよかったのかは謎。
「Other Cloud or Hosting」の方がよかったのかも?

これで、アカウントが作成完了した。










ログインすると上記のような画面になる。初期状態では、databaseがないので、
右上の「+ Create New」でdatabaseを作成する。

作成するときにも、いくつか質問が。

まずは、DB Instanceの初期サイズ。
500Mから変更できないフィールドでした。
たくさんデータを入れてみたいので、
「I want a larger DB Instance during beta」
にチェックをいれておきました。











あとは、データセンターの場所。
XeroundはAmazon EC2の上に
構築されているので、そのデータセンターを
選ばないといけないようです。


選択肢は2つ、アメリカの東か、EU(ヨーロッパのどこか?)の西、の2つ。
どっちも日本から遠そうだなー、と思ったんですが、とりあえず、US Eastを選択しておきました。

というわけで入力完了したので、「Create DB Instance」ボタンを押下すると、
以下のような画面に。













初期化にはしばらく時間がかかるようで、「Initializing(22%)」と表示されて、
100%になるには、2分程度かかりました。
画像上は消してますが、作成したInstance ID, User name, DNS name, Internal IPs
が表示されてます。

Initializingが無事に終了したら、
DNS namesに表示されているサーバにmysql connectしてみます。
自分の場合、2つのDNS namesが表示されましたが、どちらでも
connectできました。

/home/satoshi/Documents% mysql -u*** -h ***.amazonaws.com --port=*** -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.1.42 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

MySQLのバージョンは、(少なくても2011/01現在で)5.1.42みたいです。

次、文字コードを確認。

mysql> show variables like '%char%' \G
*************************** 1. row ***************************
Variable_name: character_set_client
        Value: utf8
*************************** 2. row ***************************
Variable_name: character_set_connection
        Value: utf8
*************************** 3. row ***************************
Variable_name: character_set_database
        Value: latin1
*************************** 4. row ***************************
Variable_name: character_set_filesystem
        Value: binary
*************************** 5. row ***************************
Variable_name: character_set_results
        Value: utf8
*************************** 6. row ***************************
Variable_name: character_set_server
        Value: latin1
*************************** 7. row ***************************
Variable_name: character_set_system
        Value: utf8
*************************** 8. row ***************************
Variable_name: character_sets_dir
        Value: /opt/xeround/sys_***/v***/xdrm/mysql-***/share/mysql/charsets/
8 rows in set (0.25 sec)

mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.44 sec)

mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.37 sec)

latin1になってるので、utf8に変更しておきました。
個人の好みにどうぞ。

次、ユーザ。
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.21 sec)

mysql> use mysql;
Database changed

mysql> select User,Host from user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| root        | localhost |
| *******     | %         |
| xeround_xms | %         |
+-------------+-----------+
3 rows in set (0.39 sec)

mysql> show slave status;
ERROR 1227 (42000): Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation

*******は自分が作ったユーザー、
xeround_xmsはすでに作成されてたユーザー。
xeround_xmlはHostが%なので、権限が気になったけど、Select権限しかありませんでした。

*******が持っていない権限が以下。これ以外はYでした。
        Shutdown_priv: N
         Process_priv: N
            File_priv: N
           Super_priv: N
      Repl_slave_priv: N
     Repl_client_priv: N
なので、
mysql> show slave status;
ERROR 1227 (42000): Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation
などと、エラーになります。

最後に、データを投入してみます。
/Users/satoshi% ls -l web2.sql
-rw-r--r--  1 satoshi  staff  117156703  1 25 23:20 web2.sql

# localのMySQLにデータを投入
/Users/satoshi% time mysql -uroot web2 < web2.sql
1.98s user 0.36s system 2% cpu 1:43.67 total

# Xeroundにデータを投入
/Users/satoshi% time mysql -u*** -p --port=*** -h ***.amazonaws.com web2 < web2.sql
Enter password:
1.97s user 1.28s system 0% cpu 41:36.71 total

と、117Mのデータ投入に40分以上かかっちゃいました、という結果に。
(参考に、Local MySQLに投入すると、2分弱)
環境は、Mac snow leopard + mac port mysql

単純に、性能が悪いのか、最近始まったサービスなのでアクセスが多くて重いのか、
ネットワークが遠いから、なのかまではちゃんと調べてないので、
あくまで参考程度に。

アカウントの作成や、データの投入は問題なくできたので、
今後もっと詳しくみていこうと思う。



参考:
クラウド対応のスケーラブルなMySQLデータベース、米Xeroundが発表 - Publickey