Windows Azure PlatformでMySQLを動作させるには、大きく2つの方法があります。1つは、WorkerRoleで動作させる方法です。WorkerRoleとは、Windows Azure上のIISが提供するWebアプリケーションをホストする環境のことです。前回PHPを動作させるために利用したWebRoleと似ていますが、WebRoleがHTTP/HTTPSリクエストを受け付けるのに対し、WorkerRoleは定期的なタスクの実行などバックグラウンドの処理に用いられるという違いがあります。また、前回少し触れたように、WorkerRoleで動作するMySQLのデータは、サービス(サーバ)を再起動すると初期状態にリセットされてしまいますので、ストレージに保存(同期)するなどの処理が必要になります。
Role名を「WorkerRole」とし、MySQL Runtimeの場所に「C:\Program Files\MySQL\MySQL Server 5.5」を設定します。データベースサイズを1000MBとし、Rootパスワードに先ほど設定したパスワードを入力します。続けてNextを押すと、設定した各ロールの確認画面が表示されますので、「Finish」を押してプロジェクトを作成します。
次に、MySQLをインストールした「C:\Program Files\MySQL\MySQL Server 5.5」をExplorerで開きます。配下には、bin、data、include、lib、shareなどのフォルダがありますので、各フォルダをEclise内の「Sample2_WorkerRole」にドラッグ&ドロップするなどしてインポートします(Explorerを使ってワークスペースに設定している「C:\inetpub\wwwroot」内にコピーし、Eclise上でF5キーを押して再読み込みするかたちでもかまいません)。いずれにしても、次のようなフォルダ構成にします。
図24 mysql配下にbinなどをインポートして追加
なお、MySQLのデータディレクトリ(my.iniでのdatadir)は、デフォルトで「C:\ProgramData\MySQL\MySQL Server 5.5\data」になっています。
ローカルで追加したrootパスワードやデータベース、テーブルなどのデータをAzureにデプロイするには、C:\ProgramData\MySQL\MySQL Server 5.5\data配下のファイルを「Sample2_WorkerRole\mysql\data」にコピーする必要があります。
実際、Windows Azureメニューから「Run Windows Azure PHP Project in Development Fabric」を実行してみると、Eclipseのコンソールに(図27)のようなエラーが出力されます。
図27 エラー表示
Error : CloudServices41 : The entrypoint WorkerRole1.dll is not a valid assembly. Please provide a relative path to the binary that implements the entrypoint.