SQL Server 2019でAlways On可用性の構築をする

お世話になります。

今回はSQL Server Always On可用性クラスタの構築を行ってみます。

基本的にこちらのサイトそのままの手順を、SQL Server 2019にて検証します。
https://qiita.com/zaburo/items/5ca86becda6023b90f7e

・Active Cirectory
・Windows Serverフェイルオーバークラスタ仮想マシン（2台）

は構築済みの状態から始めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/0a327ce7-621b-6bbb-8636-57df887e1d94.png)

SQL Server 2019を2台のノードにインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/e20d6b73-6594-de24-3567-04e3697036ea.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/55ffe5b0-8298-c9f8-c8c8-e06ea811e1d2.png)

インストール後、メモリの使用率が跳ね上がります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/e89fd455-74cd-b457-3798-bfeeeecee94a.png)

SQLサービス用のユーザーをADで作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/d86c5c46-3a09-b06c-3df3-14a725f98f90.png)

SQLサービスにユーザーをバインドします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/81806aa0-e7e9-9921-6fa6-085028cf5f54.png)

TCP/IPを有効にし、ファイアウォールを無効にしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/6e75237b-b4f5-7277-4b10-3f14791b6270.png)

Always On用のフォルダを2つ作り、SQLサービスユーザに権限をつけます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/52a98189-f634-488f-6a6b-9eebf09ed285.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5077fb7a-57cf-eff2-cad4-7de3b93fc5ab.png)

SQL Server Management Studioを両ノードにインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/f82c4509-4a4f-59eb-74d0-ad2d3c6e66c1.png)

SSMSにてデータベースを作成します。パスは先ほど作成したフォルダを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/6acf3562-1ecb-c489-b9b5-9b45c5b28687.png)

テーブルを作成し、テストの値を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/55a5cbfd-6eea-0a7a-b5e1-cf1502b7f483.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5e852a7e-67ad-385d-18ed-6d66f8bcc4a0.png)

DBのバックアップをとっておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/179980da-4812-776a-9842-5c05dc0e7269.png)

Always Onの有効化を両サーバで行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/df3c071f-5d4c-1c66-5e4a-b348c5cfa078.png)

ウィザードでAlways On可用性グループを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/7c2554af-8c58-f340-446e-7deaac0e84ec.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/b0739d6e-2fdd-84b8-a71a-9da8b21eb5b9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/b5abf737-fb69-b375-090b-574aca87d7b6.png)

自動フェイルオーバーにチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/3a8cf827-d2cd-c65d-8735-2010f44d767a.png)

DBの完全バックアップフォルダを先ほど作成したフォルダに指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/42239aa4-90aa-4bef-1824-01dda53d85ef.png)

作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/09d95633-b198-e411-e5d7-d19de71156d9.png)

AO可用性専用のリッスンポートを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/e85e8d55-0772-5e77-5441-da7dad9aff5e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/39eaa40d-6c4e-6436-6ef0-d544d4e75b67.png)

testdbがTEST_AGリッスンポートにバインドされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/1df140dd-d994-6e8e-6efa-a9dd0934f3e1.png)

両サーバーで包含データベースを有効にし、部分バックアップを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/79f00b12-16ef-ad9e-8509-4dc68db46171.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/38175e1f-9669-4d5a-186b-78fdc405256d.png)

新規SQLユーザーとしてtestuserを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/92974d41-2574-6a70-30c1-f2c1a5043b58.png)

testuserにtestdbの所有者権限を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/58b95c20-465d-be47-0753-2922f8210776.png)

SMSSでWindows認証からSQL Server認証に切り替えます。これをしないとPowershellでのSQL認証でエラーとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/c081be8e-0f14-2a52-a1ea-155bb587e744.png)

Powershellで接続を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/84b7262b-3aff-c4f6-9d0d-9a29bcca7406.png)

CLUSTER1がプライマリになっていて、testdbに値が2つある状態を確認します。（この後もう一つ追加し3つの値となっています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/fd088733-cb13-b34f-8efd-492a05fdb3f2.png)

CLUSTER1をシャットダウンします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/79bb23f7-257b-3db0-22c7-0334bad96199.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/424ed26c-7f9c-25d3-d486-9ef63d7b0216.png)

SSMSを再起動すると、CLUSTER2がプライマリに切り替わります。この状態でテーブルに値を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/51569b64-e97c-a181-df08-28b8d3f6f60c.png)

CLUSTER1を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/5baa2d84-de00-3dcf-e4c1-b73f2f5d6f0c.png)

両サーバーがしばらくオンになった状態で、今度はCLUSTER2をシャットダウンします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/73a38ee5-c74d-a991-f696-1597ea89b543.png)

CLUSTER1で表示すると、さきほどCLUSTER2の単独運用時に追加した値を確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/e5e487a9-e62e-5fdc-065b-c2c76dfd86fa.png)

Always Onを速足で構築してみましたが、WSFCの基盤上にSQL専用のリッスンポートやサービスユーザを追加することで、より可用性の高いDBサーバーを作ることが出来そうです。