sql >> データベース >  >> RDS >> Sqlserver

SQLServerでのAlwaysOn可用性グループの構成

    はじめに

    このドキュメントでは、MSSQLServerでHAおよびDRのAlwaysOn可用性グループを構成するために必要な手順と追加情報について説明します。 AlwaysOn可用性グループはSQLServer2012で導入されたHA-DRソリューションであり、トランザクションログ配布とデータベースミラーリングの組み合わせのように設計されています。

    AlwaysOn AGは、SQLインスタンスをホストし、構成に参加するノードがWindowsフェールオーバークラスターの一部であっても、データベースレベルでHAを実装します。各ノードを可用性レプリカと呼びます。

    通常の構成では、プライマリレプリカと1つ以上の読み取り専用セカンダリレプリカがあります。 可用性グループで構成されたデータベースのグループ 一緒に別のレプリカにフェイルオーバーできます。

    前提条件

    1.1前提条件

    1.1.1最新のパッチが適用された2つ以上のWindows2012以降のサーバー(Enterprise Edition)
    1.1.2SQLServerインスタンスのサービスアカウント
    1.1.3クラスターに参加しているサーバー以外の信頼できるサーバー上のファイル共有
    1.1.4SQL2012以降のインストールメディアとサービスパック
    1.1.5参加サーバーのパブリックIPアドレス以外の2つの追加IPアドレス
    1.1.6 DBA、Windows AD管理者、ネットワーク管理者

    概要

    1.2構成手順には、次の段階が含まれます。

    1.2.1すべてのノードでクラスタリングを有効にする
    1.2.2クラスタリング用のノードの検証
    1.2.3クラスターの作成
    1.2.4クォーラムの構成
    1.2.5すべてのノードにSQLServerをインストールする
    1.2.6すべてのインスタンスでAlwaysOn可用性グループを有効にする
    1.2.7可用性グループを作成する
    1.2.8AGリスナーを追加する

    手順

    1.3すべてのノードでクラスタリングを有効にする

    1.3.1サーバーマネージャーを開く Windows上

    1.3.2起動役割と機能の追加 ウィザード

    WindowsフェールオーバークラスタリングはWindowsの機能です。ウィザードから有効にできます。

    1.3.3機能ステージに到達するまでデフォルトを受け入れます。

    この段階で、構成するサーバーを選択する必要があります。このシナリオでは、ローカルサーバーを処理しています(図4を参照)。

    セキュリティ上の理由からサーバー名を非表示にしましたが、下部のペインに表示されます(図4)。

    現時点では、役割を構成する予定はありません。そこで、[次へ]をクリックして、[機能]に到達するまで進みます(図6)。

    フェールオーバークラスタリングのチェックボックスを有効にします。次に、[インストール]をクリックします。

    1.3.4機能ステージでフェールオーバークラスタリングを選択

    1.3.5完了したらウィザードを閉じます

    1.4クラスタリング用のサーバーの検証

    前のセクションの手順に従って、クラスタリングを有効にしました。フェールオーバークラスターに参加する必要があるすべてのサーバーに対して、これらの手順を繰り返す必要があります。

    Windowsは現在、フェールオーバークラスターで最大64ノードをサポートしています。 Windows 2019は、クラスターセットと呼ばれる機能を提供することにより、この多数の有用性を強化します。クラスタの潜在的なメンバーサーバーを検証するということは、それらがすべてクラスタに参加するように適切に構成されているかどうかを確認することを意味します。

    1.4.1フェールオーバークラスターマネージャーを開きます

    1.4.2構成の検証を開きます 右側のウィザード。

    1.4.3サーバーの選択 ステージ、すべてを指定します クラスター向けのサーバー。ここでも、選択したサーバーを非表示にしました。

    この画面から参加しているすべてのサーバーを追加できます。

    1.4.4デフォルトの「すべてのテストを実行」オプションを受け入れます。

    1.4.5ディスク関連の警告を無視します。 AlwaysOn構成に共有ディスクは必要ありません。

    1.4.6ウィザードを完了する

    この時点で、検証レポートを確認できます。問題がある場合は、先に進む前に修正できます。一部の警告は無視できますが、必ずその意味を確認してください。

    1.5クラスターの作成

    1.5.1フェールオーバークラスターマネージャーで、クラスターの作成を起動します ウィザード。

    1.5.2クラスタリング用のすべてのサーバーを追加します。

    この画面は、構成の検証のようなものです 画面 。必要なすべてのノードを一度に追加することもできます。

    サーバーを追加するには、[参照]をクリックします ボタン。

    1.5.3目的のクラスター名と関連するIPアドレスを指定します

    この名前は、 Computer Name Objectを作成するために機能します ドメイン上。したがって、インストールを実行するアカウントのコンピューターオブジェクトを作成するためのアクセス許可が必要です。また、マルチサイトクラスターを作成する場合を除き、クラスターのすべてのメンバーに使用されるすべてのIPアドレスは同じサブネット内にある必要があることに注意してください。

    AlwaysOn可用性グループのフェールオーバークラスターを作成する場合、クラスターにディスクを追加する必要はありません。したがって、このオプションはオフのままにしておきます(図19を参照)。

    1.5.4クラスターの作成を完了する ウィザード

    1.6クォーラムの構成

    クォーラムは、使用可能なクラスターを示すためにオンラインである必要があるクラスターメンバーの数を指定します。 Microsoftは、さまざまなクォーラムオプションを許可しています。それらのいくつかは、ディスクまたはファイル共有をクラスターメンバーにします。

    通常、メンバーの数は奇数である必要があります。ただし、一部の構成では、偶数を使用して1つのノードから議決権を削除できます。証人は、奇数の投票者を構成するために使用できる非サーバーオブジェクトです。 AlwaysOn構成には共有ディスクがないため、AlwaysOn構成ではファイル共有監視が優先されます。

    1.6.1クラスターに参加していない信頼できるサーバー上に共有を作成します。次に、コンピューター名オブジェクトに完全なアクセス許可を付与します クラスタと同じ名前を付けます(ステップ4.3.3)。

    1.6.2作成したクラスターを右クリックし、その他のアクション>クラスタークォーラム設定の構成を選択します。

    1.6.3クォーラムウィットネスを設定するオプションを選択します

    1.6.4ファイル共有監視を構成するオプションを選択します

    1.6.5ファイル共有を選択します(4.4.1を参照):

    1.6.6ウィットネス構成を完了する

    1.7SQLServerのインストール

    クラスタに参加しているすべてのサーバーにSQLServerの単一インスタンスをインストールします。クラスタを作成する前に以前のSQLServerの構成が行われた場合でも、この構成を正常に完了することができます。

    SQLServerインスタンスはではないことに注意してください AlwaysOn構成でクラスター化されています。 HAは、データベースグループのデータベースレベルで構成および管理します。 SQL Serverのインストールについては、関連するドキュメントを参照してください。

    1.8AlwaysOn可用性グループを有効にする

    1.8.1各ノードでSQLServerConfigurationManagerを開きます

    1.8.2SQLServerサービスを右クリックします。 [AlwaysOn高可用性]タブを開きます。

    1.8.3AlwaysOn可用性グループを有効にするを選択します チェックボックス

    その段階で、以前に構成されたクラスターのIDをすでに取得していることに注意してください。このようにして、ステップの順序を強化します。各SQLServerインスタンスでAlwaysOnを有効にする前に、各クラスターノードでクラスタリングを有効にする必要があります。

    1.8.4SQLServerサービスを再起動する

    1.9新しい可用性グループを作成する

    1.9.1 SQL ServerManagementStudioを開く

    1.9.2AlwaysOn高可用性>可用性グループを右クリックします 新しい可用性グループウィザードを選択します 。

    1.9.3ウィザードに従う

    1.9.4可用性グループ名を指定します。この名前は、クラスターの役割を作成するために使用されます。

    可用性グループ名は、MicrosoftActiveDirectoryにエントリを持つ仮想名オブジェクトでもあります。したがって、これが機能する前は、クラスタ名として使用されるコンピュータ名オブジェクト (1)コンピュータオブジェクトの作成に対する権限が必要です および(2)すべてのプロパティを読む Active Directory

    1.9.5この可用性グループの一部にするデータベースを選択します。 1セットのインスタンスに複数の可用性グループが存在する場合があります。関連するデータベースは、完全復旧モデルで構成する必要があります。 、およびバックアップを取る必要があります。ウィザードはこれらの前提条件を確認します。

    1.9.6セカンダリレプリカとして機能するインスタンスを選択します

    同期または非同期レプリケーションと、自動または手動のみのフェイルオーバーが必要かどうかを判断します。これらの選択の意味の詳細は、このドキュメントの最後に定義されているMicrosoftドキュメントに記載されています。

    通常、自動フェイルオーバーを備えた同期コミットモードはローカルの復元力のためのものであり、非同期コミットモードは遅延の懸念からDRソリューションとしてAlwaysOnを使用するためのものです。

    1.9.7初期バックアップ用のファイル共有を作成する

    このファイル共有は、レプリケーションを初期化するために使用されます。 SQL Serverサービスアカウントには、このファイル共有に対する完全なアクセス許可が必要です。この構成に参加しているSQLServerインスタンスは、SQLServerサービスアカウントと同じドメインアカウントを使用することは当然のことです。

    1.9.8手順4.7.9で作成した共有をデータベースの初期バックアップ場所として選択します。

    1.9.9検証段階を確認します。リスナーは作成されていないことに注意してください。後で行うことができます。

    1.9.10オプションの概要を確認し、構成を完了します

    1.10AGリスナーの追加

    可用性グループリスナーを使用すると、現在この役割を果たしているノードに関係なく、アプリケーションをプライマリに接続できます。フェイルオーバーをアプリケーションに対して透過的にするのに役立ちます。

    1.10.1右クリックAlwayOnHighAvailability>可用性グループリスナー リスナーの追加を選択します 。

    可用性グループリスナーは、ドメイン上に作成する仮想名オブジェクト(VNO)でもあります。したがって、関連付けられたIPアドレスが必要です。

    前述のように、クラスターの作成時に指定されたクラスター名オブジェクト(CNO)は、これが機能するためにActiveDirectoryドメインに対する2つのアクセス許可を持っている必要があります。

    私。コンピュータオブジェクトを作成する
    ii。すべてのプロパティを読む

    1.10.2構成が完了しました。ダッシュボードを表示できます:

    1.11直面する問題

    クラスター化されたストレージ

    クラスター作成の最初の実行中に、クラスターノード上のすべてのディスクがクラスターに追加されます。これは、AlwaysOn可用性グループにとって望ましい状態ではありません。

    解決策は、クラスターを破棄してからクリーンアップし、[すべての適格なストレージをクラスターに追加する]チェックボックスを使用してクラスターを再作成することでした。 クリア ステップ4.3.3で。

    Clear-ClusterNode を使用してノードをクリーンアップするまで、クラスターを再作成することはできませんでした。 PowerShellコマンドレット。

    自動フェイルオーバー

    SQLServer構成マネージャーからSQLServerサービスを停止して自動フェールオーバーをテストしても機能しませんでした。 PowerShellコマンドレットGet-ClusterLogは、クラスターログを生成しました-Node -TimeSpan 10、 そして、次のエラーを識別しました:

    000007f4.00002320 ::2016/07 / 07-06:10:59.654警告[RCM]グループEPG-SERVER-AG、failoverCount 25、failoverThresholdSetting 20、lastFailover 1601/01 / 01-00:00:00.000

    解決策は、可用性グループクラスターロールの指定された期間の「最大障害」をはるかに高い値に変更することでした。

    1.12参照

    1. AlwaysOn可用性グループ
    2. フェイルオーバーモードとフェイルオーバーモード
    3. 可用性モード

    1. SQLサーバーでyes/noブールフィールドをどのように作成しますか?

    2. PostgreSQLで英数字以外の文字を含む行を返す2つの方法

    3. MySQLレプリケーションセットアップのフェイルバック操作を実行する方法

    4. テーブルの開始日と終了日からのPostgresのGenerate_series