RDS for SQL Server の SQL Server エンジンエディションをアップグレードまたはダウングレードする方法を教えてください。

所要時間3分
0

Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server の SQL Server エンジンエディションをアップグレードまたはダウングレードしたいです。

簡単な説明

Amazon RDS for SQL Server がサポートするエディションは、Express、Web、Standard、Enterprise です。Amazon RDS コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して SQL Server エディションの変更をインプレース変更として実行することはできません。

解決策

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

SQL Server エンジンエディションをアップグレードする

既存の RDS for SQL Server インスタンスの RDS スナップショットを作成し、そのスナップショットから新しい RDS インスタンスを復元します。アップグレードの制限については、「Microsoft SQL Server での考慮事項」を参照してください。

次の手順を実行します。

  1. 元の RDS for SQL Server インスタンスのスナップショットを作成します。
  2. スナップショットを復元し、新しい RDS インスタンスを作成します。インスタンスを復元するときに、データベースの新しいエディションを選択します。
  3. DNS エンドポイント名を再利用するために、元の RDS for SQL Server インスタンスの名前を変更または削除します。詳細については、この記事の「RDS インスタンスの名前を変更する」セクションを参照してください。

Standard エディションから Enterprise エディションにアップグレードする方法については、「Amazon RDS for SQL Server インスタンスを Standard エディションから Enterprise エディションに変更する」を参照してください。

次の種類のアップグレードには、同じスナップショットと復元方法を使用できます。

  • Standard エディションから Enterprise エディションへ
  • Web エディションから Standard エディションまたは Enterprise エディションへ
  • Express エディションから Web エディション、Standard エディション、Enterprise エディションへ

注: エディションをアップグレードする際に、スナップショットの復元により新しい RDS for SQL Server インスタンスが作成されます。新しいインスタンスには、スナップショットのソースインスタンスとは別の RDS エンドポイントがあります。

SQL Server のエディションをダウングレードする

RDS for SQL Server インスタンスの新しいエディションから以前のエディションへのインプレースダウングレードはサポートされていません。ただし、次のタイプのダウングレードは可能です。

  • Enterprise エディションからStandard、Web、Express エディションへ
  • Standard エディションから Web エディションまたは Express エディションへ
  • Web エディションから Express エディションへ

RDS for SQL Server エディションをダウングレードするには、ネイティブのバックアップと復元オプション、AWS Database Migration Service (AWS DMS) などのツールを使用します。ダウンタイム、作業量、ユースケースの複雑さなどの要因に基づいて、ダウングレードオプションを選択してください。

RDS for SQL Server ネイティブのバックアップと復元オプション

ネイティブのバックアップと復元では、既存のソース RDS for SQL Server インスタンス上のデータベースの完全バックアップが作成されます。

ソースとなる Enterprise インスタンスからターゲットの Standard インスタンスにダウングレードするには、次の手順を実行します。

  1. Standard エディションで RDS for SQL Server DB インスタンスを新規作成します
  2. ソースの Enterprise エディションインスタンスとターゲットの Standard エディションのインスタンスに、ネイティブのバックアップと復元オプションを追加します。
  3. ソースとなる Enterprise インスタンスの各ユーザーデータベースを Amazon Simple Storage Service (Amazon S3) バケットにバックアップします。
  4. ソース Enterprise インスタンスの各データベースでクエリ sys.dm_dm_persisted_sku-features を実行します。
    USE database-name
        GO
        SELECT feature_name FROM sys.dm_db_persisted_sku_features;
        GO
    注: database-name は、お使いのデータベースの名前に置き換えます。
    上記のクエリでは、新しいエディションに現在接続されている機能があるかどうかを確認します。データベースを以前のエディションのターゲットインスタンスに復元すると、新しいエディションに接続されている機能が動作しなくなる場合があります。詳細については、Microsoft のウェブサイトで sys.dm_db_persisted_sku_features (Transact-SQL) について参照してください。
  5. Amazon S3 バケットのバックアップをターゲットの Standard インスタンスに復元します。
  6. ターゲットとなる Standard インスタンスのデータベースに必要なログインとユーザーを作成します。また、適切なセキュリティグループを作成し、適切なパラメータ-オプションのグループをアタッチします。

注: 上記の手順を使用すると、RDS 上の SQL Server の任意のエディションでデータベースをエクスポートおよびインポートできます。

AWS DMS

AWS DMS は、進行中の変更を新しいエディションのインスタンスから以前のエディションのインスタンスに複製します。AWS DMS では、一方向のレプリケーションとテーブルの一括ロードが可能で、サポートされているデータ変更をキャプチャします。

詳細については、次の AWS ドキュメントを参照してください。

その他の SQL Server データをインポートおよびエクスポートするためのツール

次のツールを使用してデータベースをインポートおよびエクスポートすることもできます。

  • SQL Server Import and Export Wizard
  • Generate and Publish Scripts Wizard
  • 一括コピー (bcp ユーティリティ)

注: 上記のツールを使用する前に、以前の SQL Server エディションでインスタンスを起動する必要があります。

ツールを使用してデータを移動する際に、解決を要するデータの一貫性や整合性の問題が複数発生する場合があります。いずれかのツールを使用する前に、テスト環境でプロセスを入念にテストしてください。

SQL Server Import and Export Wizard では、ソースインスタンスのデータベースとオブジェクトのスキーマを作成し、ターゲットインスタンスにコピーします。次にウィザードを使用して、いずれかの RDS for SQL Server DB インスタンスから別のデータストアにテーブル、ビュー、クエリをコピーします。

SQL Server Generate and Publish Scripts Wizard と bcpユーティリティでは、ウィザードを使用してデータベース全体または選択したオブジェクト用のスクリプトを作成します。ターゲットの SQL Server DB インスタンスでスクリプトを実行することで、スクリプト化されたオブジェクトを再作成できます。次に、一括コピー機能を使用して、選択したオブジェクトのデータをターゲット DB インスタンスにエクスポートします。ソースおよびターゲット両方の RDS インスタンスに接続できる Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから bcp ユーティリティを実行します。

RDS インスタンスの名前を変更する

上記のいずれのオプションも、完了すると新しいターゲット RDS インスタンスが作成されます。新しい RDS インスタンスには、既存のソース RDS インスタンスとは別の RDS DNS エンドポイントがあります。

複数のアプリケーションやサービスにわたり新しい RDS エンドポイントを更新すると、コンポーネントで接続文字列の更新が行われず、エラーが発生することがあります。

この問題を防ぐために、ソースとターゲットで RDS インスタンスの名前を変更することがベストプラクティスです。インスタンスの名前を変更すると、ターゲットエディションのインスタンスは元のソースエディションのインスタンスと同じ RDS DNS エンドポイントを使用することになります。したがって、エディションを変更した後に、依存するアプリケーションやサービスの接続文字列を変更する必要はありません。

エディションを変更した後にソースとターゲット RDS インスタンスの名前を変更するには、次の手順を実行します。

注: 次の手順例では、ソースの RDS インスタンスは Enterprise エディションの rds-original であり、ターゲットインスタンスは Standard エディションの rds-new です。

  1. ソースインスタンスである rds-original へのすべての受信トラフィックを停止します。
  2. RDS インスタンスの SQL Server エディションをアップグレードまたはダウングレードします。
    注: アップグレードまたはダウングレードを行った後、ソースインスタンスは rds-original に、ターゲットインスタンスは rds-new になります。
  3. ソースインスタンスを変更し、DB インスタンスの名前を rds-original から rds-original-old などの別の名前に変更します。
  4. rds-original-old インスタンスの状態が Available になった後、ターゲット DB インスタンスの名前を rds-new から、ソースインスタンスの元の名前である rds-original に変更します。
  5. インスタンスの名前が rds-original-oldrds-original に変更されており、状態が Available であることを確認します。
  6. 既存のアプリケーションからのネットワーク接続を維持するために、新しいターゲット RDS インスタンスのセキュリティグループにはソースインスタンスと同じものを使用します。
  7. 必要な SQL Server エディションがインストールされている rds-original インスタンスへの受信トラフィックを許可します。RDS にはソースインスタンスと同じ DNS エンドポイントがあるため、アプリケーションの接続文字列を変更する必要はありません。
  8. アプリケーションテストを実行して、RDS インスタンスのエディションを変更してもエラーが発生しないことを確認します。
  9. エラーが発生しない場合は、rds-original-old インスタンスの最終スナップショットを作成し、インスタンスを削除することでコストを削減できます。

注: 本番環境で変更を実装する前に、テスト環境でアクティビティをテストするのがベストプラクティスです。

関連情報

AWS 規範的ガイダンス - AWS 上の Microsoft SQL Server の Enterprise エディションから Standard エディションへのダウングレードを評価する

AWS公式
AWS公式更新しました 3ヶ月前
コメントはありません

関連するコンテンツ