SQL Server をMicrosoft Azureに移行する方法とバックアップの課題

    今回は、SQL Server を「Microsoft Azure」上に移行する際の課題と方法とAzure上でのデータベースの可用性をさらに高めるLifeKeeper/DataKeeperについてご紹介いたします。

    日本マイクロソフトが提供するクラウドサービス「Microsoft Azure」は、上手に活用することで企業のビジネスを大きく成長させられます。また、データベースをクラウド上に移行したいというニーズも多く、日本マイクロソフトではそのニーズに応えるために「SQL Server on Azure VM」を提供しています。

    しかし、SQL ServerをAzure上に移行する際や、移行後に物理環境と同等の可用性を担保するには、いくつかの課題もあります。今回は、サイオステクノロジーと日本マイクロソフトが2017年の3月22日に開催したセミナーの内容から、課題と解決策を探ります。

    日本マイクロソフトのテクニカルエバンジェリストである山本美穂氏は、「SQL Serverをクラウドに移行するための課題と方法とは?」と題するセッションを行いました。以降、Azureそのものの解説も絡めながら山本氏のセッション内容を紹介していきます。

    ※以下、山本氏の言葉は「」で記載します。

    ms-seminar

    Microsoft Azureとは?マイクロソフトのクラウドプラットフォームについて

     

    Microsoft Azureはマイクロソフトが提供するクラウドサービスで、様々な機能があります。マシンやネットワークなどのITインフラを提供するIaaS、アプリケーションを稼働させるためのプラットフォームを提供するPaaS、アプリケーションそのものを提供するSaaSの、大きく3つのサービスが用意されています。これらのサービスを利用することで、インフラなどを運用するコストの大幅カットが可能です。また、無料で利用できる部分も多く、導入コストを低く抑えられる点もメリットとして挙げられます。

    Microsoft Azureが提供する機能は多種多様で、例えばAIや機械学習のカスタマイズが可能な「Azure AI」、シングルサインオンやID保護の機能を持つ「Azure Active Directory」などのサービスが用意されています。インフラやプラットフォームの提供だけではなく、ユーザーの細かなニーズに応えられるサービスが充実しているのが、Microsoft Azureの特徴です。

    日本でも多くの企業が利用しており、目的に合ったサービスを自由に組み合わせて活用を進めています。IaaSを利用して自社システムを構築するという使い方から、SaaSで用意されたアプリケーションをそのまま利用するという使い方まで、様々です。そんなMicrosoft Azureについて、山本氏はセッションで次のように語っています。

    「マイクロソフトがクラウドサービスの提供を開始して、今年(2018年)で7年になります。現在では、インフラを提供するIaaSとして『Microsoft Azure 仮想マシン』、オンプレミスのプライベートクラウドのインフラストラクチャとしての『Windows Server Hyper-V』、プラットフォームを提供するPaaSとして『Microsoft Azure App Service』、ソフトウェアを提供するSaaSとして『Office 365』Dynamics 365』などをクラウドで展開しています」

    これらのクラウドサービスを支えるデータセンターは、2017年3月現在、世界で32の地域にあり、さらに6つの地域に新設される予定です。また、Azureは以前『Windows Azure』という名称だったことから、「Windowsしか動作していないと思われることもまだ多い」と山本氏は言います。しかし、Azureはオープン化に注力しており、Linuxをはじめとする多くのオープンソースソフトウェアに対応しております。

    また、マイクロソフトのデータセンターの特徴として、境界、建物、コンピュータルームに高いセキュリティ対策が施されているほか、注力しているポイントとして「電源」「ネットワーク回線」「均一化されたサーバ」を挙げました。特にサーバはOpen Compute Projectに参加しており、サーバの内部設計を全て公開していることも特徴的です。

    Microsoft Azureを利用する4つのメリット

    Microsoft Azureはサービスが充実しているだけでなく、利用する多くのメリットがあります。ここでは、Microsoft Azureを利用するメリットを紹介します。

    1.ネットワークの強大さ

    クラウドサービスの利用に関して、ネットワーク環境の品質は何よりも重要だと言っても大げさではないでしょう。その点、Microsoft Azureはマイクロソフトが運用する強大なネットワークを利用しているため安心です。世界中にあるAzureデータセンターはマイクロソフトのバックボーンネットワークでつながっており、グローバルなサービス展開を可能にしています。大きなファイル転送なども問題なく利用でき、海外拠点とのデータ共有や共同開発にも利用できます。

    2.高いセキュリティと安定したサービス

    「クラウドサービスはセキュリティが心配」という声もありますが、Microsoft Azureはセキュリティ対策も万全です。ネットワークセキュリティ対策が備えられているのはもちろん、データセンター内部のセキュリティ対策もしっかり行われています。悪意のあるオペレーションの脅威を抑えるため、入館者の制限や多層のセキュリティゲート設置などの対策がとられており、人為的なミスによるトラブルを防ぐため、自動化による人為的作業の削減なども実施されています。

    これらの対策をオンプレミス環境で整えるのは手間やコストがかかりますが、Microsoft Azureを使うことでこのような対策がしっかりした環境を利用できるのは、大きなメリットです。また、Microsoft AzureではISOなどの国際的な規格にも適合しており、コンプライアンス対策もしっかり行われていることがわかります。

    世界中にデータセンターが存在するということは、災害のリスクを分散させるという点でもメリットです。日本国内でも東日本と西日本にデータセンターが分散しており、クラウドで利用できる災害復旧サービスも展開しています。このように、セキュリティ対策に加えて災害対策も行われているため、安定したサービスの利用が可能です。

    3.オンプレミスからの連携や移行が容易にできる

    クラウドサービスの利用を検討している企業では、独立した新規利用ではなく既存システムやファイルサーバからの移行や、オンプレミスのシステムと連携のために使いたいというケースも少なくありません。Microsoft Azureでは、オンプレミスとの連携も行えるため、安心して利用を始められます。自社データセンターからAzureデータセンターへのバックアップ、オンプレミスファイルサーバからMicrosoft Azureへの移行など、多くの事例があります。

    オンプレミスサーバにWindowsサーバを採用しているケースが少なくないことが、連携や移行が容易にできる理由のひとつです。同じマイクロソフト製であるため親和性が高く、連携や移行のハードルが低いのです。サーバだけでなくOffice365などのサービスとももちろん親和性が高いため、マイクロソフト製品を多く利用している企業では、Microsoft Azureの導入もスムーズでしょう。

    4.日本企業でも利用しやすい

    Microsoft Azureは、24通貨から支払い通貨を選択することが可能です。そのため日本円でも支払いが可能で、日本企業も利用しやすいというメリットがあります。料金設定も日本円で行われているため、為替の影響も受けません。他のクラウドサービスでは米ドルで支払わなければならないケースもあるため、支払いの観点からみてもMicrosoft Azureを利用するメリットは大きいでしょう。

    また、日本のAzureデータセンター利用に関しては日本の法律が適用されるという点も安心できるポイントです。海外のクラウドサービスを利用する場合、司法権の違いからトラブルになってしまうリスクがあります。Microsoft Azureの場合は日本の法律に準拠しており、管轄裁判所も東京地裁となっているため、日本企業でも安心して利用できる点もメリットです。

    「SQL Server on Azure VM」と「SQL Database」の違い

    マイクロソフトはデータベース向けのデータプラットフォームとして、仮想化されていない物理マシン(ベアメタル)上の「SQL Server」、オンプレミス仮想マシン上の「SQL Server on Private Cloud」、IaaSであるAzure仮想マシン上の「SQL Server on Azure VM」、そしてPaaSである「SQL Database」および「SQL Data Warehouse」を提供しています。

    data-platform-of-microsft

    では、IaaSである「SQL Server on Azure VM」と、PaaSである「SQL Database」には、どのような違いがあるのでしょう。基本的にPaaSでは、OS、ミドルウェア、ランタイム領域までをベンダー側で管理するため、その大きな違いは自由度にあり、どちらを選ぶかはユースケースによる」と山本氏は言います。

    differences-of-cloud-service

    「SQL Server on Azure VM」では、OSやSQL Serverのバージョンを選択することができ、パッチの適用や可用性環境、バックアップなどの管理は利用者側が実施します。これはバージョンアップも同様です。また、SQL Serverのすべての機能を利用でき、仮想マシン単位でインスタンスのサイズを変更できます。さらに、1TBを超えるデータベースを利用すること、仮想ネットワークへの参加も可能です。SLAは仮想マシンに準拠します。

    これに対して、「SQL Database」では、OSやSQL Serverのバージョンの選択をすることができず、パッチの適用や可用性環境、バックアップなどの管理は自動で行われます。また、SQL Serverの機能の全てが利用できるわけではなく、データベースエンジンの機能のみが利用可能です。パフォーマンスレベルの変更も、データベース単位で変更します。さらに、1データベース辺り最大で1TB(P11を利用した場合)までという制限があり、仮想ネットワークへの参加もできません。SLAはSQL Databaseに準拠します。

    このほかにも、機能面でさまざまな差異があります。

    「SQL Server」を「Azure」に移行する際の課題

    では、移行の際にはどのような課題があるのでしょうか。山本氏はまず「ライセンス」と「構築」を挙げました。「SQL Server」のライセンスは、2つの考え方があります。まず、Azure上で使用する場合、すでに所有しているライセンスをそのまま持ち込む方法があります。これはBYOL(Bring Your Own License)と呼ばれます。この場合は、Azure に持ち込む対象の「SQL Server」にソフトウェアアシュアランス(SA)がついている必要があります。

    もうひとつは、ライセンス付与された「SQL Serverイメージ」を使う方法です。先ほどのBYOLに対してPAYG(Pay As You Go)と呼ばれ、ワークロードとともに課金されるタイプになります。ワークロードの課金の中にSQL Server自身のライセンスが含まれているというモデルです。

    ただ、どちらの場合でもAzureのテンプレートからデプロイした場合には、OSとSQL Serverともに英語版のイメージしかありません。また、SQL Serverの全機能がインストールされているので、不要なサービスは停止を検討する必要があります。

    構築においては、Azureのポータルから「SQL Serverイメージ」をデプロイできるのですが、選択肢が限られる部分があるので、注意が必要です。最初にライセンスをBYOLかPAYGから選び、続いて4つの設定を行います。具体的には、「ディスクの種類の選択」「ストレージの構成」「SQL Serverの基本設定」「SQL Server IaaS Agent 拡張機能」です。拡張機能では、自動修正、自動バックアップ、Azure Key Vault の統合、Rの有効化を設定できます。

    実際にイメージから展開できる「SQL Server」ですが、選択肢が限られているので注意が必要です。現時点で、「SQL Server」のバージョンは「2008 R2 SP3以降」で、「2012 SP3」、「2014 SP2」、「2016 SP1」のみとなります。また、英語版しかない問題については、日本マイクロソフトが日本語化を全自動で行うスクリプトを提供しています。

    「SQL Server」を「Azure」へ移行した後の設定

    移行が完了したら、やはりパフォーマンスを追求する必要があります。そこで山本氏は、移行後の設定例を紹介しました。
    これらの設定にはデプロイの際に行えない項目もあるので、運用開始時に設定する必要があります。設定の変更箇所は、主に以下の8つの項目があります。

    1. 仮想マシンのサイズ
    2. ストレージ(地理的冗長を無効にするなど)
    3. ディスク(少なくともP30のディスクを2つ設定)
    4. ディスクキャッシュ(ログファイルのディスクではキャッシュを有効にしない)
    5. NTFSアロケーションサイズ(64KBでフォーマットする)
    6. ディスクストライピングサイズ(New-VirtualDisk のストライプサイズ(Interleave)は、OLTP:64KB / DWH:256KBの設定を推奨)
    7. 初期ファイルの割り当ての短縮(サービスアカウントに「ボリュームの保守タスクを実行」の権限を付与)
    8. ページングアクティビティ抑制(サービスアカウントに「メモリ内のページのロック」の権限を付与)

    運用の開始後について、山本氏はAzureストレージを利用したバックアップに限定して説明を行いました。
    「SQL Server 2012 SP1 CU2」以降では、データディスクではなくAzureストレージに直接バックアップを取得することが標準機能として搭載されました。これにより、ページBLOBでの取得が可能です。なお、「SQL Server 2016」では、ブロックBLOBやスナップショットでの取得が可能になっています。
    (BLOB: Binary Large Object データベース管理システム(DBMS)において、バイナリデータを格納する場合のデータ型。画像や音声、その他のマルチメディアオブジェクトがBLOBとして格納される。)

    ただし、ページBLOBで取得する場合は単一ファイルでのバックアップのみで、複数のバックアップファイルにストライプすることはできません。また、バックアップファイルの最大サイズは1TBに限定されます。なお、「SQL Server 2016」のブロックBLOBでは、複数バックアップファイルへのストライプが可能で、それぞれのファイルの最大サイズは200GBが上限となり、最大12.8TBまでストライプできます。

    また、「SQL Server 2016」のスナップショットを利用したバックアップでは、データベースの“すべてのファイル”をAzureストレージに直接配置している場合のみという条件になるので、こちらも注意が必要です。

    「Azure」へ移行した「SQL Server」の可用性を高めるには

    セミナーの最後に、サイオステクノロジーのプリセールス担当の西下容史による「Azure上でSQL Serverを含めたインターネット分離ソリューションの可用性を高める方法とは?」と題したセッションが行われ、次のように説明しました。

    IaaSではOS以上の可用性は利用者の責任範囲であり、SLAが99%以上であっても、計画停止はSLAに反映されていないクラウドもあります。一方で、最近の障害原因の傾向として、ハードウェアに起因するものよりアプリケーションに起因する障害が増えています。

    sla-of-public-cloud

    また、IaaSでは仮想基盤のHA機能により高可用性を実現していますが、基盤側の障害検知は物理・仮想基盤の状態とネットワーク疎通で確認しますので、アプリケーションやミドルウェアの障害は検知できません。さらに、データベースシステムでは、データの整合性を確保する必要もあります。しかし、HAクラスターによる可用性とIaaSの標準機能による可用性を相互補完することで、オンプレミス環境と同様にシステム全体の高可用性を実現できます。 

    ha-system-on-public-cloud

    しかし、その実現には課題もあり、オンプレミスでは共有ストレージによるクラスター構成を実現できますが、IaaSでは共有ディスクを使用することができないため、クラスター構成の実現ができません。そこで、共有ディスク以外の方法として「DataKeeper」を紹介。「DataKeeper」は、「LifeKeeper」またはWSFC (Windows Server Failover Clustering)と連携することで、HAクラスターの共有ストレージ代替として使用できるソリューションです。これにより、リアルタイムにブロックレベルで差分データを同期し、効果的な圧縮アルゴリズムによって帯域を有効活用できます。

    realizing-ha-cluster-on-public-clouds

     

    クラウド上で論理的な共有ストレージを提供する、
    サイオス独自のソリューションを確認してみる

    sanless-clusters banner


    "SANLess Clusters"ソリューションを見る

    SNSでもご購読できます。