AzureドライブでMySQLを起動するための準備
前回 までに、Windows AzureのWorkerRoleでMySQLを動作させ、phpMyAdminを使ってMySQLを管理する手順を紹介しました。ただ、このままではインスタンス(仮想サーバ)の再起動にともなってMySQLのデータが消えてしまいますので、データを永続化する工夫が必要になります。MySQLのデータを永続化する1つの方法は、AzureドライブというWindows Azureのストレージサービスを利用するものです。
Azureドライブは、Azureのストレージサービスの1つであるBlobストレージにVHD(仮想ディスク)をアップロードし、それをAzureの仮想サーバにマウントしてNTFSドライブとして利用するものです。仮想ディスクにあらかじめMySQLの実行ファイルやデータファイルを格納しておくと、Azure上のローカルディスクと同じようにアクセスでき、インスタンスが再起動した場合でもデータが保持されるようになります。
今回は、Azureドライブを利用してMySQLを起動する前段階として、Windows Azureの管理ポータルでストレージサービスを利用できるようにする手順と、VHDを作成してMySQLの関連ファイルを格納し、ストレージサービスにアップロードする手順を紹介します。
管理ポータルでストレージアカウントを作成
まず、ストレージアカウントの作成は、Windows Azure Platformの管理ポータル で行います。管理ポータルのトップページ左側「ホステッドサービス、ストレージアカウント、CDN」をクリックして、ストレージアカウントを選択すると、以下のような画面になります。
図1 管理ポータルで「ストレージアカウント」を選択
有効なサブスクリプションが表示されるので、サブスクリプションを選択し、新規ストレージアカウントをクリックします。すると、次のようなダイアログが表示されます。
図2 ストレージアカウントの新規作成画面
URLの欄は、ここでは「samplestorage001」とします。地域は、東アジアとしておきます。ストレージサービスには、ブロブ(blob) 、テーブル(table) 、キュー(queue)の3種類があり、指定した文字列に.blob.core.windows.net、.table.core.windows.net、.queue.core.windows.netを加えたものがそれぞれのURLとなります。
OKボタンを押すと、数分後にストレージアカウントが「作成済み」になり、右側のプロパティに、「 プライマリー アクセスキー」「 セカンダリー アクセスキー」 「 BlobのURL」などの情報が表示されます。
図3 ストレージアカウントのプロパティ
ストレージにアクセスするには、このアクセス キーが必要です。非表示になっていますが、「 表示」ボタンを押すと、次のようなダイアログが表示され、アクセスキーを知ることができます。また、右側のボタンでクリップボードにコピーすることもできます。
図4 ストレージアクセスキーの表示
ストレージ管理ツールのインストール
Windows Azureの管理ポータルからはストレージの中身を参照することはできません。ストレージにアクセスしてファイルを管理するためには、IDEに備わるストレージ管理機能を利用するか、専用のストレージ管理ツールを利用します。
Windows Azure PDTの場合、リポジトリから「Windows Azure Storage Explorer」をインストールすれば、ストレージへのアクセスができるようになります。第2回でWindows Azure PDTをインストールするときに行なったように、HelpメニューからInstall New Softwareを選択し、以下のように、Windows Azure Storage Explorerを選択します。
図5 Windows Azure PDTにストレージ管理機能を追加
一方、使い勝手や機能を考慮して、専用のストレージ管理ツールを利用する場合、フリーソフトとして公開されている「CloudXplorer」 や「Azure Storage Explorer」 がよく用いられます。
CloudXplorerはBlobストレージ専用の管理ツールで、Azure Storage ExplorerはBlob、Table、Queueの各ストレージに対応した管理ツールです。ここでは、CloudXplorerをインストールして、BlobストレージにAzureドライブをアップロードしてみましょう。
まず、CloudXplorerをインストール、起動後に、FileメニューからAccountを選択します。すると、以下の「Manage accounts」画面が表示されます。
図6 CloudXplorerのアカウント管理画面
Newを押して、Windows Azure accountを選択します。次の画面で、Nameにさきほど作成した「samplestorage001」 、Secret Keyにさきほどのプライマリアクセスキーをコピー&ペーストします。
図7 ストレージアカウントとアクセスキーを入力
次に、作成されたsamplestorage001を選択し、空白が表示されているメイン画面上で右クリックし、NewからContainerと進みます。Containerは、Blobストレージを格納する最上位のディレクトリで、コンテナごとに公開/非公開などのポリシーを設定できます。ここでは「mysql」としておきます。コンテナを作成すると、以下の画面になります。
図8 コンテナ「mysql」を作成
このmysqlコンテナ内に、Azureドライブとして利用する、mysql関連ファイルを格納したVHDをアップロードします。
MySQLを格納したVHDの作成とアップロード
Azureドライブとして利用できるVHDは、NTFS形式でフォーマットされた容量固定のディスクとなります。Windows 7の場合、コマンドラインツールのDiskpart.exeを利用して、以下の手順で作成することができます。MySQLのファイル容量が100MB超であることを踏まえ、ここでは250MBのディスクをファイル名「disk.vhd」 、ラベル「VHD」で作成しています。
DISKPART> create vdisk file="c:\disk.vhd" maximum=250 type=fixed
DISKPART> select vdisk file="c:\disk.vhd"
DISKPART> attach vdisk
DISKPART> create partition primary
DISKPART> format fs=ntfs label="VHD" quick
DISKPART> assign letter=x:
最後の行を実行すると、ローカルコンピュータのXドライブに作成したVHDがマウントされますので、XドライブをWindowsエクスプローラーで開き、MySQLファイルをコピーします。ここでは、第4回でインストールしたC:\Program Files\MySQL\MySQL Server 5.5以下のファイルをコピーすることにします。
コピーするのは、bin、data、include、lib、shareの各フォルダとmy.iniです。以下のようにmysqlフォルダを作成し、その配下にコピーします。
図9 MySQL実行ファイルなどをVHDにコピー
実際にAzureドライブとして起動させるには、my.iniとdataを修正しておく必要がありますが、ひとまずここでは、ファイルを修正せずにアップロードの手順だけ紹介することにします。
MySQLファイルのコピーが終わったら、マウントしたVHDを取り外します。VHDを取り外すには、Diskpart.exeのコマンドライン上から、下記のコマンドを実行します。
DISKPART> detach vdisk
なお、VHDの作成は、GUIからも可能です。その場合、スタートメニューから「Create and format hard disk partitions」などを検索して「Disk Management」を起動します。
次に、CloudXplorerに戻り、mysqlコンテナを選択して、空白が表示されているメイン画面上を右クリックし、「 Upload page blob」を選びます。
図10 CloudXplorerでUpload page blobを選択
図11 作成したdisk.vhdを選択しアップロード
さきほど作成したC:\disk.vhdを選択すると、アップロードが始まります。容量250MBのファイルですので、それなりに時間がかかると思います。
Azureドライブを利用するうえで必要になるストレージアカウントの作成とVHDの作成、アップロードの手順は以上です。次回は、実際にAzureのインスタンスでAzureドライブをマウントし、MySQLを起動させて、データが永続化されることを確認してみたいと思います。