Amazon Web Services ブログ

ブロックレベルレプリケーションを使用した Amazon RDS for SQL Server Web Edition の高可用性実装

Amazon Relational Database Service (Amazon RDS) for SQL Server は、マルチ AZ 配置におけるブロックレベルレプリケーションによる高可用性を導入することで、SQL Server 2022 Web Edition を強化しました。以前は、高可用性機能は Always On 可用性グループやデータベースミラーリングなどの技術を通じて、Enterprise Edition と Standard Edition に限定されていました。この新しい機能により、Web ホスターや Web 付加価値プロバイダー (VAP) がパブリックでインターネットアクセス可能な Web ページ、Web サイト、Web アプリケーション、Web サービスをホストするために設計された SQL Server Web Edition に、エンタープライズグレードの可用性がもたらされます。

このリリースにより、運用オーバーヘッドを大幅に削減しながら、高可用性データベースを迅速にセットアップし、維持することができます。この投稿では、ブロックレベルレプリケーションの利点と開始方法について説明します。詳細については、Amazon RDS での Microsoft SQL Server のライセンスをご覧ください。

ソリューション概要

Amazon RDS のマルチ AZ 配置は、同期されたスタンバイデータベースインスタンスを維持することで高可用性を実現します。Amazon RDS for SQL Server は従来から様々なレプリケーション技術をサポートしてきましたが、この新しいソリューションは特にブロックレベルレプリケーションを活用して、プライマリインスタンスとスタンバイインスタンス間でストレージを同期します。このアプローチにより、データベースの冗長性を維持するためのより合理化された効率的な方法が提供されます。

SQL Web edition のマルチ AZ がサポートされているバージョンは次の通りです。

  • SQL Server 2022: Web Edition 16.00.4215.2.v1 または、それ以上のバージョン

Microsoft SQL Server Web Edition について、ブロックレベルレプリケーションを使用したマルチ AZ 配置が可能なのは、16.00.4215.2.v1 以上のバージョンで新規作成またはアップグレードされた DB インスタンスのみであることに注意してください。

最新のバージョンサポートについて最新情報を得るには、RDS ドキュメントを参照してください。

マルチ AZ 配置では、Amazon RDS が異なるアベイラビリティーゾーンに同期スタンバイレプリカを自動的にプロビジョニングし、維持します。フェイルオーバーが完了するまでの時間は、プライマリ DB インスタンスが利用できなくなった時点でのデータベースアクティビティやその他の条件によって異なります。フェイルオーバー時間は通常 60 ~ 120 秒です。ただし、大規模なトランザクションや長時間の復旧プロセスにより、フェイルオーバー時間が長くなる場合があります。

プライマリインスタンスのデータは、ブロックレベルでスタンバイインスタンスに同期的にレプリケートされ、サーバーレベルのオブジェクトや設定を含む完全なデータ冗長性を提供します。計画外のサービス中断が発生した場合、Amazon RDS は自動的にスタンバイインスタンスにフェイルオーバーします。フェイルオーバープロセス全体を通じて同じ DNS エンドポイントが維持されるため、アプリケーションの接続文字列を再設定する必要がなくデータベース操作を最小限の中断で再開できます。

AWS Management ConsoleAWS Command Line Interface (AWS CLI)、または AWS SDK を使用して、マルチ AZ オプション付きの新しい RDS SQL Server Web Edition データベースインスタンスを作成したり、既存の Web Edition データベースインスタンスをシングル AZ からマルチ AZ に変更したりできます。

前提条件

開始するには、以下のリソースが必要です:

このソリューションには新しい AWS リソースが必要で、コストが発生します。実装前に AWS 料金を確認してください。

本番環境以外の環境でこの設定をテストし、本番環境への適用前に完全な検証を実行することを強く推奨します。

マルチ AZ の DB インスタンス作成

DB インスタンスを作成する前に、AWS リージョンとバージョンの可用性を確認して、RDS インスタンスをホストしたいリージョンで SQL Server エディションとバージョンの組み合わせが有効になっていることを確認してください。

マルチ AZ の Amazon RDS インスタンスを作成するには、以下の手順を実行してください:

  1. Amazon RDS コンソールで、ナビゲーションペインの「データベース」を選択します。
  2. 「データベースの作成」を選択します。
  3. 「標準作成」を選択します。
  4. 基本設定を構成します:
  5. エンジンタイプで「Microsoft SQL Server」を選択します。
  6. データベース管理タイプで「Amazon RDS」を選択します。
  7. エディションで「SQL Server Web Edition」を選択します。
  8. バージョンで「16.00.4215.2.v1」を選択します。
  9. インスタンス識別子に、インスタンスの名前を入力します。
  10. 設定で、以下を構成します:
  11. プライマリユーザー名とパスワードを入力します。
  12. 必要に応じて DB インスタンスクラスを指定します。
  13. ストレージタイプとサイズを設定します。
  14. 可用性と耐久性で、マルチ AZ 配置について「はい (ブロックレベルレプリケーション)」を選択します。
  15. 接続の設定で、仮想プライベートクラウド (VPC) とサブネットグループを選択します。
  16. パブリックアクセスについては、「いいえ」を選択します。
  17. VPC セキュリティグループについては、既存を選択し、作成したセキュリティグループを選択します。
  18. 「データベースの作成」を選択します。

Amazon RDS が マルチ AZ Amazon RDS インスタンスをプロビジョニングするまで待機します。

または、AWS CLI を使用して マルチ AZ インスタンスをデプロイすることもできます。Windows 上で AWS CLIを 使用してSQL Server Web edition の RDS インスタンスを作成するには、次のコマンドを使用します:

aws rds create-db-instance ^
--db-instance-identifier sqlserver-web-demo ^
--engine sqlserver-web ^
--engine-version 16.00.4215.2.v1 ^
--license-model license-included ^
--master-username master ^
--master-user-password password ^
--db-instance-class db.m5d.4xlarge 
--allocated-storage 16000 ^
--storage-type io2 
--iops 64000 ^
--multi-az ^
--storage-encrypted ^
--region us-east-1
Code

MacOS/Linux で AWS CLI を使用して SQL Server Web edition の RDS インスタンスを作成するには、以下のコマンドを使用してください:

aws rds create-db-instance \
 --db-instance-identifier sqlserver-web-demo \
--engine sqlserver-web \
--engine-version 16.00.4215.2.v1 \
--license-model license-included \
--master-username master \
--master-user-password password \
--db-instance-class db.m5d.4xlarge \
--allocated-storage 16000 \
--storage-type io2 \
--iops 64000 \
--multi-az \
--storage-encrypted \
--region us-east-1
Code

接続と設定確認

設定を確認するために、以下の手順を完了してください:

  1. Session Manager を使用して Amazon EC2 インスタンスに接続します。
  2. SSMS を起動し、以下の情報で接続します:
    1. サーバー名:Amazon RDS for SQL Server インスタンスのエンドポイント
    2. 認証:SQL Server 認証
    3. ログイン資格情報:作成時に指定したもの
  3. 新しいクエリウィンドウを開き、以下のクエリを実行してデータベースとテーブルを作成します:
    USE master;
    GO
    
    CREATE DATABASE MAZDB;
    GO
    
    USE MAZDB;
    GO
    
    CREATE TABLE dbo.test(
    ID int identity(1,1) primary key,
    [Desc] char(100)
    )
    GO
    
    INSERT INTO dbo.test VALUES('RDS MAZ')
    GO 50
    
    SELECT COUNT (*) FROM dbo.test;
    GO 
    SQL

データベースが作成され、50 件のレコードがテーブルに挿入されるのを確認できます。

フェイルオーバーの実行

コンソールを使用してフェイルオーバー機能をテストできます。フェイルオーバープロセスは、セカンダリノードを新しいプライマリインスタンスに昇格させます。プライマリのアベイラビリティーゾーンが変更されたことも確認できます。以下の手順を実行してください:

  1. Amazon RDS コンソールで、インスタンスを選択します。
  2. アクションメニューで、再起動を選択します。
  3. フェイルオーバーありで再起動を選択します。
  4. 再起動を確認します。

フェイルオーバーを伴う再起動操作により、短時間のダウンタイムが発生します。アプリケーションへの影響を最小限に抑えるため、オフピーク時間帯にスケジュールしてください。

または、AWS CLI を使用してフェイルオーバーを開始することもできます:

aws rds reboot-db-instance \
--db-instance-identifier sqlserver-web-demo \
--region us-east-1 \
--force-failover
Code

フェイルオーバー後のステータス確認

フェイルオーバープロセスが完了したら、新しいプライマリインスタンスに接続して、以前に作成されたデータベースが利用可能な状態にあり、クエリを実行できることを確認できます。以下の手順を実行してください:

  1. Windows EC2 インスタンスにリモートデスクトップ接続します (以前の接続が切断されている場合)。
  2. 検索ウィンドウで SSMS を検索し、「接続」を選択して「データベースエンジン」を選択します。
  3. サーバー名には、RDS for SQL Server のエンドポイントを入力します。
  4. RDS for SQL Server インスタンスを作成する際に指定したログインとパスワードの詳細を入力します。
  5. 「接続」を選択します。
  6. 新しいクエリウィンドウを開いて、データアクセシビリティを確認してください:
USE MAZDB;
GO
SELECT COUNT (*) FROM dbo.test;
GO
SQL

50 行が返されることを確認してください。

コンソールに新しいアベイラビリティーゾーンが反映されるまで数分かかります。

制限事項

このソリューションの制限事項の詳細については、Microsoft SQL Server DB インスタンスの制限事項を参照してください。

クリーンアップ

継続的な課金を避けるために、この投稿の一部として作成したリソースを削除してください:

  1. RDS インスタンスを削除する
  2. EC2 インスタンスを削除する

結論

この投稿では、SQL Server Web Edition の マルチ AZ RDS インスタンスをセットアップし、フェイルオーバーテストを通じてその高可用性機能を検証する方法を紹介しました。

この新機能により、運用オーバーヘッドを削減しながら、データベースの高可用性を実装するプロセスが簡素化されます。手動での設定とメンテナンスの必要性を最小限に抑えることで、事業継続性とアプリケーションの可用性要件をより適切に満たすことができます。

翻訳はソリューションアーキテクトの Yoshinori Sawada が担当しました。原文はこちらです。


著者について

Ram Yellapragada

Ram Yellapragada

Ram は、Amazon RDS チームのシニアデータベースエンジニアです。彼は AWS に 5 年以上在籍しています。RDS 製品の開発に従事し、特に マルチ AZと耐久性機能に注力しています。それ以前は、様々な業界のお客様と協力し、AWS クラウドにおける複雑なデータベースソリューションの設計、開発、展開に関する豊富なコンサルティング経験を持っています。

Nirupam Datta

Nirupam Datta

Nirupam は、AWS のシニアテクニカルアカウントマネージャーです。彼は AWS に 5 年以上在籍しています。データベースエンジニアリングとインフラアーキテクチャにおいて 13 年以上の経験を持ち、Amazon RDS コアシステムと Amazon RDS for SQL Server のスペシャリストでもあります。彼はお客様に技術支援を提供し、AWS クラウドでの移行、最適化、そして導入の道のりをガイドしています。

Shirin Ali

Shirin Ali

Shirin は、Amazon Web Services のシニアデータベーススペシャリストソリューションアーキテクトです。お客様のアーキテクトに対してデータベースソリューションを AWS に移行することを支援しています。AWS 入社以前は、エネルギーおよび教育業界セグメントにおいて、本番環境およびミッションクリティカルなデータベース実装をサポートしていました。