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

LinuxにSQLServerAlwaysOn可用性グループを展開する

    前回の記事では、Ubuntu18.04とSQLServer2019を仮想マシンにインストールする方法について説明しました。さて、先に進む前に、構成を見ていきましょう。

    3つの仮想マシンを作成しましたが、詳細は次のとおりです。

    ホスト名 IPアドレス 役割
    LinuxSQL01 192.168.0.140 プライマリレプリカ
    LinuxSQL02 192.168.0.141 同期セカンダリレプリカ
    LinuxSQL03 192.168.0.142 非同期セカンダリレプリカ

    ホストファイルを更新します。

    構成では、ドメインサーバーを使用していません。したがって、ホスト名を解決するには、ホストファイルにエントリを追加する必要があります。

    ホストファイルは/ etcにあります ディレクトリ。次のコマンドを実行してファイルを編集します:

    [email protected]:/# vim /etc/hosts

    ホストファイルに、すべての仮想マシンのホスト名とIPアドレスを入力します。

    ホストファイルを保存します。

    すべての仮想マシンで同じ手順を実行します。

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

    AlwaysOnを展開する前に、SQLServerの高可用性機能を有効にする必要があります。

    Windows Server 2016では、このオプションはSQL Server構成マネージャーから有効にできますが、Linuxプラットフォームでは、bashコマンドを使用して有効にする必要があります。

    Puttyを使用してLinuxSQL01に接続し、次のコマンドを実行します。

    [email protected]:~# sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1

    SQL Serverサービスを再起動します:

    [email protected]:~# service mssql-server restart

    上記の手順をすべての仮想マシンで実行します。

    認証用の証明書を作成する

    WindowsサーバーのAlwaysOnとは異なり、Linuxの展開にはドメインコントローラーは必要ありません。プライマリレプリカとセカンダリレプリカ間の認証と通信には、証明書を使用します。

    次のスクリプトは、証明書とマスターキーを作成します。次に、証明書をバックアップし、パスワードで保護します。

    LinuxSQL01に接続し、次のスクリプトを実行します。

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'abcd!1234';
    CREATE CERTIFICATE AG_Auth_Cert WITH SUBJECT = 'dbm';
    BACKUP CERTIFICATE AG_Auth_Cert
       TO FILE = '/var/opt/mssql/data/ AG_Auth_Cert_backup.cer'
       WITH PRIVATE KEY (
               FILE = '/var/opt/mssql/data/ AG_Auth_Cert_backup.pvk',
               ENCRYPTION BY PASSWORD = 'abcd!1234'
           );
    

    証明書とマスターキーを作成したら、以下のコマンドを実行して、それらをセカンダリレプリカ(LinuxSQL02およびLinuxSQL03)にコピーします。

    マスターキーと証明書の場所がすべてのレプリカで同じであり、読み取り/書き込み権限があることを確認してください。

    /*Copy certificate and the key to LinuxSQL02*/
    
    scp /var/opt/mssql/data/AG_Auth_Cert_backup.cer [email protected]:/var/opt/mssql/data/
    scp /var/opt/mssql/data/AG_Auth_Cert_backup.pvk   [email protected]:/var/opt/mssql/data/
    
    /*Copy certificate and the key to LinuxSQL03*/
    
    scp /var/opt/mssql/data/AG_Auth_Cert_backup.cer   [email protected]:/var/opt/mssql/data/
    scp /var/opt/mssql/data/AG_Auth_Cert_backup.pvk   [email protected]:/var/opt/mssql/data/
    

    セカンダリノードで次のコマンドを実行して、証明書と秘密鍵の読み取り/書き込み権限を付与します。

    /*Grant read-write permission on certificate and key to [email protected]*/
    
    [email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.pvk
    [email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.cer
    
    /*Grant read-write permission on certificate and key to [email protected]*/
    
    [email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.pvk
    [email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.cer
    

    権限が割り当てられると、LinuxSQL01で作成された証明書とマスターキーのバックアップを使用して、証明書とマスターキーを作成します。

    これを行うには、両方のセカンダリレプリカで次のコマンドを実行します。

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'abcd!1234';
    CREATE CERTIFICATE AG_Auth_Cert
        FROM FILE = '/var/opt/mssql/data/AG_Auth_Cert_backup.cer'
        WITH PRIVATE KEY (
        FILE = '/var/opt/mssql/data/AG_Auth_Cert_backup.pvk',
        DECRYPTION BY PASSWORD = 'abcd!1234'
                );
    

    証明書とマスターキーを作成したら、データベースミラーリングポイントを構成します。

    ミラーリングエンドポイントを作成する

    プライマリレプリカとセカンダリレプリカの間で通信するために、SQLServerはミラーリングエンドポイントを使用します。

    ミラーリングエンドポイントは、TCP / IPプロトコルを使用して、プライマリレプリカとセカンダリレプリカからメッセージを送受信し、一意のTCP/IPポートでリッスンします。

    次のスクリプトを実行して、プライマリノードとセカンダリノードにエンドポイントを作成します。

    /*Run this script on LinuxSQL01*/
    
    CREATE ENDPOINT [AG_LinuxSQL01]
        AS TCP (LISTENER_PORT = 5022)
        FOR DATABASE_MIRRORING (
    	    ROLE = ALL,
    	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
    		ENCRYPTION = REQUIRED ALGORITHM AES
    		);
    ALTER ENDPOINT [AG_LinuxSQL01] STATE = STARTED;
    
    /*Run this script on LinuxSQL02*/
    
    CREATE ENDPOINT [AG_LinuxSQL02]
        AS TCP (LISTENER_PORT = 5022)
        FOR DATABASE_MIRRORING (
    	    ROLE = ALL,
    	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
    		ENCRYPTION = REQUIRED ALGORITHM AES
    		);
    
    ALTER ENDPOINT [AG_LinuxSQL02] STATE = STARTED;
    
    /*Run this script on LinuxSQL03*/
    
    CREATE ENDPOINT [AG_LinuxSQL03]
        AS TCP (LISTENER_PORT = 5022)
        FOR DATABASE_MIRRORING (
    	    ROLE = ALL,
    	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
    		ENCRYPTION = REQUIRED ALGORITHM AES
    		);
    ALTER ENDPOINT [AG_LinuxSQL03] STATE = STARTED;
    

    ミラーリングポイントが作成されたら、可用性グループを作成しましょう。

    可用性グループを作成する

    SQL ServerManagementStudioを使用してAlwaysONを構成します。

    まず、それを起動し、 saを使用してLinuxSQL01インスタンスに接続します 資格情報。 SQL Serverインスタンスに接続したら、常に高可用性を実現を右クリックします。 新しい可用性グループウィザードを選択します 。

    可用性グループウィザード 開始します。

    1。はじめに

    はじめに 画面で、可用性グループウィザードによって実行されるタスクリストを参照してください。 [次へ]をクリックします。

    2。可用性グループオプションの指定

    [可用性グループオプションの指定]画面で、目的の可用性グループ名を入力し、 EXTERNALを選択します。 クラスタータイプから ドロップダウンメニュー。

    また、データベースレベルのヘルス検出にチェックマークを付けます チェックボックス。これにより、グループヘルスを利用できるようにイベントセッションを延長できます。

    3。 データベースの選択

    データベースの選択で可用性グループに追加するデータベースを選択できます 画面。注:データベースは、次の前提条件を満たしている必要があります。

    1. データベースは完全復旧モデルである必要があります。
    2. データベースの完全バックアップを作成する必要があります。

    WideWorldImportorsのバックアップを復元しました プライマリレプリカ上のデータベース。データベースはFULLにあります リカバリモデルであり、完全バックアップが生成されています。

    WideWorldImportorsを選択します リストからデータベースを選択し、[次へ]をクリックします 。

    4。 レプリカを指定

    レプリカの指定 画面には、さまざまなオプションを構成するためのいくつかのタブがあります。それらすべてを確認しましょう。

    [レプリカ]タブ

    ここでは、プライマリレプリカとセカンダリレプリカ、可用性モード、およびフェイルオーバーモードを指定します。

    LinuxSQL01を使用します プライマリレプリカとして。 LinuxSQL02 およびLinuxSQL03 セカンダリレプリカです。

    LinuxSQL02の可用性モード 同期コミットになります 、および LinuxSQL03 の場合 非同期コミットになります 。

    レプリカを追加するには、レプリカの追加をクリックします 。次に、サーバーに接続します。 ダイアログボックス、サーバー名とSQLログインの詳細を指定 インスタンスに接続するには:

    [エンドポイント]タブ

    ここでは、レプリカとそのミラーリングエンドポイントのリストを、対応するポート番号と名前とともに表示できます。

    バックアップ設定

    ここでは、バックアップの生成に使用するレプリカを指定します。このオプションは、可用性グループ内のSQLデータベースバックアッププロセスをオフロードする場合に役立ちます。

    次のオプションのいずれかを選択できます:

    1. セカンダリを優先:バックアップはセカンダリレプリカで生成されます。セカンダリレプリカが利用できない場合、バックアップはプライマリレプリカで生成されます。
    2. セカンダリのみ:すべてのバックアップはセカンダリレプリカで生成されます。
    3. プライマリ:バックアップはプライマリレプリカで生成されます。
    4. 任意のレプリカ:バックアップは任意のレプリカから生成されます。

    セカンダリを優先を使用します オプション:

    リスナー

    可用性グループリスナーは、アプリケーションが可用性グループデータベースに接続するために使用する仮想名です。 リスナーDNS名でリスナーDNS名とそのポートを指定します およびポート テキストボックス。

    静的IPを選択します ネットワークモードから ドロップダウンメニュー。

    可用性グループリスナーのIPアドレスを追加するには、[追加]をクリックします>IPアドレスを入力 およびサブネットマスク

    読み取り専用ルーティング

    ここでは、読み取り専用のルーティングURLを指定できます および読み取り専用ルーティングリスト プライマリレプリカとセカンダリレプリカの場合。

    デモンストレーションでは、読み取り専用ルーティングを構成しません。したがって、[次へ]をクリックします。読み取り専用ルーティングの詳細については、常時接続の読み取り専用ルーティングを参照してください。

    それでは、私たちが取り組んでいるメインプロセスに戻りましょう。

    5。 初期データ同期を選択

    初期データ同期の選択 画面で、初期データ同期の設定を行います。各オプションの詳細はウィザード画面に表示され、いずれかを選択できます。

    1. 自動シード。
    2. データベースとログの完全バックアップ。
    3. 参加のみ。
    4. 初期データ同期をスキップします。

    WideWorldImportorsを作成していません LinuxSQL02およびLinuxSQL03レプリカ上のデータベース、自動シードを選択 オプション。両方のレプリカにデータベースを作成し、データ同期を開始します。 [次へ]をクリックします。

    6。検証と要約

    検証について 画面で、ウィザードはすべての構成を検証します。

    Always On可用性グループを正常に展開するには、すべての検証が成功する必要があります。エラーがある場合は、解決する必要があります。

    概要について 画面に、可用性グループを展開するために選択された構成のリストが表示されます。

    詳細をもう一度確認し、[完了]をクリックします –展開プロセスを開始します。

    展開プロセスのスクリプトを生成する場合は、[スクリプト]をクリックします 。

    ご覧のとおり、AlwaysOnデプロイメントプロセスが開始されます。正常に完了したら、[閉じる]をクリックします ウィザードを終了します。

    これで、SQLServer2019でのAlwaysOn可用性グループの展開が完了しました。

    概要

    この記事は、LinuxでのSQLServerAlwaysOn可用性グループの段階的な展開プロセスを理解するのに役立ちます。

    次の記事では、SQL Server Management Studioを使用して可用性グループリスナーを構成し、手動フェールオーバーを実行する方法について説明します。しばらくお待ちください!


    1. Sqlite Android Raw QueryINSERTINTOが機能しない

    2. IDENTITY列の値にギャップがあるのはなぜですか?

    3. OracleでPL/SQLからの出力をフラッシュする方法はありますか?

    4. OracleASエイリアスが機能しない