ミラーリングしているSQL Serverをアップグレードしてみた

あっ、どーも

この投稿はアイスタイル Advent Calender 2018 の6日目はアイスタイルのDBA斉藤が担当します。

2019年7月でSQL Server 2008はサポート期限を迎えるのでアップグレードしなきゃいけないですよね。
アイスタイルにもSQL Server 2008が現役バリバリで動いているのでサポート期限までにアップグレードしたい!
でもサービス止められないとか課題もあります。
そこで今回はミラーリングしているSQL Serverをローリングアップグレードしてみました。

やりたいこと

ミラーリングを解除せずにSQL Server 2012にアップグレードしたい。
本当はSQL Server 2016にアップグレードしたかったけど持ってるメディアの問題で今回はSQL Server 2012にしました。

アップグレード前の構成
OS:Windows Server 2012R2
DB:SQL Server 2008R2 SP4

SQL Serverをアップグレードするメリット

SQL Server 2012の場合でも、SQL Server 2008に比べてほとんどの領域で機能の強化と追加が行われています。追加機能を必要に応じて、使用することでパフォーマンスが向上するとのこと。

ローリングアップグレード手順

データベースミラーリングを設定している場合は、セカンダリ(ミラー)側から先にアップグレードすることで、ミラーリングを解除せずアップグレードをすることができます。
セカンダリをアップグレード中でも、プライマリ(プリンシパル)側は、引き続き利用することができます。

まずは、SQL Server 2012 のインストール メディアから 「setup.exe」を実行します。[SQL Server インストール センター]ページが表示されるので[インストール]をクリックして、「以前のバージョンの SQL Serverからのアップグレード」をクリックします。

[製品の更新プログラム]ページは、SQL Server に関する更新プログラムがある場合に更新プログラムが表示されます。

[セットアップ ファイルのインストール]ページでは、セットアップに必要なファイルがインストールされます。

[プロダクト キー]ページが表示されたら、プロダクト キーを入力して、 [次へ]ボタンをクリックします。

次の [ライセンス条項]ページでは、ライセンス条項の内容を確認した上で、 [ライセンス条項に同意します。]をチェックして、[次へ]ボタンをクリックします。

[インスタンスの選択]ページでは、[ アップグレードするインスタンス]でSQL Server 2012へアップグレードする既存のSQL Serverのインスタンスを選択します。
既定のインスタンスをアップグレードする場合は、[ アップグレードするインスタンス]で「MSSQLSERVER」を選択して、[次へ]ボタンをクリックします。

[機能の選択]ページでは、選択したインスタンスにインストールされている機能に、自動的にチェックが付きます(アップグレード対象になります)。

[インスタンスの構成]ページでは、[インスタンス ID]や、インストール先となるフォルダー(ディレクトリ)が提示されます。
システム データベースなどは、アップグレード前と同じフォルダーを利用しますが、SQL Server2012 のインスタンスに関する情報は、[SQL Server ディレクトリ]に表示されたフォルダーにインストールされて、各種ツールなど、すべてのインスタンスに共通のファイルが 「110」フォルダー配下に格納されます。

[必要なディスクの領域]ページでは、インストール先のディスクの状態が表示されます。

[エラーレポート]ページでは、エラーを送信するかを決定してください。

[アップグレード ルール]ページでは、アップグレード要件を満たしているかどうかが再度チェックされますが、問題がない場合は、自動的に次のページへ進みます。

次の [アップグレードの準備完了]ページでは、 [アップグレード]ボタンをクリックすることで、アップグレードが開始されます。

アップグレード中は、次のように進行状況が表示されます。

アップグレードが完了すると、次のように[完了]ページが表示されます。

セカンダリをSQL Server 2012へアップグレードした後は、ALTER DATABASE ステートメントを実行してセカンダリをプライマリへフェールオーバーします。

USE master
ALTER DATABASE データベース名
SET PARTNER FAILOVER

このクエリは、現在のプライマリ (アップグレードする前のサーバー)側から実行します。これを実行すると、プライマリがミラーへ変わって、データベースが中断状態になりますが、代わりに SQL Server 2012へのアップグレードを行ったセカンダリ(新しいプライマリ)側のデータベースが利用できる状態になります。

フェイルオーバーが完了したら、次は旧プライマリ(現在のセカンダリ)をSQL Server 2012へアッ
プグレードします。
アップグレードが完了した後は、データベースの状態が「中断」になったままなので、これを「RESUME」(再開)します。RESUME を行うには、次のように 「SET PARTNER RESUME」を実行します。

USE master
ALTER DATABASE データベース名
SET PARTNER RESUME

以上で、データベースミラーリングを以前のバージョンで利用していたのと同じように利用できるようになります。役割を元に戻したい場合にはフェールオーバーを実行します。

まとめ

ローリングアップグレードを利用することで、データベースミラーリングを解除せずにアップグレードをすることができ、ダウンタイムを非常に小さくすることができした。
実際の作業となると切り戻しができないので手順を工夫して切り戻しの方法を考える必要があると感じました。
手順はほとんど変わらなそうなので、SQL Server 2016のアップグレードもやりたいです。

まだまだ修行中のデータベースエンジニア!毎日楽しくデータベースと格闘中! 元アパレル、趣味も音楽とファッション、DJできますオファーください!w