SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2008 R2 にローリング アップグレードでパッチ適用

leave a comment

TechNet フォーラムを見ていたところ SQL Server 2008 R2 のローリングア ップグレードを使用したパッチ適用についての投稿がありました。

そういえば、SQL Server 2008 以降のクラスタ環境ではローリング アップグレードのシナリオが追加されていたなということを思い出し、良い機会だったので試してみました。
# Tech・Ed 2009 のセッションでの話があったということをブログに書いていたのですが試していませんでした…。

技術情報としては以下の情報が参考になります。
# フォーラムに記載されていた技術情報になります。2008 R2 でも同じ手順になります。
SQL Server 2008 フェールオーバー クラスタにローリング更新プログラムおよび Service Pack を適用する方法

今回は使用しないのですが以下のような技術情報もあります。
FIX: Error message when you perform a rolling upgrade in a SQL Server 2008 cluster : "18401, Login failed for user SQLTESTAgentService. Reason: Server is in script upgrade mode. Only administrator can connect at this time.[SQLState 42000]"
SQL Server フェールオーバー クラスター インスタンスをアップグレードする方法 (セットアップ)

■ローリング アップグレードの手順概要


適用手順の概要は以下のようになります。
image

資格の中央に書いている作業は、どちらのノードでもできる操作になります。
# フェールオーバークラスターマネージャーで設定を変更するだけですので。

ネットワーク名リソースの所有者の変更はパッチを適用しているノードにフェールーバーしないようにするための設定となるため必須ではありません。

緑の背景色になっている箇所がサービスが停止するタイミングとなります。

 

■Cumulative Update の適用


投稿を書いている時点での SQL Server 2008 R2 の最新の修正プログラムは Cumulative Update 5 となります。
Cumulative Update package 5 for SQL Server 2008 R2

今回は、SQL Server 2008 R2 の RTM (10.50.1600) に CU5 を適用してみたいと思います。
# すべての作業はローカルの Administrators グループのメンバーであるドメインの Users グループのユーザーで実施しています。

パッチ適用前の初期状態がこちらになります。
image

[2008R2-SQLR2-01] [2008R2-SQLR2-02] という 2 台構成のクラスタになっています。
現在は、2008 R2-SQLR2-01がすべてのリソースを持っている状態です。

この状態で 2008R2-SQLR2-01 (パッシブノード) に CU5 の適用を行います。

  1. フェールオーバー クラスター マネージャーを使用してSQL Server のネットワークリソース名の [実行可能な所有者] からパッシブノードを外します。
    image
  2. CU5 のインストーラーを実行します。
    image
  3. UAC が働いた場合は、[はい] をクリックします。
    image
  4. [次へ] をクリックします。
    image
  5. [ライセンス条項に同意する] を有効にして、[次へ] をクリックします。
    image
  6. コンポーネントがすべて選択された状態で、[次へ] をクリックします。
    image
  7. 使用中のファイルの確認が終了したら、[次へ] をクリックします。
    # 使用中のファイルがあった場合は、パッチ適用後に再起動をする必要があります。
    image
  8. [更新] をクリックしてパッチを適用します。
    image
    image

この状態では、2008R2-SQLR2-01 (アクティブノード) で SQL Server のリソースを実行していますので、SQL Server のサービスは継続して利用することが可能です。
パッチの適用が完了したら [閉じる] をクリックします。
image

作業が終了するとパッシブノードでは、パッチが適用された状態となります。

SQL Server 2008 R2 のクラスタの構成は以下のようになっています。
image

共有ディスクにデータベースを格納し、SQL Server に必要となるプログラムと Resource データベースに関しては各ノードのローカルディスクに格納されています。
# SQL Server 2005 では Resource データベースも共有ディスクに格納されていましたが 2008 以降では各ノードのローカルのファイルとして格納されます。

現在は、パッシブノードのみパッチを適用しているため、共有ディスク上のシステムデータベースは最新のパッチバージョンに合わせた更新はされていない状態です。
# SQL Server のリソースはアクティブノードが占有していますので、パッシブノードからは操作ができません。

現在の SQL Server のバージョンを確認してみます。

現在はアクティブノードが SQL Server のリソースを保有しているので、バージョンは RTM の状態となっています。
image
それでは、SQL Server のネットワークリソース名の所有者を変更して、アクティブノードにもパッチを適用したいと思います。

パッシブノードを実行可能な所有者に戻し、
image

SQL Server のリソースの含まれるグループを移動します。
image

移動が終わったらアクティブノード (だったノード) を所有者から外します。
image
現在のリソースの配置状況は以下のようになります。
image

既にパッチを適用しているパッシブノードに SQL Server のリソースを移動したタイミングでシステムデータベースのアップグレードが行われます。
SQL Server のログからアップグレードされていることを確認することができます。

2010-12-28 07:31:09.79 Server      Microsoft SQL Server 2008 R2 (RTM) – 10.50.1753.0 (X64)
2010-12-28 07:31:16.39 spid7s      データベース ‘master’ で、スクリプト ‘msdb_upgrade_discovery.sql’ がレベル 171050560 からレベル 171050713 にアップグレードされています。
2010-12-28 07:31:16.54 spid7s      msdb_upgrade_discovery starting
2010-12-28 07:31:17.93 spid7s      MSDB format is: SQL Server 2008
2010-12-28 07:31:18.06 spid7s      User ‘sa’ is changing database script level entry 4 to a value of 2.
2010-12-28 07:31:18.07 spid7s      User ‘sa’ is changing database script level entry 5 to a value of 2.
2010-12-28 07:31:18.07 ログオン        エラー: 18401、重大度: 14、状態: 1。
2010-12-28 07:31:18.07 ログオン        Login failed for user ‘NT AUTHORITYSYSTEM’. Reason: Server is in script upgrade mode. Only administrator can connect at this time. [クライアント: 10.200.0.2]
2010-12-28 07:31:18.07 spid7s      User ‘sa’ is changing database script level entry 6 to a value of 2.
2010-12-28 07:31:18.07 spid7s      User ‘sa’ is changing database script level entry 6 to a value of 0.
2010-12-28 07:31:18.07 spid7s      Running SQL Server 2005 SP2 to SQL Server 2008 upgrade script
2010-12-28 07:31:19.56 spid7s      —————————————-
2010-12-28 07:31:19.56 spid7s      Starting execution of PREINSTMSDB100.SQL
2010-12-28 07:31:28.22 spid7s      —————————————-
2010-12-28 07:31:28.22 spid7s      Execution of PREINSTMSDB100.SQL complete
2010-12-28 07:31:28.22 spid7s      ———————————-
2010-12-28 07:31:28.22 spid7s      Starting execution of INSTMSDB.SQL
2010-12-28 07:31:46.03 spid7s      ————————————
2010-12-28 07:31:46.03 spid7s      Execution of InstDac.SQL complete
2010-12-28 07:31:46.03 spid7s      ——————————-
—–
2010-12-28 07:31:56.59 spid7s      Execution of INSTMSDB.SQL complete
2010-12-28 07:31:58.97 spid7s      ————————————
2010-12-28 07:31:58.97 spid7s      Moving 2005 SSIS Data to 2008 tables
2010-12-28 07:31:58.97 spid7s      ————————————
2010-12-28 07:32:00.65 spid7s      Execution of POSTINSTMSDB100.SQL complete
2010-12-28 07:32:00.65 spid7s      —————————————–
2010-12-28 07:32:02.21 spid7s      Starting execution of UPGRADE_UCP_CMDW_DISCOVERY.SQL
2010-12-28 07:32:02.21 spid7s      ——————————————————
2010-12-28 07:32:02.24 spid7s      execution of UPGRADE_UCP_CMDW_DISCOVERY.SQL completed
2010-12-28 07:32:02.24 spid7s      ——————————————————

バージョン情報を確認すると CU5 (10.50.1753)  となっています。
image

アクティブノードのパッチ適用はパッシブノードと同じ手順になります。
# 画面キャプチャだけ載せておきたいと思います。

image
image
image
image
image
image
image
image
image
image

今回はインストール時の使用中のファイルの確認で使用中のファイルが検出されていますのでインストール後に再起動をしています。

再起動が終了したら所有者を戻し、アクティブノードに SQL Server のリソースを移動させます。
image
image

アクティブノードで SQL Server のリソースがオンラインになり、バージョン情報が更新されていればパッチの適用は完了です。
image
image

パッシブノードで順次適用できるので、ローリング アップグレードを使用するとダウンタイムを短くしてパッチの適用ができそうですね。
# リソースの移動があるのでダウンタイムゼロとはいかないですが。

Share

Written by Masayuki.Ozawa

12月 28th, 2010 at 12:23 am

Leave a Reply