61
MySQL Solution Company Published2014/04 Publisher:株式会社スマートスタイル Microsoft Azure MySQL サーバ 5.6 導入ガイド

Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

MySQL Solution Company

Published:2014/04

Publisher:株式会社スマートスタイル

Microsoft Azure

MySQL サーバ 5.6 導入ガイド

Page 2: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

1

注意事項注意事項注意事項注意事項

本ガイドに記述されている内容は、本ガイド作成時点(2013 年 12 月)の環境(東

アジア)を利用したものです。そのため、ご利用の環境によっては表示内容や結果

が異なる可能性があります。また、クラウド環境では、マルチテナントですので

オンプレミスや非クラウド環境に比べ性能に差が出る場合があります。「付録2

パフォーマンストピック」で性能向上のための方法を記述した内容がありますが、

性能を重視するシステムの場合には、あらかじめ設計段階においてこの点を充分

に考慮してください。

記載した内容は一切、性能保証などを意味するものではありません。

本資料中の技術的あるいは編集上の誤り、省略に対してはいかなる責任も負いか

ねます。

※ 商標、登録商標について

MySQL の名称及びロゴは、日本オラクル社の登録商標または商標です。その他記

載の会社名、製品名、各社の商標もしくは登録商標です。

本資料の一部または全部を著作権法の定める範囲を超え、無断で複写、複製、転

載、データ化、ファイルに落とすことを禁じます。

2014年 4 月 4 日に「Windows Azure」から「Microsoft Azure」に名称が変更さ

れました。

Page 3: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

2

目次目次目次目次

1. はじめに............................................................................................................................. 4

2. 本ガイドの目的.................................................................................................................. 6

3. Microsoft Azure 環境の構築 .............................................................................................. 8

3.1 Microsoft Azure インスタンスの選択 .......................................................................... 8

3.2 Microsoft Azure へのログイン ..................................................................................... 9

3.3 アフィニティグループの作成....................................................................................... 9

3.4 仮想ネットワークの作成.............................................................................................11

3.5 ストレージアカウントの作成......................................................................................11

4. Linux サーバの構築 ......................................................................................................... 13

4.1 Linux サーバの構築 .................................................................................................... 13

4.2 仮想マシンの設定....................................................................................................... 14

5. イメージキャプチャを使った仮想マシンの複製............................................................. 15

6. データディスクの追加..................................................................................................... 17

6.1 データディスクの追加 ............................................................................................... 17

6.2 データディスクの組込 ............................................................................................... 18

7. MySQL のインストール・設定....................................................................................... 19

7.1 MySQL のインストール・設定(シングル構成) ......................................................... 19

7.2 MySQL のインストール・設定(マスタ・スレーブ構成)........................................... 23

7.2.1 my.cnf の編集........................................................................................................ 23

7.2.2 レプリケーションを開始 ..................................................................................... 24

7.3 MySQL のインストール・設定(マルチマスタ構成) .................................................. 25

7.3.1 my.cnf の編集........................................................................................................ 25

7.3.2 レプリケーションを開始 ..................................................................................... 25

補足....................................................................................................................................... 28

1. MySQL 所要メモリ算出方法........................................................................................ 28

2. 仮想マシンサイズの変更方法 ...................................................................................... 28

3. swapファイルの追加 ................................................................................................... 29

付録 1 バックアップとリカバリ.......................................................................................... 30

1.1 バックアップ方法 ...................................................................................................... 30

1.2 バックアップ保管用ディスクの設定 ......................................................................... 30

1.3 XtraBackup インストール ......................................................................................... 31

1.4 バックアップ.............................................................................................................. 31

1.5 バックアップからのリカバリ .................................................................................... 32

Page 4: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

3

付録 2 パフォーマンストピック.......................................................................................... 34

2.1 チューニング概要 ...................................................................................................... 34

2.2 仮想ディスクの IOPS性能........................................................................................ 35

2.3 パラメータチューニング ........................................................................................... 36

2.4 大規模パフォーマンスチューニングのヒント .......................................................... 39

付録 3 MySQLの高可用性と負荷分散................................................................................. 41

3.1 マスタ・スレーブ構成のレプリケーションの構築 ................................................... 44

3.1.1 レプリケーションの開始..................................................................................... 44

3.1.2 mysqlfailover用のアカウント作成 ..................................................................... 45

3.2 監視サーバの構築(mysqlfailover稼動)..................................................................... 46

3.3 mysqlfailoverの動作検証 .......................................................................................... 47

付録 4 他社サービスと比較した MySQL の性能比較 ......................................................... 50

本稿の目的............................................................................................................................ 51

環境....................................................................................................................................... 52

調査内容 ............................................................................................................................... 54

調査結果 ............................................................................................................................... 55

結果考察 ............................................................................................................................... 58

環境構築手順 ........................................................................................................................ 59

lvm ボリュームの作成 ................................................................................................... 59

MySQL のインストール ............................................................................................... 60

tpcc-mysqlのインストールと設定 ............................................................................... 60

Page 5: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

4

1. はじめにはじめにはじめにはじめに

Executive SummaryExecutive SummaryExecutive SummaryExecutive Summary ▼▼▼▼ Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure クラウドプラットフォームの利用クラウドプラットフォームの利用クラウドプラットフォームの利用クラウドプラットフォームの利用

Microsoft 社のクラウドサービス「Microsoft Azure」は、オープンプラットフォ

ームと豊富なアプリケーションサービスと柔軟なオンデマンドサービスの上で、

スモールスタートから既存システムの移行や新規案件構築など状況に応じた適切

なクラウドプラットフォームが提供され、お客様は適切なサービスを選択できま

す。

▼▼▼▼ Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure 上で上で上で上で Linux + MySQLLinux + MySQLLinux + MySQLLinux + MySQL の構築を行うの構築を行うの構築を行うの構築を行う

本ガイドでは Microsoft 社が提供する「Microsoft Azure」クラウドサービスを使

い、Linux サーバを導入し、オープンソースの代表的なデータベースである

MySQL の構築方法を説明します。

▼▼▼▼ MySQL MySQL MySQL MySQL のののの 3333 つの代表的構成での導入をガイドつの代表的構成での導入をガイドつの代表的構成での導入をガイドつの代表的構成での導入をガイド

構築に関してはシンプルなシングルサーバ構成、信頼性やアクセス容易性を強化

するMySQLのレプリケーション構成、MySQLマルチマスタ構成の3つの代表的

な構成での構築方法を紹介します。

本ガイドには各手順の設定画面と必要な設定情報をわかりやすく示しております

ので、記述されている手順をすすめることで最終的な目的である MySQL の構築

を、初めてされるかたにも完了できるよう構成されています。

▼▼▼▼ 運用までカバーしているので安心してご利用可能運用までカバーしているので安心してご利用可能運用までカバーしているので安心してご利用可能運用までカバーしているので安心してご利用可能

また、本ガイドでは MySQL の構築にとどまらず、日々の MySQL 運用を想定し

た、Microsoft Azure環境でのデータバックアップ・リカバリの方法や、将来的に

ディスク I/Oの性能劣化となった際のMicrosoft Azure環境で性能拡張する手法に

ついても記述しました。

以上、本ガイドでは導入から運用・システム拡張についてもカバーしております

ので、Microsoft Azureでの MySQL を安心してご利用開始していただけるものと

考えます。

「付録 3」、MySQL 高可用性と負荷分散では MySQL で一般的に利用している

MySQL レプリケーションの分散機能やアプリケーションと中継モジュールを利

Page 6: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

5

用した負荷分散製品を紹介しています。さらに、高可用性構成として MySQL5.6

から追加された新規機能 mysqlfailover の設定、mysqlfailover 障害発生からの復

旧手順について記述しました。オンプレミス環境から移行するお客様や高可用性

の構成について関心のあるかたは一読をお願いいたします。

▼▼▼▼ 他社サービスとの比較他社サービスとの比較他社サービスとの比較他社サービスとの比較

最後、「付録4」は Microsoft Azure の DataBase As a Service が提供している

MySQL サービス「ClearDB」と他社クラウドが提供するMySQLサービスを使い、

負荷試験ツール tpcc-mysql を使った性能比較を株式会社 pnop が検証を行いまし

た。

本資料を加え他社との比較に関心のあるかたは一読をお願いいたします。

※株式会社 pnop のご紹介

Microsoft Azure のリリース当初より Microsoft Azure の導入コンサルティングや

Azure に最適化された Web サービスの開発、サーバ構築を中心としたサービスを

提供し、MySQL を始めとした OSS の Microsoft Azure での活用を積極的に支援

しています。

Page 7: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

6

2. 本ガイドの目的本ガイドの目的本ガイドの目的本ガイドの目的

図1.にある構築手順に従い、図 2.のイメージ図で示す MySQL の構築を行いま

す。各サーバには、表1.のソフトウェアをインストールします。

また、運用に関わるいくつかのトピックス(バックアップとリカバリ、パフォー

マンストピック、新機能mysqlfailoverの設定とリカバリ手順)について付録に記

述します。

図図図図 1111 Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure 環境での環境での環境での環境での MySQLMySQLMySQLMySQL の構築手順の構築手順の構築手順の構築手順

図図図図 2222 Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure 環境での構築イメージ環境での構築イメージ環境での構築イメージ環境での構築イメージ

Page 8: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

7

表表表表 1111 サーバソフトウェア環境サーバソフトウェア環境サーバソフトウェア環境サーバソフトウェア環境

製品名

OS Open Logic CentOS 6.3

データベース MySQL Community Server 5.6.14

perl-DBD-MySQL ドライバ

MySQL-connector-python 1.0.12

ユーティリテイ MySQL-utilities 1.3.4

バックアップツール Xtrabackup

以降、以下の内容を順に追って説明します。

� Microsoft Azure環境の構築

� Linuxサーバの構築

� イメージキャプチャを使ったサーバの複製

� データディスクの追加

� MySQL イストール・設定

� シングルマスター構成

� マスタ・スレーブ構成

� マルチマスタ構成

付録1:バックアップとリカバリ

付録2:パフォーマンストピック

(VHDストライピングを活用したディスク io 性能の向上)

付録3:MySQL の高可用性と負荷分散

付録4:他社サービスと比較したMySQLの性能比較

付録4は株式会社 pnop様が検証した資料

Page 9: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

8

3. Microsoft Azure 環境の構築環境の構築環境の構築環境の構築

最初におこなう手順は Microsoft Azure 環境を構築することです。

以下の手順にしたがって進めてください。

3.1 Microsoft Azureインスタンスの選択

下記「表2」「表3」に示す Microsoft Azure で提供されるサービスの全てのイン

スタンスが、MySQL 構築のために選択いただけます。要求される MySQLシステ

ムの性能条件により適切なタイプを選択ください。なお、MySQLの所要メモリ容

量の計算方法については、「補足1.MySQL 所要メモリ算出方法」を参照くださ

い。

表表表表 2222 標準インスタンス標準インスタンス標準インスタンス標準インスタンス

サイズサイズサイズサイズ CPUCPUCPUCPU

コアコアコアコア メモリメモリメモリメモリ

最大データ最大データ最大データ最大データ ディスク数ディスク数ディスク数ディスク数

((((各ディスク各ディスク各ディスク各ディスク 1 TB) 1 TB) 1 TB) 1 TB)

最大最大最大最大 IOPS IOPS IOPS IOPS

((((各ディスク各ディスク各ディスク各ディスク 500) 500) 500) 500)

Extra SmallExtra SmallExtra SmallExtra Small 共有 768 MB 1 1 x 500

SmallSmallSmallSmall 1 1.75 GB 2 2 x 500

MediumMediumMediumMedium 2 3.5 GB 4 4 x 500

LargeLargeLargeLarge 4 7 GB 8 8 x 500

Extra LargeExtra LargeExtra LargeExtra Large 8 14 GB 16 16 x 500

表表表表 3333 メモリ集中型インメモリ集中型インメモリ集中型インメモリ集中型インスタンススタンススタンススタンス

サイズサイズサイズサイズ CPUCPUCPUCPU

コアコアコアコア メモリメモリメモリメモリ

最大データ最大データ最大データ最大データ ディスク数ディスク数ディスク数ディスク数

((((各ディスク各ディスク各ディスク各ディスク 1 TB) 1 TB) 1 TB) 1 TB)

最大最大最大最大 IOPS IOPS IOPS IOPS

((((各ディスク各ディスク各ディスク各ディスク 500) 500) 500) 500)

A5A5A5A5 2 14 GB 4 4 x 500

A6A6A6A6 4 28 GB 8 8 x 500

A7A7A7A7 8 56 GB 16 16 x 500

Page 10: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

9

3.2 Microsoft Azureへのログイン

Microsoft Azureポータル(http://www.Microsoft Azure.com)画面にログインし、

以下の設定を実施します。

3.3 アフィニティグループの作成

Microsoft Azureインフラストラクチャは巨大なデータセンターで構築されている

ため、複数の仮想マシンやストレージで通信が発生するような構成では、それぞ

れの配置場所によってネットワークレイテンシー(遅延)が発生する可能性を考

慮すべきです。Microsoft Azure ではアフィニティグループを指定することで、仮

想マシンやストレージ(など)の配置をある程度制御することが出来ます。

手順1: ポータル画面、左メニューの下部「設定」をクリックし、「設定」画面の上部「ア

フィニティグループ」リンクを選択します。

Page 11: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

10

手順2: 表示された「アフィニティグループ」の画面下にある「追加」ボタンよりアフィ

ニティグループを作成します。

Page 12: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

11

3.4 仮想ネットワークの作成

クラウドとローカルマシンを 1:1でシンプルに IPSec接続した、クラウド/オンプ

レミスをまたいだ仮想プライベートネットワーク(VPN)を利用しセキュアな環境

で構築とシステム運用できるための設定をします。

Microsoft Azureポータル画面の左下にある「+新規」-「ネットワークサービス」

-「仮想ネットワーク」-「簡易作成」から、「アフィニティグループ」に作成した

「アフィニティグループ」を指定して仮想ネットワークを作成します。

3.5 ストレージアカウントの作成

ストレージ アカウントを使用すると、アプリケーションから、地理的な領域内に

置かれている Microsoft Azure の BLOB サービス、テーブルサービス、キュー

サービスにアクセスできます。Microsoft Azure ストレージを使用するには、スト

レージアカウントが必要です。

Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure でででで MySQLMySQLMySQLMySQL を動作させる場合には、仮想マシン内のローカルディを動作させる場合には、仮想マシン内のローカルディを動作させる場合には、仮想マシン内のローカルディを動作させる場合には、仮想マシン内のローカルディ

スクを使うことは推奨しません。スクを使うことは推奨しません。スクを使うことは推奨しません。スクを使うことは推奨しません。

Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure ストレージストレージストレージストレージを使い、データディレクトリ、ログディレクトリ、を使い、データディレクトリ、ログディレクトリ、を使い、データディレクトリ、ログディレクトリ、を使い、データディレクトリ、ログディレクトリ、redoredoredoredo

ログ領域、テンポラリ領域等、必要な領域をわりあててくログ領域、テンポラリ領域等、必要な領域をわりあててくログ領域、テンポラリ領域等、必要な領域をわりあててくログ領域、テンポラリ領域等、必要な領域をわりあててください。ださい。ださい。ださい。

Microsoft Azure ポータル画面の左下にある「+新規」-「データサービス」-「ス

トレージ」より、「簡易作成」-「アフィニティグループ」に作成した「アフィニテ

ィグループ」を指定してストレージを作成します。

Page 13: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

12

Page 14: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

13

4. Linux サーバの構築サーバの構築サーバの構築サーバの構築

4.1 Linuxサーバの構築

Microsoft Azure ポータル画面の左下にある「+新規」-「コンピューティング」-

「仮想マシン」-「ギャラリから」をクリックします。各項目に対して以下の情報

を設定してください。

表表表表 4444 仮想マシンの構成仮想マシンの構成仮想マシンの構成仮想マシンの構成

イメージの選択 「OpenLogic CentOS6.3」を選択

クラウドサービス 「新しいクラウドサービスの作成」を選択

クラウドサービス DNS名 任意の DNS名を設定

地域/アフィニティグルー

プ/仮想ネットワーク

前述で作成した仮想ネットワークを選択

ストレージアカウント 前述で作成したストレージアカウントを設定

可用性セット 「可用性セットの作成」を選択し、任意の可用性セット

名を設定

・ 可用性セットについて

同一の可用性セットを指定する事で、2台の仮想マシンは異なるラックに配置さ

れます。これにより、異なる障害ドメイン(フォールトドメイン)となる為、一方の

仮想マシンが格納されたラックに障害が発生したとしても、もう一方の仮想マシ

ンは稼動し続ける事ができます。

複数の仮想マシンに MySQL サーバを構築する場合、同じ可用性セット内に異な

る役割のサーバを配置せずに、以下のように可用性セットを分けて下さい。

� マスタサーバと、マスタ障害時にマスタ昇格予定のスタンバイサーバ

� スレーブサーバ群

上記振り分けをする事により、ラックに障害が発生したとしても、

「マスタサーバと、マスタ障害時に昇格予定のスタンバイサーバ」、及び「スレー

ブサーバ群」のそれぞれのリソース間で、必ず1台は稼動し続ける事となります。

・ 同一クラウドサービス内であればプライベート IPアドレスでアクセスが可能です。

Page 15: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

14

4.2 仮想マシンの設定

Microsoft Azure ポータル画面で作成した仮想マシン(Cent OS)にログインし、

以下の手順で仮想マシンの設定を行います。

DNSサーバの設定、もしくは hosts ファイルにて、各サーバ間及び yumリポジト

リ等へのアクセスが可能である事を前提としています。

・ 以降コマンドラインでの入力は罫線内に例示します。

手順1: root パスワードの設定

$ sudo passwd root

手順2: SELinux の無効化

# vi /etc/selinux/config

・・・・

SELINUX= enforcing

SELINUX=disabled

Page 16: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

15

5. イメージキャプチャを使った仮想マシンの複製イメージキャプチャを使った仮想マシンの複製イメージキャプチャを使った仮想マシンの複製イメージキャプチャを使った仮想マシンの複製

2 台目以降の作成には「イメージキャプチャ」機能が大変便利です。この機能を使

って 2 台目以降のサーバを作成してゆきます。

1 台目のサーバと同様、Microsoft Azure ポータル画面の左下にある「+新規」-

「コンピューティング」-「仮想マシン」-「ギャラリから」をクリックします。各

項目に対して以下の情報を設定してください。

表1: 仮想マシンの構成(2台目以降)

イメージの選択 「登録したイメージキャプチャ」を選択

クラウドサービス 1 台目で作成したクラウドサービスを選択

クラウドサービス DNS名 選択不可

地域/アフィニティグループ/

仮想ネットワーク

選択不可

ストレージアカウント 1 台目と同じストレージアカウントを設定

可用性セット 4-2-1-2.「可用性セットについて」を参照

・ 作成方法は「linux を実現する仮想マシンのイメージをキャプチャする方法」を

参照してください。

URL

http://www.Microsoft

Azure.com/ja-jp/manage/linux/how-to-guides/capture-an-image/

・ イメージキャプチャをとるタイミングは状況によって別タイミング(例えば、デ

ータディスクを追加せずに MySQL のインストールに進み、その手順を完了したタ

イミング)がよいこともあります。

Page 17: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

16

Page 18: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

17

6. データディスクの追加データディスクの追加データディスクの追加データディスクの追加

前章までで作成したサーバに対して、データディスクを追加していきます。

以下の手順で進めてください。

6.1 データディスクの追加

データディスクを仮想マシンに接続してアプリケーションデータを保存できます。

データディスクは仮想ハードディスク(VHD)です。仮想マシンでデータディスク

を管理する方法は、オンプレミスのサーバで管理する方法と同じです。

・ MySQL が利用するディスクは全て「ホストキャッシュ設定:なし」を選択してく

ださい。

Microsoft Azureポータル画面の左メニューの「仮想マシン」をクリック後、表示

された仮想マシンの一覧から対象の仮想マシンを選択状態にし、画面下の「ディ

スクの接続」-「空のディスクの接続」より、「ホストキャッシュ設定:なし」を選

択してディスクを追加します。

・ 追加方法は Microsoft Azure が提供する「データディスクを仮想マシンに接続する

方法」を参照してください。

・ 参考URL http://www.Microsoft

Azure.com/ja-jp/manage/windows/how-to-guides/attach-a-disk/

Page 19: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

18

6.2 データディスクの組込

手順1: ディスクのフォーマット

「データディスクの追加」で追加したディスクへファイルシステムを作成します。

fdisk は、「/dev/sdc」のディスクに対して実行して下さい

手順2: マウントポイントの作成

本検証ではデータ「/data/mysql」ディレクトリ名でマウントします。

# mkdir -m 755 -p /data/mysql

手順3: マウント情報の設定

「/etc/fstab」にマウント情報を設定します。

# vi /etc/fstab

~~~~~

/dev/sdc1 /data/mysql ext4 defaults,nobarrier 0 0

手順4: マウント

「/etc/fstab」への設定が完了後、マウントします。

# mount /dev/sdc1

Page 20: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

19

7. MySQL のインストール・設定のインストール・設定のインストール・設定のインストール・設定

前章までで作成した仮想マシンに対して、いよいよ MySQL をインストールし設

定していきます。3 つの代表的構成(シングル、マスター・スレーブ、マルチマス

ター)についてそれぞれ節を分けて記述してありますので、必要な節へ進んでく

ださい。

7.1 MySQL のインストール・設定(シングル構成)

Microsoft Azureポータル画面で作成した仮想マシン(Cent OS)にログインし、以

下の手順で MySQL のインストールと設定を行います。

手順1: MySQL-shared-compat のインストール

# rpm -ivh MySQL-shared-compat-5.6.14-1.el6.x86_64.rpm

Preparing... ############################ [100%]

1:MySQL-shared-compat ############################ [100%]

デフォルトで、異なるバージョンの「MySQL-libs」がインストールされており、

「MySQL-Server Ver5.6」とコンフリクトする為、デフォルトの「MySQL-libs」

を「MySQL-shared-compat」に置き換えます。

手順2: MySQL-libs のアンインストール

# rpm -e mysql-libs-5.1.67-1.el6_3.x86_64

手順3: MySQL-client のインストール

# rpm -ivh MySQL-client-5.6.14-1.el6.x86_64.rpm

Preparing... ############################ [100%]

1:MySQL-client ############################ [100%]

手順4: MySQL-serverのインストール

# rpm -ivh MySQL-server-5.6.14-1.el6.x86_64.rpm

Preparing... ############################ [100%]

1:MySQL-server ############################ [100%]

2013-10-29 14:12:36 0 [Warning] TIMESTAMP with implicit DEFAULT value is

deprecated. Please use --explicit_defaults_for_timestamp server option (see

documentation for more details).

~~~~~~~~~~

Support MySQL by buying support/licenses at http://shop.mysql.com

Page 21: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

20

New default config file was created as /usr/my.cnf and

will be used by default by the server when you start it.

You may edit this file to change server settings

手順5: MySQL の起動

# /etc/init.d/mysql start

Starting MySQL. [ OK ]

手順6: MySQL の root ユーザのパスワードを確認

MySQL5.6 から MySQL サーバインストール時に MySQL へログインする root

ユーザのパスワードが「/root/.mysql_secret」ファイルに書き込まれます。MySQL

へ rootユーザでログインするには、以下の手順で仮パスワードを確認します。

# vi /root/.mysql_secret

# The random password set for the root user at Tue Oct 29 14:12:48 2013 (local

time): Z4Kystm9

手順7: mysql_secure_installation を実行

MySQL サーバのインストール中に匿名ユーザ等が登録されます。このツールを実

行しセキュアな環境を作ります。

# /usr/bin/mysql_secure_installation

~~~~~~~~~~

Enter current password for root (enter for none):

前述で確認しました rootユーザのパスワードを入力して Enterを押下します。

Change the root password? [Y/n]

root ユーザのパスワードを変更する場合は Y を、変更しない場合は n を入力して

Enter を押下します。

Remove anonymous users? [Y/n]

Y を入力して Enter を押下し、anonymous ユーザを削除します。

Disallow root login remotely? [Y/n]

Y を入力して Enter を押下し、root ユーザのリモートログインを許可しないよう

Page 22: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

21

にします。

Remove test database and access to it? [Y/n]

Y を入力して Enter を押下し、testデータベースを削除します。

Reload privilege tables now? [Y/n]

Y を入力して Enter を押下し、権限テーブルを再読み込みします。

手順8: MySQL を停止

# /etc/init.d/mysql stop

Shutting down MySQL...... [ OK ]

手順9: MySQL のファイル群を作成したディレクトリにコピー

MySQL のファイル群を OS 内部のディスク領域から仮想ディスク(VHD)へ移

行します。

# cp –pr /var/lib/mysql/* /data/mysql/

手順10: マウントディレクトリの権限設定

# chown mysql:mysql -R /data/mysql

手順11: my.cnf を編集

表表表表 5555 MySQLMySQLMySQLMySQL 構成パラメータ構成パラメータ構成パラメータ構成パラメータ

設定パラメータ 設定値

[mysqld]

server_id 1000

datadir /db/mysql

tmpdir /mnt/resource/mysql

log_bin binlog-hostname

innodb_flush_method O_DIRECT

binlog_format mixed

inodb_file_per_table

character-set-server utf8

[mysqld_safe]

log-error /db/mysql/mysqld.log

Page 23: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

22

手順12: MySQL を起動

# /etc/init.d/mysql start

Starting MySQL......... [ OK ]

上記手順により以下ができます。

図図図図 3333 Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure 上のシングサーバの構成上のシングサーバの構成上のシングサーバの構成上のシングサーバの構成

・ MySQL Ver5.6 では、RPM インストール直後の my.cnf は「/usr/my.cnf」となっ

ております。必要に応じて、my.cnfのパスは適宜変更して下さい。

Page 24: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

23

7.2 MySQL のインストール・設定(マスタ・スレーブ構成)

本節では、2台のマスタ・スレーブ構成の動作確認を行います。

2台の仮想マシンを作成し、MySQL のインストールを行います。

Microsoft Azureポータル画面での「仮想マシンの作成」については、1台目と2

台目で作成パラメータが異なりますので、「7.2.1 MySQL 構成パラメータの設定」

を参照して下さい。以下が Microsoft Azure 仮想マシン環境でのレプリケーション

環境の構成になります。

図図図図 4444 Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure 上のマスタ・スレーブの構成上のマスタ・スレーブの構成上のマスタ・スレーブの構成上のマスタ・スレーブの構成

7777....2222....1111 my.cnf の編集の編集の編集の編集

「server_id」を除くパラメータは、全て前章のシングル構成と同じパラメータ設

定を行います。「server_id」のみ、MySQL データベースサーバごとに異なる値を

設定して下さい。

Page 25: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

24

7777....2222....2222 レプリケーションを開始レプリケーションを開始レプリケーションを開始レプリケーションを開始

手順1: レプリケーションユーザの作成

マスタサーバの MySQL にログインし、スレーブサーバからのレプリケーション

を行うユーザを作成します。

mysql> GRANT REPLICATION SLAVE ON *.* TO

レプリケーションユーザ名@'スレーブサーバの IPアドレス'

IDENTIFIED BY 'レプリケーションユーザパスワード';

手順2: スレーブサーバでレプリケーションの開始

マスタサーバで、「SHOW MASTER STATUS;」より、マスタサーバのバイナリロ

グとバイナリログポジションを確認します。

mysql> SHOW MASTER STATUS;

+---------------------------+------------+----

| File | Position | Bin

+---------------------------+------------+----

| mysql-bin.000004 | 273 |

+---------------------------+------------+----

1 row in set (0.00 sec)

スレーブサーバで、「CHANGE MASTE TO ~」を実行します。

mysql>CHANGE MASTER TO

MASTER_HOST='マスタサーバの IPアドレス',

MASTER_PORT=3306,

MASTER_USER='マスタサーバに作成したレプリケーションユーザ名',

MASTER_PASSOWRD='マスタサーバに作成したレプリケーションユーザパスワ

ード',

MASTER_LOG_FILE = 'mysql-bin.000004', // 確認したバイナリログファイル

MASTER_LOG_POS = 273; // 確認したバイナリログポジション

スレーブサーバで、「START SLAVE;」を実行し、レプリケーションを開始します。

これにより、マスタサーバへの更新は、スレーブサーバも更新されます。

Page 26: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

25

7.3 MySQL のインストール・設定(マルチマスタ構成)

2 台のマルチマスタ構成のインストール・設定手順を記述します。

2 台の仮想マシンを作成し、MySQL のインストールを行います。

Microsoft Azureポータル画面での仮想マシンの作成については、1台目と2台目

で作成パラメータが異なりますので、「7.3.1MySQL 構成パラメータの設定」を参

照して下さい。以下が Microsoft Azure環境のレプリケーション構成になります。

図図図図 5555 Microsoft AzureMicrosoft AzureMicrosoft AzureMicrosoft Azure 上のマルチマスタ構成上のマルチマスタ構成上のマルチマスタ構成上のマルチマスタ構成

7777....3333....1111 my.cnf の編集の編集の編集の編集

「server_id」を除くパラメータは、全て前章のシングル構成と同じパラメータ設

定を行います。「server_id」のみ、MySQL データベースサーバごとに異なる値を

設定して下さい。

7777....3333....2222 レプリケーションを開始レプリケーションを開始レプリケーションを開始レプリケーションを開始

2台のデータベースサーバ、「主マスタサーバをマスタサーバ A」、「副マスタサー

バをマスタサーバ B」として説明を記述します。

Page 27: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

26

手順1: レプリケーションユーザの作成

マスタサーバ Aの MySQL データベースサーバにログインし、マスタサーバ B か

らのレプリケーションを行うユーザを作成します。

mysql> GRANT REPLICATION SLAVE ON *.* TO

レプリケーションユーザ名@'マスタサーバ Bの IP アドレス'

IDENTIFIED BY 'レプリケーションユーザパスワード';

マスタサーバ Bの MySQL データベースサーバにログインし、マスタサーバ A か

らのレプリケーションを行うユーザを作成します。

mysql> GRANT REPLICATION SLAVE ON *.* TO

レプリケーションユーザ名@'マスタサーバ Aの IP アドレス'

IDENTIFIED BY 'レプリケーションユーザパスワード';

手順2: マスタサーバ A でレプリケーションの開始

マスタサーバ Bで、「SHOW MASTER STATUS;」より、マスタサーバ Bのバイ

ナリログとバイナリログポジションを確認します。

mysql> SHOW MASTER STATUS;

+---------------------------+------------+----

| File | Position | Bin

+---------------------------+------------+----

| mysql-bin.000003 | 191 |

+---------------------------+------------+----

1 row in set (0.00 sec)

マスタサーバ Aで、「CHANGE MASTER TO ~」を実行します。

mysql>CHANGE MASTER TO

MASTER_HOST='マスタサーバ B の IPアドレス',

MASTER_PORT=3306,

MASTER_USER='マスタサーバ B に作成したレプリケーションユーザ名',

MASTER_PASSOWRD='マスタサーバ B に作成したレプリケーションユーザパス

ワード',

MASTER_LOG_FILE = 'mysql-bin.000003', // 確認したバイナリログファイル

MASTER_LOG_POS = 191; // 確認したバイナリログポジション

Page 28: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

27

マスタサーバ Aで、「START SLAVE;」を実行し、レプリケーションを開始します。

これにより、マスタサーバ B への更新は、マスタサーバ A も更新されます。

mysql>START SLAVE;

手順3: マスタサーバ B でレプリケーションの開始

マスタサーバ Aで、「SHOW MASTER STATUS;」より、マスタサーバ Aのバイ

ナリログとバイナリログポジションを確認します。

mysql> SHOW MASTER STATUS;

+---------------------------+------------+----

| File | Position | Bin

+---------------------------+------------+----

| mysql-bin.000004 | 273 |

+---------------------------+------------+----

1 row in set (0.00 sec)

マスタサーバ Bで、「CHANGE MASTER TO ~」を実行します。

mysql>CHANGE MASTET TO

MASTER_HOST='マスタサーバ Aの IP アドレス',

MASTER_PORT=3306,

MASTER_USER='マスタサーバ Aに作成したレプリケーションユーザ名',

MASTER_PASSOWED='マスタサーバ A に作成したレプリケーションユーザパスワー

ド',

MASTER_LOG_FILE = 'mysql-bin.000004', // 確認したバイナリログファイル

MASTER_LOG_POS = 273; // 確認したバイナリログポジション

マスタサーバ Bで、「START SLAVE;」を実行し、レプリケーションを開始します。

これにより、マスタサーバ A への更新は、マスタサーバ B も更新されます。

mysql>START SLAVE;

Page 29: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

28

補足 1. MySQL所要メモリ算出方法

� スレッドで使用するメモリ計算、以下のパラメータを使い算出します。

スレッドで使用するメモリ = max_connections (MySQL へ接続可能な同時接続

数の最大値) × (sort_buffers_size + read_buffer_size + read_rnd_buffer_size +

join_buffer_siz)

� プロセスで使用するメモリ計算、以下のパラメータを使い算出します。

プロセスで使用するメモリ = innodb_buffer_pool_size + key_buffer_size +

innodb_log_buffer + innodb_additional_mem_pool + query_cache_size

� MySQL のメモリサイズ

MySQL メモリサイズ = スレッドで使用するメモリ + プロセスで使用するメモ

※ MySQL 起動時に最大まで確保するものと、最大値が設定されたパラメータが

使用状況により増減するものがあるため、MySQL メモリサイズの算出値はあ

くまで限界まで使用した論理値です。この最大論理値を踏まえ Microsoft

Azure 仮想マシンのクラスを選択してください。仮想マシンのクラスを下げる

とスワップ等の発生する可能性があり性能が低下することとのトレードオフ

があります。

2. 仮想マシンサイズの変更方法 Microsoft Azureでは簡単に仮想マシンサイズを変更する事ができます。クラスの

スケールアップ、スケールダウンは Microsoft Azureポータルの機能、「仮想マシ

ン」-「対象サーバを選択」、対象サーバのダッシュボード画面から「構成」を選択、

「構成画面」から仮想マシンのサイズを簡単に変更することが出来ます。

Page 30: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

29

3. swapファイルの追加 Swap ファイルの追加はファイル名「/etc/waagent.conf」へ以下の箇所を変更後、

再起動すると反映されます。以下は、10Gバイト設定した例です。

� 変更前

ResourceDisk.EnableSwap=n # Create and use swapfile on resource disk.

ResourceDisk.SwapSizeMB=0 # Size of the swapfile.

� 変更後

ResourceDisk.EnableSwap=y # Create and use swapfile on resource disk.

ResourceDisk.SwapSizeMB=10240 # Size of the swapfile.

Page 31: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

30

付録付録付録付録1111 バックアップとリカバリバックアップとリカバリバックアップとリカバリバックアップとリカバリ

MySQL を実行する上で必要なファイルが、破損あるいは消失で読み書きできなくなること

をメディア障害といいます。メディア障害が、InnoDB データファイルや InnoDB ログフ

ァイルといったテーブル情報を構成するファイルで発生した場合、データベースの整合性

が維持できない致命的な状態となるため、データベースをリカバリする必要があります。

ここでは、以下の構成を前提として、バックアップ及びメディア障害が発生した際のリカ

バリ方法について紹介します。

1.1 バックアップ方法

オンラインバックアップツールには、MySQL 標準の mysqldump がありますが、

ここでは、リストア速度が高速な Percona 社の XtraBackup を使います。

XtraBackup は、オープンソースの MySQL バックアップツールで、InnoDB に対

し処理をブロックすることなくバックアップすることが可能です。以下のことを

前提として、XtraBackup のインストール及びバックアップ方法を記載します。

1.2 バックアップ保管用ディスクの設定

バックアップ保管用ディスクの設定

ファイル名(追加時) 任意

サイズ(追加時) 任意

ホストキャッシュ設定(追加・接続時) 読み取り/書き込み

※ ディスクの追加は「6.データディスクの追加」を参照してください。

その他の設定

バックアップ保管用ディスク名 /dev/sdc1

マウントポイント(バックアップ先) /backup

※ バックアップ保管用ディスク名は、仮想マシンにディスクを接続した時点で決

まります。

Page 32: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

31

1.3 XtraBackupインストール

手順1: PerconaYum リポジトリをインストールします。

# rpm –Uhv

http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

手順2: XtraBackup をインストールします。

# yum install xtrabackup

1.4 バックアップ

バックアップ保管用ディスクをバックアップ対象の仮想マシンに接続します。

Microsoft Azureポータル画面の左メニューの「仮想マシン」をクリック後、表示

された仮想マシンの一覧からバックアップ対象の仮想マシンを選択状態にし、画

面下の「ディスクの接続」-「ディスクの接続」より、バックアップ保管用ディス

クを選択し、「ホストキャッシュ設定:読み取り/書き込み」でディスクを接続し

ます。

手順1: バックアップ保管用ディスクをマウントします。

# mount –o nobarrier /dev/sdc1 /backup

※ nobarrier:書き込みバリアを無効にします

手順2: バックアップを取得します。

# innobackupex --user=root --password=rootpassword --defaults-file=/usr/my.cnf

--no-timestamp /backup/bk

手順3: バックアップが作成されたことを確認します。

# ls –l /backup

手順4: バックアップをリカバリに使用できる状態にします。

# innobackupex --apply-log /backup/bk

手順5: バックアップ保管用ディスクをアンマウントします。

Page 33: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

32

# umount /dev/sdc1

� バックアップ保管用ディスクを切断します。

1.5 バックアップからのリカバリ

バックアップを取得してから障害が発生するまでのバイナリログが全て残ってい

る場合、障害発生直前の状態までデータを復旧することができます。

手順1: 既存データディレクトリ内のファイルを削除します。

# rm -rf /data/mysql/*

手順2: バックアップ保管用ディスクを接続します。

接続したバックアップ保管用ディスクをバックアップ先にマウントします。

# mount –o nobarrier /dev/sdc1 /backup

手順3: バックアップデータをデータディレクトリにコピーします。

# cp -rp /backup/bk/* /data/mysql/

手順4: データディレクトリ以下のファイルのオーナーを変更します。

# chown –R mysql:mysql /data/mysql

手順5: MySQL を起動します。

# /etc/init.d/mysql start

手順6: マスタと同期を開始するバイナリログファイル名とポジションを確

認します。

# cat /data/mysql/xtrabackup_binlog_info

手順7: 適用するバイナリログファイルを確認します。

前手順で確認したバイナリログファイル名以降が適用するファイルになります。

mysql> SHOW BINARY LOGS;

手順8: リカバリ用の SQL ファイルを作成します。

Page 34: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

33

# mysqlbinlog /log/mysql/適用するバイナリログファイル

1 /log/mysql/適用するバイナリログファイル

2 ・・・ --start-position=同期を開始するポジション > /tmp/mybinlog.sql

手順9: リカバリ用 SQL ファイルを実行します。

# cat /tmp/mybinlog.sql | mysql -uroot –prootpassword

手順10: Microsoft Azure の管理ポータル画面で、バックアップ保管用ディ

スクを切断します。

Page 35: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

34

付録付録付録付録2222 パフォーマンストピックパフォーマンストピックパフォーマンストピックパフォーマンストピック

Microsoft Azureで MySQL の業務システムを稼働させ、システムが順調に拡大す

ると性能面でスケールする必要が生じることになりますが、ここではディスク I/O

がボトルネックになった場合を想定し、その際に拡張する典型的な方法について

記述しました。パフォーマンスに関する一つのトピックとして参考にしてくださ

い。

2.1 チューニング概要

Microsoft Azureの仮想ディスク(VHD)を使ったMySQLでの IOPS性能の向上を

ねらいとします。まず、fio ツールを使って、物理ディスク I/O をどの程度だせる

か確認します。ストライピングで1本のディスク(500IOPS)から 8 本のディス

ク(4000IOPS)までリニアにスケールアップできることが確認できました。

次に、卸売業における注文・支払いなどの処理を擬似的に再現した業務モデル、

TPC-C に準拠した tpcc-mysql 負荷ツールを使い、アプリケーションシステムと

しての拡張性をユーザ数の拡張、トランザクション量の拡張がどの程度できるか

確認します。同時接続数 500 ユーザで 10000TpmC を実現できることを確認しま

した。また、今回は「Microsoft Azure仮想クラス A7」を使用しました。

※Microsoft Azure のディスクは 1本あたり MAX 500 IOPSの制限があります。

※IOPS(Input/Output Per Second 1秒間に読み込み/書き込み出来る回数)

図図図図 6666 環境イメ環境イメ環境イメ環境イメージージージージ

Page 36: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

35

図図図図 7777 チューニング結果チューニング結果チューニング結果チューニング結果

2.2 仮想ディスクの IOPS性能

オープンソースディスク I/O ベンチマーク測定ツール「fio」を使って仮想ディス

ク(VHD)のストライピングのパフォーマンス測定とチューニング、チューニング

からディスクの特性を考察し最適なストライピング環境を確認します。

・ ディスク I/Oベンチマーク測定ツール「fio」

「fio」とはディスク I/O のベンチマーク測定ツール、Linux 上でストレージのパ

フォーマンス測定ツールで以下の測定ができます

� シーケンシャル Read/Write

� ランダム Read/Write

※ファイルサイズの指定や、I/Oエンジンの指定など、様々なベンチマーク条件が

設定可能です。

ソフトウェア RAID(RAID0)、ストライプ化論理ボリューム(LVM)を用いて、ディ

スク本数 2 から N 本の各ディスク本数をストライピングした時の IOPS を測定し

ます。

Page 37: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

36

下記グラフは以下の条件で計測したデータです。

「fio.bin」(設定ファイルの事)に測定パラメータを設定

# fio fio.bin (設定ファイル)を実行し各 IOPSを測定

ランダム Read/Write シーケンシャル Read/Write として I/Oベンチマーク

試験の対象は MySQLデータディレクトリ「/db/mysql1」に 4GBのファイル

を転送。

fio 測定結果

ソフトウェア RAID-0 の環境でデータディスク(IOPS500)の本数を増やすことで

リニアにスケールアップしました。

2.3 パラメータチューニング

負荷ツール tpcc-mysqlは卸売業における注文・支払いなどの処理を擬似的に再現

した業務モデルをベースとして負荷ツールで 9 種類のテーブルに対してトランザ

クション処理を実行します。今回はそのうち注文処処理のスループットと 1 分間

0

500

1000

1500

2000

2500

3000

3500

4000

2 3 4 5 6 7 8

ディスク本数

IOP

S

seqwrite

randwrite

seqread

randread

Page 38: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

37

のトランザクション処理数でスケールの可否を確認します。同時接続ユーザ数、

500 を基本に各ストライピングディスクを利用した 1 分間のトランザクション処

理数のスケールアップが確認できました。

tpc-load ツールを使い warehouse テーブルのデータサイズを元に

custmer,district,history,item,new_orders,order_line,orders,stock テーブルのデ

ータ数が決まりますが、この値をスケールのキーとします。

・ warehouse(以下 WH)あたりデータ容量が約 100MB 単位で増えます。本検証では

350 WH (35GB)のデータを warehouse表へロードしました。

負荷ツール起動サーバから MySQL にリモート接続し負荷確認します

� tpcc-stsrt -h IP アドレス -d データベース名 -u ユーザ名 -p パスワード

-w warehouse 生成データサイズ -c 同時接続数 -r 測定開始までの助走時間

(秒) -l 実行時間(秒)

� 実行例

tpcc-start –h 10.0.0.5 –d tpcc35 –u test –p test –w 350 –c 500 –r 10 –l 3600

・ Microsoft Azureストレージの I/O処理はシークタイムやサーチタイムが無くデー

タのポイントへブロック(512kbyte)単位で I/Oを行う点が特徴のストレージです。

・ データディスクの測定結果の考察からシーケンシャルアクセスおよびランダムア

クセスの値にさほど差がないことから、Microsoft Azure ストレージの性能特性は

SSDに類似と推定されますので SSD向け設定値として以下、「表 6 設定パラメ

ータ」のように変更しました。

・ SSD向け設定値として、innodb_flush_nighbors を無効に設定後、TpmC 値が有

効前と比べ、10%以上の上昇を確認しました。

表表表表 6666 設定パラメータ設定パラメータ設定パラメータ設定パラメータ

設定パラメータ 設定値

[mysqld]

server_id 1000

sysdate-is-now

datadir /db/mysql1

tmpdir /mnt/resource/mysql

log_bin binlog-hostname

Page 39: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

38

max_binlog_size 256M

innodb_flush_method O_DIRECT

binlog_format mixed

inodb_file_per_table

innodb_buffer_pool_size 38G

innodb_log_file_size 2G

innodb_log_buffer_size 16M

max_prepared_stmt_count 1000000

max_connections 512

thread_cache 512

character-set-server utf8

innodb_open_files 300

sync_binlog 1

innodb_io_capacity 2000

innodb_flush_nighborsinnodb_flush_nighborsinnodb_flush_nighborsinnodb_flush_nighbors 0 0 0 0

[mysqld_safe]

log-error /db/mysql1/mysqld.log

[client]

default-character-set utf8

Microsoft Azure環境ではシンプルなディスク構成 1本からストライピングディス

クにデータディレクトリ、ログディレクトリ、Redo ログディレクトリを 1本のス

トライプディスクに集約した環境で、約 4 倍の TpmC 値へスケールアップしまし

た。

Page 40: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

39

2.4 大規模パフォーマンスチューニングのヒント

ユーザ数、更新数、検索数などがある程度想定可能な大規模、高負荷システムの

運用においてはデータ分散環境を構築してディスク分散配置を行い、分割したデ

ィスクの状況をみながら、チューニングを行えば大規模運用を上手にこなせるヒ

ントになると思います。「図 8 データ分割環境イメージ」を記載しておりますの

で参考にして頂ければ幸いです。

図図図図 8888 データデータデータデータ分割分割分割分割環境イメージ環境イメージ環境イメージ環境イメージ

Page 41: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

40

Page 42: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

41

付録付録付録付録3333 MySQLMySQLMySQLMySQL の高可用性と負荷分散の高可用性と負荷分散の高可用性と負荷分散の高可用性と負荷分散

高可用性(High Availability)を考慮したデーベースサーバを冗長化させる構成を

HA 構成と呼びます。MySQL は MySQL レプリケーションを用いて MySQL を

HA化することができます。負荷分散にはマスタ、スレーブのレプリケーション構

成をすることで性能向上を図ることが出来ます。

� MySQL レプリケーションの紹介

HAを構成する最も一般的なMySQLレプリケーションによるHAレプリケーショ

ンについて紹介します。

1. レプリケーションによるHA構成

更新系、参照系に対してMySQL Severを複数台用意することで、障害発生後のダ

ウンタイムを減らすことが出来ます。

更新系:マスタが停止後、スタンバイを新マスタとして切り換えサービスを継続

参照系:どちらかのスレーブが停止しても、残ったスレーブでサービスを継続

2. レプリケーションを利用した負荷分散

スレーブを複数作成することで、参照負荷を分散します。

3. MySQL で代表的な HAと負荷分散のご紹介として以下の製品があります。

� MySQL Cluster

� CLUSTERPRO

� DRBD,HeartBeat,Pacemaker

※ ご利用する際、関係会社へお問い合わせください。

4. 負荷分散と高可用性環境について

参照系の負荷分散や更新系の切り替えにはアプリケーションサーバの利用やロー

ドバランス、仮想ネットワークの振り分け、死活監視の仕組みを利用してくださ

Page 43: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

42

い。

※本ガイド作成時、Microsoft Azure 環境では一部の機能を工夫する必要がありま

す。

� アプリケーションからの負荷分散

レプリケーション構成で負荷分散を行う場合、更新系処理はマスタに接続し参照

系はスレーブに接続するといったような、MySQL の接続先を振り分ける処理が必要

となります。そのため、初期段階ではシングルサーバ構成だったものがアプリケ

ーションの利用ユーザ数増大などの要因により負荷分散のためマスタ、スレーブ

のレプリケーション構成に変更する場合、アプリケーション側だけで管理する場

合は接続の振り分けなど煩雑な接続処理の変更が必要になります。

しかし、下記の接続ドライバーやソフトウェアを利用することでアプリケーショ

ン側の変更を最小限に押さえつつ、接続の振り分けやロードバランスなどの機能

も利用することができるようになります。

� MySQL Proxy

MySQL サーバへのロードバランシングやフェィルオーバーをおこなってくれるソ

フトウェア軽量スクリプト言語 Lua を利用して任意の処理を記述することで、接

続先の制御を細かく指定することができます。

以下の資料を参考にしてください。

https://dev.mysql.com/doc/refman/5.6/en/mysql-proxy.html

� Connector/J

MySQL の JDBC ドライバー。

複数の MySQL サーバに対して負荷分散を行う機能があります。

以下の資料を参考にしてください。

http://dev.mysql.com/doc/connector-j/en/index.html

� mysqlnd_ms

php のレプリケーションおよびロードバランシング用プラグイン

読み込みと書き込みの分離機能やロードバランシングが行えます。

マスタとスレーブサーバの定義を JSON ファイルで指定します。

Page 44: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

43

以下の資料を参考にしてください。

http://php.net/manual/ja/book.mysqlnd-ms.php

� まとめ

Microsoft Azureは初期導入のシングルサーバ構成から利用ユーザ増大に向けた高

可用性、負荷分散に対してオンプレミス環境で構築するよりはるかに簡単にスケ

ールアウト、スケールアップすることが出来ます。Microsoft Azure はオンプレミ

スと同様に誰もが安心して利用できる環境を本検証で確認することが出来ました。

� 高可用性構成の検証

本ガイドでは高可用性構成として、MySQL5.6から提供された mysqlfailover を使

い自動フェィルオーバーの動作検証を行いました。

� mysqlfailoverについて

MySQL5.6 より使用可能である「MySQL Utilities」の「mysqlfailover」が Microsoft

Azure 環境で稼働できるかを確認します。

但し、本ガイド作成時に利用したMicrosoft Azure 環境では仮想 IPアドレスの利

用が出来ない為、仮想 IPアドレス付け替える確認はできておりません。ここでは

レプリケーションのマスタサーバに障害発生した場合に、スレーブサーバをフェ

ィルオーバーしてマスタサーバに昇格させることができたことを以下に記述しま

す。

以降の手順は、マスタ・スレーブ構成のレプリケーションサーバ、及び

mysqlfailover を稼動させる監視サーバを用意する構築手順とします。以下、

Microsoft Azure上のmysqlfailover構成図は以下です。

Page 45: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

44

図図図図 9999 Microsoft Azure 上の mysqlfailover 構成

3.1 マスタ・スレーブ構成のレプリケーションの構築

3.1.1 レプリケーションの開始

レプリケーションのインストール・設定方法については「 7.2MySQL のインス

トール・設定(マスタ・スレーブ構成)」を参照して下さい。

・ レプリケーションユーザの作成については、フェールオーバーする可能性のある

スレーブについてもユーザ作成する必要があります。

mysqlfailover を使用するには、GTID(Global Transaction Identifiers)を使用す

る等のmy.cnfで必須となるパラメータがあります、my.cnfに追加設定を行います。

各パラメータは「表 7 構成パラメータ」を参照してください。

my.cnf

# for mysqlfailover master_info_repository = TABLE relay_log_info_repository = TABLE gtid-mode=ON enforce-gtid-consistency log-slave-update

表表表表 7777 構成パラメータ構成パラメータ構成パラメータ構成パラメータ

設定パラメータ 説明

Master_info_repository = TABLE レプリケーションにおけるマスタへの接続

Page 46: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

45

情報等をテーブルに書き込む。

relay_log_info_repository = TABLE レプリケーションにおけるリレーログの実

行情報をテーブルに書き込む。

Gtid-mode=ON レプリケーションを GTIDモードで行う。

enforce-gtid-consistency GTIDモードでも、非トランザクションテー

ブルの更新を可能にする。

Log-slave-update スレーブの SQL スレッドで実行された更

新を、スレーブのバイナリログに記録する。

3.1.2 mysqlfailover 用のアカウント作成

レプリケーションを開始している状態から、マスタサーバ上で、mysqlfailover 用

の監視サーバから接続可能なアカウントを作成します。

mysql> GRANT SUPER, REPLICATION SLAVE, INSERT, SELECT, RELOAD,

DROP, CREATE ON *.* TO failuser@'10.0.0.7' IDENTIFIED BY 'password' WITH

GRANT OPTION;

本検証では、以下のユーザを作りました。

表表表表 8888 ユーザ設定情報ユーザ設定情報ユーザ設定情報ユーザ設定情報

追加ユーザ failuser

ユーザパスワード password

接続可能ホスト 10.0.0.7 (監視サーバ IPアドレス)

Page 47: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

46

3.2 監視サーバの構築(mysqlfailover稼動)

「5.イメージキャプチャを使ったサーバの複製」を参照し、Windows ポータル

画面から、仮想マシンを作成します。(ディスクの追加は必要ありません。)

作成した仮想マシンにログインし、以下の手順を行います。

手順1: MySQL-shared-compat のインストール

# rpm -ivh MySQL-shared-compat-5.6.14-1.el6.x86_64.rpm

Preparing... ############################ [100%]

1:MySQL-shared-compat ############################ [100%]

手順2: mysql-libs のアンインストール

# rpm -e mysql-libs-5.1.67-1.el6_3.x86_64

手順3: perl-DBD-MySQL のインストール

# yum -y install perl-DBD-MySQL

手順4: mysql-connector-python のインストール

# rpm -ivh mysql-connector-python-1.0.12-1.el6.noarch.rpm

rpmは http://dev.mysql.com/downloads/connector/python/ よりダウンロード。

手順5: MySQL Utilities のインストール

# rpm -ivh mysql-utilities-1.3.4-1.el6.noarch.rpm

rpmは http://dev.mysql.com/downloads/tools/utilities/ よりダウンロード。

手順6: mysqlfailover の起動

$ mysqlfailover --master=failuser:[email protected]

--slaves=failuser:[email protected], failuser:[email protected]

--candidates= failuser:[email protected]

--failover-mode=auto

--rpl-user=repl:replpassword

--log=/var/log/mysqlfailover.log

--daemon start

以降、マスタサーバがダウンした際は、「candidates」オプションで指定したスレ

Page 48: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

47

ーブサーバがフェールオーバーされます。

※ 「candidates」オプションを省略すると、スレーブサーバの中で一番レプリケ

ーションのデータ同期が進んでいるものがマスタサーバに昇格します。

・ コマンドパラメータについては、

http://dev.mysql.com/doc/workbench/en/mysqlfailover.html を参照して下さい。

・ 「--log」オプションでのログの出力先には、mysqlfailoverの起動ユーザで書き込

み可能とするよう、オーナー及び権限を適切に設定して下さ

終了する場合は、以下のコマンドで終了させて下さい。

$ mysqlfailover --daemon stop

3.3 mysqlfailoverの動作検証

レプリケーション構成を起動させた状態で、以下の確認を行います。

スレーブからマスタへ昇格するサーバを本検証では「スレーブサーバ A」を指定し

「スレーブ」から「マスタ」へ昇格するか検証しました。

動作検証するために、以下の構成を用意し確認しました。

表表表表 9999 サーバサーバサーバサーバ IPIPIPIP アドレスアドレスアドレスアドレス

サーバ IPアドレス

監視サーバ --

マスタサーバ 10.0.0.4

スレーブサーバ A 10.0.0.5

スレーブサーバ B 10.0.0.6

手順1: mysqlfailover の起動

監視サーバで mysqlfailover を起動させます。起動パラメータは以下の通りです。

$ mysqlfailover --master=failuser:[email protected]

--slaves=failuser:[email protected], failuser:[email protected]

--candidates= failuser:[email protected]

--failover-mode=auto

--rpl-user=repl:replpassword

--log=/var/log/mysqlfailover.log

--daemon start

Page 49: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

48

手順2: マスタサーバの停止

# /etc/init.d/mysql stop

Shutting down MySQL....... [ OK ]

手順3: スレーブサーバ A の確認

mysql> SHOW SLAVE STATUS \G

Empty set (0.00 sec)

マスタサーバに昇格した為、スレーブの状態を確認するコマンド「SHOW SLAVE

STATUS;」を実行しても何も表示されません。

手順4: スレーブサーバ B の確認 mysql> SHOW SLAVE STATUS \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.0.0.5 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 1715 Relay_Log_File: ssmart54-2-relay-bin.000003 Relay_Log_Pos: 1925 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes

「Master_Host」が「10.0.0.5」に変更されます。

手順5: フェールオーバー後の動作確認

フェールオーバーでマスタサーバへ昇格したスレーブサーバ A にデータベースを

作成します。

mysql> create database test1;

Query OK, 1 row affected (0.10 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test1 |

+--------------------+

Page 50: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

49

手順6: スレーブサーバ B で確認

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test1 | +----------------------------+

昇格したマスタサーバ A からスレーブサーバ B とのレプリケーションが出来たこ

とを確認することが出来ました。

Page 51: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

50

付録付録付録付録4444 他社サービス他社サービス他社サービス他社サービスと比較したと比較したと比較したと比較した MMMMySQLySQLySQLySQL のののの性能比較性能比較性能比較性能比較

資料提供資料提供資料提供資料提供::::株式会社株式会社株式会社株式会社 ppppnopnopnopnop

Page 52: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

51

本稿の目的本稿の目的本稿の目的本稿の目的 本稿では、以下の環境の違いによる MySQL のパフォーマンスの違いを測定しました。

� Microsoft Azure の東アジアリージョンと日本(東)リージョンの比較

� 仮想マシン(IaaS)上に構築した MySQL と Microsoft Azure 上でサードーパ

ーティから提供されている MySQL サービス(ClearDB)の比較

� 他社クラウドサービス(以下 A社)の IaaS 上の MySQL および MySQL サービス

と Microsoft Azure の比較

Microsoft Azure 内の比較では同一条件下で、他社のクラウドサービスとの比較では、

Microsoft Azure の環境とできるだけ近いスペックでの比較を行いました。

Page 53: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

52

環境環境環境環境

基本的な環境は以下の通り。

IaaS における共通の設定は以下の通り。

・ CentOS6.3

・ MySQL5.6

・ lvm ボリュームによるストライピング設定

・ my.cnf は以下の通り。

[mysqld]

max_connections=500

socket=/data/mysql/mysql.sock

datadir=/data/mysql

character-set-server=utf8

pid-file=/data/mysql/mysqltest2.pid

innodb_log_file_size = 256M

innodb_log_group_home_dir=/data/mysql/log

[mysql]

default-character-set=utf8

[client]

default-character-set=utf8

socket=/data/mysql/mysql.sock

Page 54: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

53

Azure における比較環境は以下の通り。

MySQL 比較環境 備考

IaaS(XL)- 東アジア

- 東日本

仮想ディスクを 3GBx16 本追加し、LVM ボリュームを作成。

キャッシュはなし。

同一の仮想ネットワーク内から試験。

ClearDB(Large)

- 東アジア

提供される MySQL5.6 を使用。

A 社における比較環境は以下の通り。

MySQL 比較環境 備考

IaaS(Azure の XL とほぼ

同等)- 東京

EBS を 3GBx16 本追加し、LVM ボリュームを作成。

同一の仮想ネットワーク内から試験。

RDBMS サービス(ClearDB

の Large とほぼ同等)- 東

提供される MySQL5.6 を使用。

同一の仮想ネットワーク内から試験。

tpcc-mysql の実行環境は以下の通り。

環境 備考

Azure(S) CentOS6.3、tpcc-mysql(rev48)

A 社(Azure S とほぼ同等)CentOS6.3、tpcc-mysql(rev48)

Page 55: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

54

調査内容調査内容調査内容調査内容 比較調査内容は以下の通り。

・ MySQL サーバとは異なるサーバから、tpcc-mysql を使用した TpmC(各 2回取得)

・ 上記の状態で、MySQL サーバ上での iostat による IOPS の取得(Azure XL 及び A社のほ

ぼ同等サイズのみ)(各 2回取得)

Page 56: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

55

調査結果調査結果調査結果調査結果 tpcc-mysql、iostat は以下のように実施した。

# ./tpcc_start -h サーバー -u ユーザー -p パスワード -d DB 名 -c 500 -r 300 -l 2100

# iostat -x 5 500

実施結果は以下の通り。

環境 TpmC iops

Azure IaaS(東アジア) 4037.457 TpmC

4059.143 TpmC

最小 155.6

最大 2001

平均 1116.1

Azure IaaS(東日本) 4587.400 TpmC

4338.200 TpmC

最小 271.6

最大 2478.8

平均 1304.5

ClearDB(東アジア) 638.571 TpmC(1 回目)

エラーで測定不能(2回目)

※ログインできないため未取得

A 社 IaaS(東京) 3635.000 TpmC

2922.914 TpmC

最小 242.4

最大 5952.2

平均 1002.9

A 社 RDBMS サービス(東京) 2843.171 TpmC

2685.971 TpmC

※ログインできないため未取得

Page 57: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

56

測定結果

経過時間(秒)

経過時間(秒) 経過時間(秒)

Page 58: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

57

経過時間(秒)

Page 59: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

58

結果考察結果考察結果考察結果考察 Azure IaaS(東日本) が一番良い結果となっている。

また、IaaS の方が用意された DB サービス(ClearDB、A 社 RDBMS サービス)よりパフォー

マンスが良い。ただし、A社 RDBS サービスは有料の IO性能向上オプションを利用すること

で性能が向上する可能性がある。

ClearDB は接続数が多いとエラーが頻発するなど、不安定である。

TpmC が低い理由は、ミラーリングの仕組みが組み込まれており、また、その性能もよくな

いためと考えられる。

Page 60: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

59

環境構築手順環境構築手順環境構築手順環境構築手順

lvmlvmlvmlvm ボリュームの作成ボリュームの作成ボリュームの作成ボリュームの作成

ディスク追加後の作成手順は以下の通り。

lvm 関連コマンドが無い場合はインストール

# yum install lvm2

物理ボリューム作成

# pvcreate /dev/sd*(AWS の場合は /dev/xvd*)

ボリュームグループ作成

# vgcreate グループ名 /dev/sdc /dev/sad

論理ボリューム作成

# lvcreate -n 論理ボリューム名 -l 100%FREE -i ストライプ数(ディスクの数) グループ名

フォーマット

# mkfs -t ext4 /dev/mapper/グループ名-論理ボリューム名

マウントポイント

# mkdir -p /data/mysql

fstab に追記

# vi /etc/fstab

/dev/mapper/グループ名-論理ボリューム名 /data/mysql ext4 defaults,nobarrier, 0 0

マウント

# mount /dev/mapper/グループ名-論理ボリューム名

Page 61: Microsoft Azure MySQL サーバ 5.6 導入ガイド · また、本ガイドではMySQL の構築にとどまらず、日々のMySQL 遀用を想定し た、Microsoft Azure 環境でのデータバックアップ・リカバリの方法や、将来的に

60

MySQL のインストールのインストールのインストールのインストール

MySQL は Oracle で配布されているパッケージを使用して、以下の通りに導入。

#wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.ta

r

# tar xvf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

# rpm -ihv MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm

# rpm -e mysql-libs (※コンフリクトするので)

# rpm -ihv MySQL-client-5.6.15-1.el6.x86_64.rpm

# rpm -ihv MySQL-server-5.6.15-1.el6.x86_64.rpm

# rpm -ihv MySQL-shared-5.6.15-1.el6.x86_64.rpm

# service mysql start

# cat /root/.mysql_secret (root パスワードが書いてある w)

# mysql_secure_installation (もし必要なら)

# cp -pr /var/lib/mysql/* /data/mysql/

# chown -R mysql:mysql /data/mysql

# service mysql stop

# vi /usr/my.cnf

tpcc-mysql のインストールと設定のインストールと設定のインストールと設定のインストールと設定

tpcc-mysql は以下の通りに導入。

# yum -y install bind-utils bzr male gcc

# bzr branch lp:~percona-dev/perconatools/tpcc-mysql

# cd tpcc-mysql/src

# make

# cd ../cat .mysq

# mysqladmin -u root -p create tpcc

# mysql -u root -p tpcc < create_table.sql

# ./tpcc_load ホスト tpcc ユーザ名 パスワード 1

# mysql -u root -p tpcc < add_fkey_idx.sql

# ./tpcc_start -h ホスト -d tpcc -u ユーザ名 -p パスワード -c コネクション数 -l 実行時間