Azure の MySQL および PostgreSQL データベース サービス
十分機能するオンプレミス データベースがある場合に、それを Azure などのクラウド サービスに移行することを検討すべきなのはなぜでしょうか。 同様に、新しいデータベース システムを Azure で実装することを検討すべきなのはなぜでしょうか。 オンプレミスのデータセンターを使用する場合と比較して、クラウドでは可用性とスケーラビリティの高いサービスを比較的安価で簡単に作成できるため、多くの組織がこの移行を行っています。
あなたが勤務するスタートアップ企業では、オンプレミスの MySQL と PostgreSQL で現在運用されているデータベースはミッション クリティカルですが、データセンターの規模と管理チームの規模による制限を受けています。 あなたは、Azure サービスを使用してこれらの制限に対処できるかどうかや、対処できる場合はニーズに最適なサービスはどれかを調査する必要があります。
ここでは、Azure Database for MySQL、Azure Database for MariaDB、および Azure Database for PostgreSQL と、これらで使用できるデプロイ オプションについて説明します。 また、Azure の仮想マシンまたはコンテナーでオープンソース データベースを運用する利点と、サービスとしてのインフラストラクチャ (IaaS) のアプローチについても説明します。
可用性
Azure サービス レベル アグリーメント (SLA) で保証される可用性は実装の正確な詳細によって異なりますが、常に高いものが提供されます。 たとえば、Azure Database for PostgreSQL の場合、Microsoft は追加コストなしで 99.99% の可用性を保証しています。 可用性をさらに高める場合は、フレキシブル サーバーを使用できます。
オンプレミス ネットワークでこの可用性を実現する場合、ハードウェア障害に対する回復性を備えたシステムを設計する必要があります。 この場合、次のものが必要になります。
- 複数の物理サーバー。
- サーバー障害が発生した場合にクエリを再ルーティングできるロード バランサー。
- サーバー間でデータを共有する記憶域ネットワーク、またはサーバー間でデータをレプリケートする手段。
- 回復性があるネットワーク ハードウェア。
- 環境に応じて制御されるデータセンター。
- 無停電電源装置とバックアップ発電機。
これらのコンポーネントはどれも高価であり、実装と実行にはスキルが必要となります。 また、多くの管理リソースが消費されます。 Azure なら、これらの要件が既に解決されています。データベースを作成するだけで済み、高可用性が組み込まれています。
スケーラビリティ
ユーザー ベースが拡大すると、それに伴ってシステムの需要も増加します。 どのオンプレミス システムにも最大容量があります。その上限に近づいたら、ハードウェアを追加してそれを増やす必要があります。 容量は即座に追加できるわけではありません。 代わりに、ハードウェアを購入し、必要なオペレーティング システムとソフトウェアをインストールして、更新プログラムを適用してから、新しいデータベース インスタンスにデータを追加する必要があります。 これらはすべて時間がかかります。
また、多くの場合、大きな需要は一時的なものであることにも注意してください。 たとえば、効果的なマーケティング キャンペーンを実施した場合、トラフィックがピークに達した後に、需要が小さい状態に戻ることがあります。 オンプレミスのセットアップでは、このようなピークに合わせてシステムを設計する必要があります。 つまり、ほとんどの時間、システムの使用率が低いにもかかわらず、コストがかかり、メンテナンスも必要になります。
クラウドなら、これらの課題をはるかに簡単に克服できます。 システムが容量に達したら、より大規模なレベルに移る、仮想マシンを追加するなどして、非常に迅速に対応できます。 需要が低下した場合は、容量を削除することで、短時間でコストを節約できます。 Azure では、使用した容量の分だけ料金を支払います。
IaaS および PaaS
Azure にデータベースを実装する場合は、必要な制御のレベルに応じて、少なくとも 2 つのアプローチから選択できます。
- IaaS (サービスとしてのインフラストラクチャ)。 IaaS のアプローチを選択した場合、Azure によって物理インフラストラクチャが運用されます。 お客様は仮想マシンとそれらを接続する仮想ネットワークを作成し、必要なソフトウェアとデータをインストールします。 仮想マシンの実行は、物理サーバーの実行に似ています。 オペレーティング システムとソフトウェアはお客様が管理しますが、データセンター、環境制御、インターネットへの接続を気にする必要はありません。
- PaaS (サービスとしてのプラットフォーム)。 PaaS のアプローチを選択した場合、物理インフラストラクチャ、必要な仮想サーバー、データベース ソフトウェアが Azure によって運用されます。 これらのコンポーネントで構成タスクやメンテナンス タスクを実行する必要はありません。 たとえば、Azure によってサービス パックが自動的に適用されます。 お客様はデータベース管理に専念できます。 Azure でオープンソース データベースを運用するための PaaS 型サービスとして、Azure Database for MySQL、Azure Database for MariaDB、Azure Database for PostgreSQL があります。
Azure Database for MySQL、MariaDB、PostgreSQL サービスとは
MySQL、MariaDB、または PostgreSQL 上に構築されたオンプレミスのデータベース システムがあり、データベースをクラウドに移行する場合は、Azure Database for MySQL、Azure Database for MariaDB、または Azure Database for PostgreSQL の使用を検討します。 これらのサービスを使用して、新しいデータベースを実装することもできます。 たとえば、開発者とデータベース管理者にこれらのデータベース サーバーの使用経験があり、新しいシステムの習得に時間を使わせたくない場合は、Azure Database for MySQL、Azure Database for MariaDB、または Azure Database for PostgreSQL を使用することで、スタッフは既存の知識を活用できます。 Azure Database for MySQL、Azure Database for MariaDB、Azure Database for PostgreSQL は PaaS システムであるため、仮想サーバーや仮想ネットワークの設計や実装について心配する必要はありません。
Azure Database for MySQL とは
Azure Database for MySQL は、MySQL Community Edition に基づく、Azure クラウド内の MySQL の PaaS 実装です。 現在、ニーズに応じて、MySQL バージョン 5.6、5.7、8.0 のサポートから選択できます。 MySQL の進化に伴って、その他のバージョンのサポートも提供される予定です。
Azure Database for MySQL を使用すると、次の機能を利用できるようになります。
- 組み込みの高可用性。
- 予測可能なパフォーマンス。
- 需要に迅速に応える簡単なスケーリング。
- 保存中データと転送中データのセキュリティ保護。
- 最大 35 日間の自動バックアップとポイントインタイム リストア。
- エンタープライズ レベルのセキュリティおよび法律への準拠。
このシステムでは従量課金制の料金が使用されるため、支払いは使用した分だけで済みます。
次の 2 つのデプロイ オプションから選択できます。
Azure Database for MySQL - フレキシブル サーバー
Azure Database for MySQL - フレキシブル サーバーは、データベースを複数の可用性ゾーンにレプリケートすることで可用性の向上を実現します。 また、データベース サービスをすばやく開始および停止して、コストを最適化することもできます。
Azure Database for MySQL は、ハードウェア、ネットワーク コンポーネント、仮想サーバー、ソフトウェア修正プログラム、その他の基になるコンポーネントを管理する必要なく大規模なデータベースにスケールアップできるグローバル データベース システムを提供します。
Azure Database for MariaDB とは
MariaDB は、Oracle による MySQL の買収に対応して、コミュニティによって作成された MySQL のフォークです。 Azure Database for MariaDB は、Azure クラウドでの MariaDB の PaaS 実装です。
MariaDB は MySQL の互換 DB として設計されているので、クライアント アプリの大幅な再コーディングやデータベース スキーマの変更を行わずに、MySQL データベースを MariaDB データベースに置き換えることができます。 MariaDB の多くの機能は MySQL と同じです。次に例を示します。
- データベースの構造とインデックス
- データ定義コマンド
- クライアントのプロトコル、構造、API
mysqldump
およびmysqladmin
プログラム
MySQL と MariaDB のこの類似性により、MySQL から Azure Database for MySQL への移行タスクは、MariaDB から Azure Database for MariaDB への移行タスクとよく似ています。 これらのシステムにはいくつかの違いがあります。 たとえば、MariaDB では列ストアと Redis Cache がサポートされており、どちらもパフォーマンスを最適化するために使用できます。
注意
MySQL および MariaDB から Azure へのデータベースの移行はよく似ているため、このコースではこれらをまとめて説明します。
重要
執筆時点では、Azure Database for MariaDB にはフレキシブル サーバー デプロイ オプションはありません。
Azure Database for PostgreSQL とは
PostgreSQL を使用する場合は、Azure Database for PostgreSQL を選択することで、Azure クラウドでそのデータベース サーバーの PaaS 実装を利用できます。 これにより、MySQL サービスと同じ可用性、パフォーマンス、スケーリング、セキュリティ、管理上のベネフィットが得られます。
次の 3 つのデプロイ オプションから選択できます。
Azure Database for PostgreSQL - フレキシブル サーバー
Azure Database for PostgreSQL - フレキシブル サーバーでは、MySQL フレキシブル サーバーと同様のベネフィットが得られます。 これを使用すると、最高レベルの可用性と便利な再起動を提供できます。
MySQL、MariaDB、PostgreSQL を Azure で実行するための IaaS オプション
物理アーキテクチャをクラウドにレプリケートするには、IaaS のアプローチを使用します。 システムの基盤となるオペレーティング システムとソフトウェアの制御を強化する場合は、IaaS を選択します。
ただし、要件や既存のシステムの複雑さに応じて、IaaS のアプローチを実装する際に採用できるアプローチがいくつかあります。
リフトアンドシフト
1 つのアプローチとして、データセンターの仮想ネットワーク インフラストラクチャと一致するものを作成して、オンプレミスのアーキテクチャをクラウドにミラーリングします。オンプレミス システムのサーバーごとに仮想マシンを作成します。 データベース管理システムソフトウェア (MySQL、MariaDB、または PostgreSQL) を仮想マシンにインストールして構成します。 その後、クライアント コードや構成をほとんど変更せずに、システムをクラウドに "リフトアンドシフト" します。
この方法では、段階的な移行プロセスに従います。 Azure ネットワーク ゲートウェイを使用して、システムの一部をクラウドに徐々に移行し、他の要素はオンプレミスに保持します。 このハイブリッド アプローチを使用して各段階でシステムを安定させ、必要に応じてロールバックします。
あらかじめ構築された仮想マシンの使用
Marketplace には、MySQL、MariaDB、PostgreSQL の各サーバー用に事前に構成された仮想マシンがあります。 これらのイメージを使用すると、データベース サーバー ソフトウェアを自分でインストールする必要がないため、時間を節約できます。 データベース仮想マシンをセットアップするときは、適切なバージョンのデータベース ソフトウェアを含むイメージが Marketplace にあるかどうかを確認し、それを使用することを検討します。
カスタム仮想マシン イメージを Azure にアップロードし、それを使用して仮想マシンを作成することもできます。 このイメージには、任意のデータベース ソフトウェアと、データベース自体も含めることができます。 詳細については、Azure PowerShell を使用した Azure VM のカスタム イメージの作成に関するチュートリアルをご覧ください。
MySQL、MariaDB、または PostgreSQL コンテナーの使用
検討できるもう 1 つの仮想化テクノロジはコンテナ化です。 コンテナーは仮想マシンに似ていますが、オペレーティング システムをホスト コンピューターと共有します。 コンテナーは仮想マシンよりも小さいので、ホスト コンピューター上でより多くのコンテナーを実行でき、新しいものをより迅速に開始できます。 ただし、オペレーティング システムが共有されるため、たとえば、Windows マシンで Linux コンテナーを実行することはできません。 物理サーバーでコンテナーを実行するには、Docker などのコンテナー ホスト ソフトウェアが必要です。 コンテナーはイメージからデプロイされます。仮想マシンと同様に、これらのイメージには、MySQL、MariaDB、PostgreSQL などのデータベース ソフトウェアを含めることができます。
Azure で少数のコンテナーを実行する場合は、仮想マシンに Docker をインストールします。 または、Container Instances サービスを使用すると、独自の仮想マシンをセットアップしなくても、Azure でコンテナーを実行できます。 相互に通信する必要がある多数のコンテナーを簡単に管理したい場合は、Azure Kubernetes Service を使用します。