RDS for SQL Server の SQL Server エンジンのエディションをアップグレードまたはダウングレードするにはどうすればよいですか?

所要時間4分
0

Relational Database Service (Amazon RDS) for SQL Server の SQL Server エンジンのエディションをアップグレードまたはダウングレードしたいと考えています。これを行うにはどうすればよいですか?

簡単な説明

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

SQL Server のエディションをアップグレードするには、スナップショットを作成してから、上位エンジンのエディションを使用して復元します。ダウングレードするには、次のいずれかの方法を使用します。

  • RDS for SQL Server のネイティブバックアップと復元オプションを使用する。
  • AWS Database Migration Service (AWS DMS) を使用する。
  • 他のツールを使用して SQL Server のデータをインポートおよびエクスポートする。

解決方法

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

SQL Server エンジンのエディションをアップグレードするには、RDS スナップショットを作成し、そのスナップショットから復元します。アップグレードの制限については、「Microsoft SQL Server に関する考慮事項」を参照してください。

スナップショットを使用してアップグレードするには、次のステップに従います。

1.    元の RDS for SQL Server インスタンスのスナップショットを作成します。

2.    ステップ 1 で作成したスナップショットを復元して、新しい RDS インスタンスを作成します。復元中に、必要なエディションを上位のエディションに変更します。

3.    元の RDS for SQL Server インスタンスの名前を変更するか、またはsのインスタンスを削除して、DNS エンドポイント名を解放して再利用できるようにします。詳細については、「RDS インスタンスの名前を変更する」のセクションを参照してください。

Standard エディションから Enterprise エディションにアップグレードする手順とステップの詳細については、「Modify an Amazon RDS for SQL Server instance from Standard Edition to Enterprise Edition」(Amazon RDS for SQL Server インスタンスを Standard エディションから Enterprise エディションに変更する) を参照してください。

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

  • Standard エディションから Enterprise エディションへのアップグレード
  • Web エディションから Standard エディションまたは Enterprise エディションへのアップグレード
  • Express エディションから、Web エディション、Standard エディション、または Enterprise エディションへのアップグレード

重要な注意: エディションのアップグレード中にスナップショットを復元すると、新しい RDS for SQL Server インスタンスが作成されます。新しいインスタンスは、スナップショットソースインスタンスとは異なる RDS エンドポイントを備えています。

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

製品としての SQL Server に付随する制限により、RDS for SQL Server インスタンスの上位エディションから下位エディションへのインプレースダウングレードはサポートされていません。ただし、RDS for SQL Server エディションは、後述の回避策オプションに従って、次のいずれかの組み合わせでダウングレードできます。

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

RDS for SQL Server エディションをダウングレードするには、次のいずれかのオプションを使用します。

オプション 1: RDS for SQL Server のネイティブバックアップと復元オプションを使用する

注: このオプションを使用して、RDS インスタンスのデータベースを下位エディションから上位エディションに移行することもできます。

ネイティブバックアップと復元では、既存のソース RDS for SQL Server インスタンス上のデータベースのフルバックアップが作成されます。バックアップを Amazon Simple Storage Service (Amazon S3) に保存し、バックアップファイルを新しいターゲット RDS インスタンスに復元します。

ソース Enterprise インスタンスからターゲット Standard インスタンスにダウングレードするには、次のステップに従います。

1.    Standard エディションの SQL Server で新しい RDS for SQL Server を作成します。これが新しいターゲットインスタンスです。

2.    ソース Enterprise エディションインスタンスとターゲット Standard エディションインスタンスにネイティブバックアップと復元オプションを追加します。

3.    ソース (Enterprise) インスタンスの各ユーザーデータベースを S3 バケットにバックアップします。

4.    ソースインスタンスの各データベースで sys.dm_dm_persisted_sku-features (Transact-SQL) クエリを実行します。このクエリは、現在使用中の機能のうち、上位エディションにバインドされているものがあるかどうかをチェックします。データベースを下位エディションのターゲットインスタンスに復元すると、上位エディションにバインドされた機能が動作しない場合があります。

USE [database-name]
    GO
    SELECT feature_name FROM sys.dm_db_persisted_sku_features;
    GO

5.    S3 バケットからターゲット (Standard) RDS インスタンスにバックアップを復元します。

6.    ターゲット RDS インスタンスデータベースで必要なログインとユーザーを必ず作成してください。また、適切なセキュリティグループを作成し、適切なパラメータオプショングループをアタッチします。これらはソース RDS インスタンスと同じです。

注: 前述のステップを使用して、SQL Server on RDS の任意のエディション間でデータベースをエクスポートおよびインポートできます。

オプション 2: AWS DMS を使用する

注: このオプションを使用して、RDS インスタンスのデータベースを下位エディションから上位エディションに移行することもできます。

AWS DMS を使用してデータベースを移行します。また、AWS DMS は、上位エディションのインスタンス (ソースエンドポイント) から下位エディションのインスタンス (ターゲットエンドポイント) に継続的な変更をレプリケートします。

AWS DMS では、単方向レプリケーション、テーブルの一括ロード、データ変更のキャプチャが可能です (ソースおよびターゲットの RDS for SQL Server インスタンスバージョンでサポートされている場合)。

詳細については、次のトピックを参照してください。

オプション 3: 他のツールを使用して SQL Server のデータをインポートおよびエクスポートする

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

  • SQL Server インポートおよびエクスポートウィザード
  • スクリプトの生成とパブリッシュウィザード
  • 一括コピー (bcp ユーティリティ)

これらのツールを使用する前に、下位の SQL Server エディションのインスタンスを作成してアクティブにしておく必要があります。

これらのツールは、ネイティブのバックアップおよび復元や、AWS DMS よりも多くの労力が必要であることに留意してください。修正しなければならないデータ整合性エラーや完全性エラーが複数発生する可能性があります。これらのエラーは、これらのツールを使用してデータを移動するときに発生します。これらのツールの使用を決定する前に、テスト環境でプロセスを徹底的にテストしてください。

  • SQL Server インポートおよびエクスポートウィザード: ソースインスタンスのデータベースとオブジェクトのスキーマをターゲットインスタンスにコピーして作成します。その後、このウィザードを使用して 1 つまたは複数のテーブル、ビュー、またはクエリを 1 つの RDS for SQL Server DB インスタンスから別のデータストアにコピーします。詳細については、「SQL Server インポートおよびエクスポートウィザード」を参照してください。
  • SQL Server のスクリプトの生成とパブリッシュウィザードおよび bcp ユーティリティ: SQL Server のスクリプトの生成および発行ウィザードを使用して、データベース全体または選択したオブジェクトのスクリプトを作成します。これらのスクリプトをターゲット SQL Server DB インスタンスで実行して、スクリプト化されたオブジェクトを再作成できます。その後、bcp ユーティリティを使用して、選択したオブジェクトのデータをターゲット DB インスタンスに一括エクスポートします。bcp ユーティリティは、ソース RDS インスタンスとターゲット RDS インスタンスの両方に接続されている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから実行します。詳細については、「SQL Server のスクリプトの生成とパブリッシュウィザードおよび bcp ユーティリティ」を参照してください。

注: このセクションで言及するすべてのオプションを使用して、RDS for SQL Server インスタンスの下位エディションから上位エディションにデータベースを移行することもできます。ただし、「SQL Server のエディションをアップグレードする」のセクションで説明されているアプローチの方が簡単です。いずれのオプションを使用するかは、ダウンタイム、労力、複雑さなどの要因によって異なります。

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

RDS for SQL Server エディションのアップグレードまたはダウングレードに関して説明されているオプションを使用すると、常に新しいターゲット RDS インスタンスが作成されます。新しい RDS インスタンスには、既存のソース RDS インスタンスとは異なる RDS DNS エンドポイントがあります。

複数のアプリケーションや他のサービスで新しい RDS エンドポイントを更新すると、これらのコンポーネントの 1 つ以上で接続文字列が更新されない場合があります。これが発生すると、RDS for SQL Server インスタンスのエディションの変更後に問題が発生する可能性があります。

これを回避するには、ソース RDS インスタンスとターゲット RDS インスタンスの名前を変更することを検討してください。名前を変更することで、ターゲットエディションのインスタンスが元のソースエディションのインスタンスと同じ RDS DNS エンドポイントを持つようにすることができます。

これにより、RDS for SQL Server インスタンスのエディションの変更後に、依存するアプリケーションまたはサービスの接続文字列を変更する必要がなくなります。

エディションの変更後にソース RDS インスタンスとターゲット RDS インスタンスの名前を変更するには、次のステップに従います。

この例では、ソース RDS インスタンスが Enterprise エディションの rds-original であることを前提としています。ターゲットインスタンスは Standard エディションの rds-new です。

1.    ソースインスタンス rds-original へのすべての着信トラフィックを停止します (アプリケーションを停止します)。

2.    RDS インスタンスの SQL Server のエディションをアップグレードまたはダウングレードするには、前述のステップまたはオプションのいずれかに従います。エディションが正常に変更されると、2 つのインスタンスが作成されます。ソースインスタンスは 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 インスタンスにアタッチされている関連する RDS セキュリティグループが、ソースインスタンスと同じであるようにしてください。これにより、既存のアプリケーションからのネットワーク接続に変更がないようにできます。

7.    必要な SQL Server のエディションのインスタンス rds-original への着信トラフィックを今すぐ許可します (アプリケーションを開始します)。RDS にはソースインスタンスと同じ DNS エンドポイントがあるため、アプリケーションの接続文字列を変更する必要はありません。

8.    アプリケーションテストを実行して、RDS インスタンスエディションの変更後に影響がないことを確認します。

9.    問題がなければ、インスタンス rds-original-old の最終スナップショットを作成してから、このインスタンスを削除してコストを節約します。

注: 本番稼働環境で実装する前に、まず下位の環境でアクティビティをテストするのがベストプラクティスです。これにより、変更にかかる推定時間がわかります。また、アクティビティ中に発生した問題を特定して、本番稼働環境での実装を円滑にすることができます。


関連情報

AWS Prescriptive Guidance - Evaluating downgrading Microsoft SQL Server from Enterprise edition to Standard edition on AWS (AWS 規範的ガイダンス – AWS における Enterprise エディションから Standard エディションへの Microsoft SQL Server のダウングレードを評価する)

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ