Azure Database for MySQL の概要
Azure Database for MySQL は、Azure で組織の MySQL データベースをホストするために、フレキシブル サーバー (プレビュー) としてデプロイできます。 これはフル マネージドのサービスとしてのデータベースであり、予測可能なパフォーマンスと動的なスケーラビリティを備え、ミッション クリティカルなワークロードを処理できます。
あなたは、オンプレミスの MySQL インストールの実行と管理を長年にわたって経験しているデータベース開発者として、Azure Database for MySQL ではその機能がどのようにサポートおよびスケーリングされるかを調べておく必要があります。
このユニットでは、Azure Database for PostgreSQL の価格、バージョン サポート、レプリケーション、およびスケーリングのオプションについて説明します。
Azure Database for MySQL の利点を理解する
Azure Database for MySQL は、Azure Database for MySQL サーバーとしてプロビジョニングされます。 Azure Database for MySQL サーバーは、オンプレミスの MySQL サーバーと同等であり、複数の MySQL データベースを管理するための中心的な場所となります。
Azure Database for MySQL データベースを作成するには、まず Azure Database for MySQL サーバーをプロビジョニングする必要があります。 Azure Database for MySQL サーバーは、1 つまたは複数のデータベースの親であり、データベースの名前空間を提供します。 このサーバーを削除すると、そこに含まれているすべてのデータベースが削除されます。
Azure Database for MySQL サーバーによって提供されるもの
Azure Database for MySQL サービスには、追加コストなしの高可用性と必要に応じたスケーラビリティが含まれています。 支払いは使用した分だけで済みます。 自動バックアップとポイントインタイム リストアが提供されます。
サーバーでは、ファイアウォール規則を適用するための接続セキュリティが提供され、必要に応じて SSL 接続が要求されます。 多数のサーバー パラメーターを使用して、ロック モード、最大接続数、タイムアウトなどのサーバー設定を構成できます。 "動的" としてマークされているパラメーターに加えた変更は、すぐに有効になります。 静的パラメーターの場合は、サーバーを再起動する必要があります。 サーバーを再起動するには、ポータルの [概要] ページにある [再起動] ボタンを使用します。
Azure Database for MySQL サーバーには、アラートを追加し、メトリックとログを表示できる監視機能があります。
価格レベル
価格レベルに応じて、1 から 64 個の仮想コア、5 GB から 4 TB のストレージまで、幅広いパフォーマンスと容量が提供されます。 Basic 価格レベルは、軽量のコンピューティング ワークロード向けに設計されており、コアあたり 2 GB のメモリを備えた最大 2 つの仮想コアをサポートしています。 General Purpose 価格レベルは、ほとんどのビジネス ワークロードに対応し、コアあたり 5 GB のメモリを備える 2 から 64 個の仮想コアをサポートします。 メモリ最適化価格レベルは、仮想コアあたり 10 GB のメモリを備える 2 から 32 個の仮想コアをサポートし、リアルタイム データ分析を含むハイ パフォーマンスのワークロードを対象としています。 General Purpose 価格レベルとメモリ最適化価格レベルを切り替えて仮想コアまたはストレージの数を数秒以内に変更することはできますが、Basic 価格レベルに移行したり、Basic 価格レベルから移行したりすることはできません。
価格レベルと仮想コアの数に基づく接続制限があります。 詳細については、「Azure Database for MySQL の制限事項」を参照してください。
バージョン管理とアップグレード
Azure Database for MySQL では、バージョン 5.6 (バグ修正リリース 5.6.42 を含む)、5.7 (バグ修正リリース 5.7.24 を含む)、および 8.0 (バグ修正リリース 8.0.15 を含む) がサポートされています。
注意
接続は、ゲートウェイによってサーバー インスタンスにリダイレクトされます。 MySQL クライアントでは、サーバー インスタンスのバージョンではなく、ゲートウェイのバージョンが表示されます。 サーバー インスタンスのバージョンを表示するには、SELECT VERSION(); コマンドを使用します。
バグ修正バージョンは自動的に適用されますが、バージョンのアップグレードはサポートされていません。 あるバージョンから別のバージョンにアップグレードするには、ダンプと復元を実行する必要があります。
スケーラビリティ
前述のように、Basic 価格レベルに変更したり、Basic 価格レベルから変更したりすることはできません。 ただし、仮想コアの数、ハードウェアの世代、ストレージ ボリューム、およびバックアップの保有期間を変更することはできます。 General Purpose 価格レベルとメモリ最適化価格レベルの間で切り替えることもできます。
ストレージは減らすことはできず、増やすことのみが可能で、自動拡張するよう設定できることに注意してください。 自動拡張が有効になっている場合、ストレージが 100 GB 未満のサーバーでは、使用可能なストレージが 1 GB とストレージ ボリュームの 10% のどちらか大きい方を下回ると、ストレージが 5 GB 拡張されます。 100 GB を超えるサーバーでは、使用可能なストレージが 5% を下回ると、ストレージが 5% 拡張されます。
高可用性
Azure Database for MySQL には、99.99% の可用性を保証する、返金制度を備えたサービス レベル アグリーメント (SLA) が含まれています。 ハードウェア障害またはサービスのデプロイが発生した場合、新しいノードが自動的に作成され、ストレージがそのノードにアタッチされます。 フェールオーバーは、数十秒以内に完了します。
Azure Database for MySQL サーバー インスタンスがスケールアップまたはスケールダウンされた場合は、新しいインスタンスにアタッチされているデータ ストレージで同様の処理が行われます。 フェールオーバーが発生した場合、スケールアップまたはスケールダウンが発生した場合、またはクライアントと Azure の間のインターネット トラフィックが中断した場合は、クライアントで一時的な接続エラーが発生する可能性があります。 アプリケーションに再試行ロジックを含めることが重要です。 フェールオーバーが発生した場合、ゲートウェイによってトラフィックが新しいノードに転送されます。クライアントでの構成は必要ありません。
一時的なエラーの処理については、Azure Database for MySQL の一時的な接続エラーの処理に関するページを参照してください。
Azure Database for MySQL でデータをレプリケートする
データイン レプリケーション
データイン レプリケーションでは、MySQL のネイティブ レプリケーション機能を使用して、外部の MySQL サーバーから Azure Database for MySQL にデータをレプリケートします。 これは、既存のオンプレミスの MySQL インスタンスと Azure ベースのレプリカを使用してハイブリッド環境をプロビジョニングする場合に便利です。 このシナリオでは、グローバルに分散されたシステムのユーザーにローカル データを提供します。 また、データイン レプリケーションを使用して、別のクラウド プロバイダーによってホストされている仮想マシンまたは MySQL データベース サービスからデータをレプリケートすることもできます。
データイン レプリケーションに関する考慮事項
データイン レプリケーションに関して考慮する必要があるいくつかの要素を次に示します。
- マスター サーバーとレプリカ サーバーは同じバージョンである必要があり、少なくともバージョン 5.6 である必要がある。
- マスターとレプリカで InnoDB エンジンが使用されている必要がある。
- すべてのテーブルに主キーが必要である。
- Azure Database for MySQL サーバーの価格レベルは、General Purpose またはメモリ最適化である必要がある。
- マスター サーバーでユーザーを作成し、バイナリ ログを構成する権限が必要である。
- mysql システム データベースはレプリケートされない。 アカウントとアクセス許可は、マスター サーバーからレプリカにレプリケートされないため、手動で作成する必要があります。
データイン レプリケーションを構成する手順
データイン レプリケーションを構成するには、いくつかの手順があります。
- レプリカのホストとして使用する Azure Database for MySQL サーバーを作成し、必要なユーザー アカウントと特権を作成する。
- マスター サーバー上でレプリケーションを構成する。
- マスター サーバーをダンプし、復元する。
- データイン レプリケーション ストアド プロシージャを使用して、ターゲット サーバーを構成する。
詳細については、「Azure Database for MySQL のデータイン レプリケーションを構成する方法」を参照してください。
読み取りレプリカ
読み取りレプリカでは、ネイティブ MySQL レプリケーション テクノロジを使用して、Azure Database for MySQL サーバーの非同期レプリカ インスタンスを作成します。 レプリカ サーバーは読み取り専用であり、マスターごとに最大 5 つのレプリカを作成できます。 読み取りレプリカごとに、使用される仮想コアとストレージに基づいて月額の費用が請求されます。
読み取りレプリカの用途
レポート サーバー
マスター サーバーの読み取り専用レプリカを作成して、すべてのレポート、BI、および分析ワークロードをレプリカに転送されるようにします。 これにより、マスター サーバーからワークロードが取り除かれ、マスター サーバーが書き込みの多いワークロードを実行している間の競合が軽減されます。
データをユーザーに近づける
リージョンをまたがるレプリカを作成して、データをユーザーに近づけ、ユーザーの読み取り速度を向上させます。 リージョンをまたがるレプリカは、ユニバーサル レプリカ リージョンまたはマスター サーバーのペアになっているリージョンに配置できます。 レプリカ サーバーを作成すると、使用可能なリージョンが一覧表示されます。
読み取りレプリカを構成する
Azure portal で読み取りレプリカを構成します。
次に、レプリカの名前とリージョンを指定します。
Note
読み取りレプリカは、Basic 価格レベルでは使用できません。
読み取りレプリカの詳細については、「Azure Database for MySQL の読み取りレプリカ」を参照してください。
管理と監視
Azure Database for MySQL には、サーバーを最適化し、イベントの通知を受け取り、メトリックに事前に対応するために役立つさまざまな監視ツールが用意されています。 また、最新バージョンの MySQL Workbench、PHPMyAdmin、Navicat などの使い慣れた MySQL 管理ツールを使用して、Azure Database for MySQL サーバーを管理および監視することもできます。
Azure Database for MySQL を監視するための Azure ツール
Azure Database for MySQL を管理および監視するために Azure portal で使用できるツールには、次のものがあります。
Azure メトリック。 メトリック機能では、数値データが 1 分ごとに提供され、30 日間保存されます。 サーバーの監視に使用するさまざまなメトリックが用意されています。また、メトリックに応答するようにアラートを構成することもできます。
詳細については、「Azure Monitor データ プラットフォーム」を参照してください。
サーバー ログと監査ログ。 サーバー ログを有効にすると、低速なクエリを監視し、サーバーの監査ログを提供できます。 サーバー ログは、Azure 診断ログを通じて SQL Database for MySQL の外部で使用できます。
詳細については、「Azure Database for MySQL での低速クエリ ログ」を参照してください。 監査ログは、データベース アクティビティを追跡するための監査ログを提供するプレビュー機能です。 監査ログをオンにするには、audit_log_enabled パラメーターを ON に設定します。 監査ログの詳細については、「Azure Database for MySQL の監査ログ」を参照してください。
クエリ ストア。 これは、サーバーのパフォーマンスを一定期間にわたって追跡し、トラブルシューティング情報を提供するために使用されます。 クエリ ストアはクエリ履歴と実行時統計を保持するため、リソースを大量に消費するクエリや長時間実行されるクエリを識別できます。 クエリ ストアを有効にするには、query_store_capture_mode サーバー パラメーターを ALL に設定します。
クエリに関するクエリ ストアのデータを表示するには、次のクエリを実行します。
SELECT * FROM mysql.query_store;
待機統計に関するデータを表示するには、次のクエリを実行します。
SELECT * FROM mysql.query_store_wait_stats;
注意
クエリ ストアはプレビュー機能であり、Basic 価格レベルでは使用できません。
クエリ ストアの詳細については、「クエリ ストアを使用した Azure Database for MySQL のパフォーマンスの監視」を参照してください。
Query Performance Insight。 Query Performance Insight を使用すると、クエリ ストアからのデータを視覚化として表示できるため、パフォーマンスに影響を与えるクエリを識別できるようになります。 Query Performance Insight は、Azure portal のお使いの Azure Database for MySQL の [インテリジェント パフォーマンス] セクションにあります。
注意
Query Performance Insight はプレビュー機能であり、Basic 価格レベルでは使用できません。
Query Performance Insight の詳細については、「Azure Database for MySQL の Query Performance Insight」を参照してください。
パフォーマンスの推奨事項。 パフォーマンスの推奨事項機能では、クエリ ストアからのデータを使用してワークロードを分析し、これをデータベースの特性と組み合わせて、パフォーマンスを向上させるための新しいインデックスを提案します。 パフォーマンスの推奨事項機能は、Azure portal のお使いの Azure Database for MySQL の [インテリジェント パフォーマンス] セクションにあります。
注意
パフォーマンスの推奨事項機能はプレビュー機能であり、Basic 価格レベルでは使用できません。
パフォーマンスの推奨事項機能の詳細については、「Azure Database for MySQL のパフォーマンスの推奨事項」を参照してください。
クライアント接続
MySQL ドライバー
Azure Database for MySQL は、MySQL コミュニティ エディションを使用していて、さまざまなドライバーと互換性があるほか、さまざまなプログラミング言語をサポートしています。 接続文字列は、Azure portal で指定します。
MySQL ドライバーの詳細については、「Azure Database for MySQL に対する MySQL ドライバーと管理ツールの互換性」を参照してください
ファイアウォールを構成する
ファイアウォールを構成する最も簡単な方法は、Azure portal でお使いのサービスの [接続のセキュリティ] 設定を使用することです。 クライアントの IP アドレス範囲ごとに規則を追加します。 このページを使用して、お使いのサービスへの SSL 接続を強制することもできます。
ツール バーの [クライアント IP の追加] をクリックして、お使いのデスクトップ コンピューターの IP アドレスを追加します。
読み取り専用レプリカを構成している場合は、クライアントがアクセスできるように、各レプリカにファイアウォール規則を追加する必要があります。
一時的な接続エラー
インターネット経由でデータベースに接続する場合は、一時的な接続エラーを避けることができず、クライアント アプリケーションで処理する必要があります。
一時的な接続エラーについては、Azure Database for MySQL の一時的な接続エラーの処理に関するページを参照してください。
Azure Database for MySQL でサポートされていない MySQL の機能
Azure Database for MySQL では MySQL のほとんどの機能を使用できますが、サポートされていない機能もあります。 移行時に発生する可能性のある問題を確実に軽減するためには、これらの機能を確認しておく必要があります。
ストレージ エンジン
Azure Database for MySQL では、InnoDB および MEMORY ストレージ エンジンがサポートされています。 InnoDB は、MySQL の既定のストレージ エンジンで、ハイ パフォーマンスと高い信頼性をバランスよく実現します。 特に指定しない限り、MySQL のすべての新しいテーブルで InnoDB ストレージ エンジンが使用されます。
InnoDB ストレージ エンジンの詳細については、「InnoDB の概要」を参照してください。
メモリにデータを格納する場合は、MEMORY ストレージ エンジンを使用できます。 このデータは、クラッシュや停止の何かの危険にさらされています。MEMORY ストレージ エンジンは、一時的なハイ パフォーマンスのストアとしてのみ使用してください。
MEMORY ストレージ エンジンの詳細については、「MEMORY ストレージ エンジン」を参照してください。
Azure Database for MySQL では、MyISAM、BLACKHOLE、ARCHIVE、および FEDERATED ストレージ エンジンはサポートされていません。 MyISAM データは InnoDB ストレージ エンジンに変換する必要があります。 BLACKHOLE、ARCHIVE、および FEDERATED ストレージ エンジンには専門的な役割があり、通常のデータ ストアとしては使用しません。
特権とロール
DBA ロールは公開されません。多くのサーバー設定とパラメーターがトランザクション規則に違反し、パフォーマンスが低下する可能性があるためです。 同様の理由から、SUPER 特権は制限されます。SUPER 特権を使用する DEFINER 句も同様です。
復元
Azure Database for MySQL では、2 つの復元機能の動作が異なります。
- ポイントインタイム リストアでは、基になるサーバーと同じ構成の新しいサーバーが作成される。
- 削除されたサーバーを復元することはできません。