Amazon Web Services ブログ

サポートが終了する VMware Clous on AWS の SQL Server インスタンスを簡単にアップグレードする

Microsoft SQL Server 2008 と 2008 R2 のインスタンスをまだデプロイしているなら、今こそアップグレードするべきです。これらの Microsoft のサポート終了日 (EoS) は 2019 年 7 月 9 日。もうすぐです。つまり、それ以降はセキュリティの問題やコンプライアンス上の問題があるため、これ以上セキュリティの更新は行われません。実行するなら今です!

今日は、SQL Server インスタンスのアップグレードの自動化を支援する新しいオープンソースのツールを GitHub で公開できることを大変うれしく思っています。この自動化により、アップグレードの実行が迅速になり、重要なデータを格納しているアプリケーションに対するセキュリティ体制を維持しつつ、EoS の前にこのプロジェクトを完了できるようになります。

開始方法

新しいツールは Upgrade-SqlServerStandaloneDatabaseEngineInstance.ps1 という名前で、GitHub で入手できます。これは vSphere インフラストラクチャにアクセスできない可能性があるデータベース管理者 (DBA) などによってローカルで開始されるか、仮想システム管理者などによってリモートで開始されることがあります。アップグレードは Microsoft Windows PowerShell と PowerShell Core の両方でテストが行われました。したがって、macOS、Linux、Windows からリモートアップグレードの起動が可能です。

この記事では、スタンドアロンの SQL Server 2008 R2 SP3 インスタンスを SQL Server 2016 にリモートでバッチアップグレードします。これを AWS の VMware Cloud で実行している 2 台の Windows Server 2012 R2 仮想マシン (VM) 上で行います。

以下は、リモートアップグレードを立ち上げる簡単なプレビューです。

前提条件

アップグレード要件については、オンラインドキュメントに詳述されています。次のスクリーンショットに示すように、オンラインドキュメントはツールに組み込まれているものと同じヘルプコンテンツから構築されています。

シナリオ

この例では、2 つの Windows Server 2012 R2 仮想マシン (VM)、 MSSQL1 と MSSQL2 があります。これらがスタンドアロンの SQL Server 2008 R2 SP3 データベースエンジンインスタンスを実行しています。どちらのインスタンスも MSSQL2008R2 という名前です。これらを順次、SQL Server 2016 にアップグレードします。このプロセスはどちらの仮想マシン (VM) へのネットワーク接続も許可されていない要塞ホストから行われます。要塞ホストは vCenter Server と ESXi ホストに許可されているポート 443 で TCP 接続を確立しています。

以下のスクリーンショットはアップグレードする 2 つの仮想マシン (VM) の vSphere Web Client のビューを示しています。

SQL Server Management Studio (SSMS) を読み込み、データベースエンジンインスタンスに接続してから、検証テストを実行して両方が正常な状態にあることを確認します。以下のスクリーンショットに示すように、MSSQL1 のインスタンスは予想どおりバージョン 10.50.6220、または SQL Server 2008 R2 SP3 を実行しています。

ターゲットの仮想マシン (VM) との間で、追加の接続は必要ありません。これは以下の図に示すように、VMware Guest Operations API を使用して VMware Tools から各仮想マシン (VM) に指示を送信するためです。詳細については、VMware のドキュメントの「PowerCLI および Guest Operations API の使用」をご参照ください。

メンテナンスウィンドウの準備

すべての前提条件を満たしたら、要塞ホストまたは vCenter ホストと ESXi ホストに接続できる場所にスクリプトをダウンロードします。その後、バックアップを再確認して準備を開始します。

SQL Server データベースエンジンインスタンスのリモートインプレースバージョンでのアップグレードを実行準備するには、次の手順を実行します。

まず、VMware.PowerCLI PowerShell モジュールをインポートし、以下に示すように vCenter Server とのセッションを確立します。このモジュールについて詳しくは、PowerCLI ウェブサイトの「The VMware.PowerCLI module」をご参照ください。

現在、AWS Software Defined Data Center (SDDC) の VMware クラウドの ESXi ホストは、デフォルトで API インターフェイスに自己署名証明書を使用しています。PowerCLI がデフォルトでは信頼できない証明書の使用を許可することはありません。これに対応するには、セッションの証明書の警告を無視するように PowerCLI に一時的に許可します。これを実行するには、次のように Set-PowerCLIConfiguration コマンドレットを使用します。

次に、セットアップファイルのファイルハッシュを取得します。これを使用してアップグレードを実行する前に、ターゲット仮想マシン (VM) のインストールメディアが予想と一致することを確認します。ただし、特定のファイルプロパティも SQL Server のインストールメディアであることを確認するために評価されます。古いバージョンの Windows では、certutil.exe が生成したスペース区切りのハッシュ形式を使用します。Get-FileHash コマンドレットが生成した区切りなし形式も使用できます。

以下のスクリーンショットは SQL Server セットアップファイルのファイルハッシュの生成を示しています。

次に、SQL Server のインストールメディアの ISO ファイルを、各仮想マシン (VM) の CD-ROM ドライブにマウントします。開始するには、共通の-WhatIf リスク管理パラメーターを使用してドライランを実行し、コマンドの効果を記述します。以下のスクリーンショットはこのプロセスを示しています。

ドライランの結果に満足であれば、Set-CDDrive PowerCLI コマンドレットを使用してマウントプロセスを実行します。

ここで、予想される仮想マシン (VM) に適切なインストールメディアが読み込まれていることを確認するために、別のドライランテストを実行します。このテストで、SQL Server のアップグレードを実行する準備が整ったことも確認できます。これを行うには、前のステップと同様に共通の -WhatIf リスク管理パラメーターを追加します。以下のスクリーンショットはこのプロセスを示しています。

SQL Server のリモートアップグレード

SQL Server のバージョンアップのための準備がすべて完了し、2 度のドライランテストを実施しました。メンテナンスウィンドウが開いているので、インスタンスをアップグレードしましょう。

アップグレードによって詳細な出力が大量に生成されるため、出力を Tee-Object コマンドレットにパイプ処理することをお勧めします。このコマンドレットは画面に出力を表示します。後で確認したい場合はファイルに保存します。このシナリオでのパイプ処理の詳細については、Microsoft PowerShell のドキュメントの「 About PowerShell pipelines」をご参照ください。

以下のスクリーンショットでは、ターゲットの SQL Server インスタンスのリモートでのインプレースアップグレードを実行し、その出力をログファイルに保存する方法を示しています。

プロダクトキーを入力し忘れた場合は、以下のスクリーンショットに示すように、追加の確認プロンプトが表示されます。このプロンプトは誤ってインスタンスを評価モードにアップグレードしてしまうことを防いでくれます。デモなど、これがユースケースに適している場合は、次に進んでください。

結果

数分後、スクリプトが次のように完了します。今回の場合、どちらのアップグレードでもエラーは報告されませんでした。それでも、複雑な問題が発生した場合に備えて、バックアップの作成と検証に時間を費やしてよかったと思います。

次に、SQL Server Management Studio (SSMS) を読み込み、データベースエンジンインスタンスに接続してから、検証テストを実行して両方が正常な状態にあることを確認します。以下のスクリーンショットに示すように、MSSQL1 のインスタンスは予想どおりバージョン 13.0.1601.5、または SQL Server 2016 を実行しています。互換性レベルは変更されていません。データベースエンジンインスタンスよりも古いバージョンの SSMS から接続した場合、データベースの互換性レベルが空白で表示されることがあります。

この一連のテストに合格した場合は、アプリケーションを再接続して最終の検証テストを実行できるはずです。

まとめ

このブログ記事では、2 つのスタンドアロン SQL Server 2008 R2 SP3 インスタンスを、1 つのメンテナンスウィンドウで 2 つの別々の仮想マシン (VM) にデプロイされた SQL Server 2016 にアップグレードするデモを行い、アップグレードはうまくいきました。今回のアップグレードで、これらの SQL Server インスタンスのいずれかがサポートから外れることをもう心配する必要はありません。

このプロセスの詳細については、こちらの AWS オンラインセミナーに参加してください。

次のステップ

  • GitHub でホストされている弊社が作成したこちらのツールを使用すれば、SQL Server 2008 および SQL Server 2008 R2 データベースエンジンインスタンスのアップグレードが EoS の前に迅速に完了できます。
  • プル要求に参加して、この新しいオープンソースプロジェクトの改善にぜひご協力ください。

その他のリソース

詳細な背景については、Microsoft のドキュメントより以下のトピックをご参照ください。


著者について

Troy Lindsay は AWS のソリューションアーキテクトで、VMware とのエンジニアリングパートナーシップを推進しています。テキサスっ子で、親友と結婚して 13 年、3 頭の馬をセミプロで世話をしています。