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

SQL Serverの高可用性:既存のフェールオーバークラスターインスタンスに新しいディスクを追加します

    前回の記事では、既存のSQLServerフェールオーバークラスターインスタンスにノードをインストールする手順を説明しました。それに加えて、手動フェイルオーバーと自動フェイルオーバーのデモも行いました。

    この記事では、フェールオーバークラスターにディスクを追加してから、既存のデータベースを新しいドライブに移動するプロセスを示します。

    まず、クラスターにディスクを追加するには、次の手順を実行する必要があります。
    1。新しいiSCSI仮想ディスクを作成します。
    2。フェールオーバークラスターノードからiSCSIイニシエーターを使用して新しいiSCSI仮想ディスクに接続します。
    3。既存のフェールオーバークラスターストレージに新しいディスクを追加します。
    4。サンプルデータベースファイルを新しいディスクに移動します。
    最初に、デモのセットアップについて簡単に紹介します。コンピューター上に4つの仮想マシンを作成しました。詳細は次のとおりです。

    ドメインコントローラー この仮想マシンはドメインコントローラーとして使用されます。 この仮想マシンは仮想SANとして使用されます。 iSCSIイニシエーターを使用してフェールオーバークラスターノードから接続する2つのiSCSI仮想ディスクを作成しました。 プライマリSQLノード セカンダリSQLノード
    仮想マシン ホスト名 IPアドレス 目的
    DC.Local 192.168.1.110
    SAN SAN.DC.Local 192.168.1.111
    SQL01.DC.Local 192.168.1.112 この仮想マシンに、フェールオーバークラスターインスタンスをインストールします。
    SQL02.DC.Local 192.168.1.113 この仮想マシンに、フェールオーバークラスターインスタンスのセカンダリノードをインストールします。

    SAN.DC.Local 、3つのiSCSIドライブを作成しました。詳細は次のとおりです。

    このドライブはクォーラムとして使用されます。
    iSCSIドライブ名 目的
    Sql-data このドライブには、ユーザーデータベースのデータベースファイルとTempDBファイルを保存しています。
    SQLログ このドライブには、ユーザーデータベースのログファイルを保存しています。
    クォーラム

    以下は、構成のスクリーンショットです。

    iSCSIディスクを作成する

    上で述べたように、最初にiSCSI仮想ドライブを作成する必要があります。この場合、PowerShellを使用して固定サイズのiSCSI仮想ディスクを作成および構成します。仮想ディスクのサイズは8GBです。新しいiSCSIドライブを作成するには、次のコマンドを実行します。

    New-IscsiVirtualDisk –Path F:\new-sql-data\new-sql-data.vhdx –SizeBytes (8GB) –UseFixed

    iSCSIディスクが正常に作成されたことを確認するには、 Sを開きます。 erver M アナガー iSCSI仮想ディスクをクリックします 左側のペイン。次の画像を参照してください:

    次に、iSCSIターゲットを作成する必要があります。リモートサーバーは、ターゲット名を使用して仮想ディスクに接続できます。ここでは、 new-sql-dataという名前のターゲットを作成します 。 「new-sql-data」という名前のiSCSIターゲットを作成するには 」と割り当て、 SQL02.dc.Localに割り当てます。 およびSQL02.dc.Local 、次のコマンドを実行します。

    New-IscsiServerTarget -TargetName "new-sql-data" -InitiatorIds @("IQN:iqn.1991-05.com.microsoft:sql01.dc.local", "IQN:iqn.1991-05.com.microsoft:sql02.dc.local")

    iSCSIターゲットを作成したら、仮想ディスクをiSCSIターゲットに割り当てる必要があります。これを行うには、次のクエリを実行します。

    Add-IscsiVirtualDiskTargetMapping -TargetName new-sql-data –Path "F:\new-sql-data\new-sql-data.vhdx"

    ターゲットマッピングが正常に完了したら、サーバーマネージャーでiSCSI仮想ディスクペインを更新します。次の画像を参照してください:

    フェールオーバークラスターノードからiSCSIイニシエーターを使用して新しいiSCSI仮想ディスクに接続します

    それでは、 SQL01.dc.localからこのドライブに接続しましょう。 RDPを使用してノードを作成します。

    iSCSIイニシエーターを使用してiSCSI仮想ディスクに接続するには、iSCSIイニシエーターを開き、更新をクリックします。 ターゲットを発見するためのボタン。これで、「検出されたターゲット」から適切なターゲット名を選択できます。 " テキストボックス。適切なターゲットを選択し、 Cをクリックします onnect 。次の画像を参照してください:

    仮想ディスクに接続すると、 Dにディスクが表示されます。 リスク M アナガー Cの下のセクション コンピューター M 管理 。クラスタ内でディスクを使用するには、次のタスクを実行する必要があります。

    • ディスクをオンラインにします。これを行うには、 Dを右クリックします リスク4 オンラインを選択します 。次の画像を参照してください:

    • ディスクがオンラインになったら、ディスクを初期化します。これを行うには、ディスク4を右クリックします。 ディスクの初期化を選択します 。次の画像を参照してください:

    • ディスクが初期化されたら、ディスク4を右クリックします。 新しいシンプルボリュームを選択します パーティションを作成します。次の画像を参照してください:

    同様に、 SQL02.dc.localから仮想ドライブを接続する必要があります ノード。これを行うには、 SQL02.dc.localを接続します RDPを使用しているノードで、iSCSIイニシエーターを開き、更新をクリックします。 ターゲットを発見するためのボタン。これで、検出されたターゲットから適切なターゲット名を選択できます。 テキストボックス。適切なターゲットを選択し、 Cをクリックします onnect 。次の画像を参照してください:

    新しいディスクを既存のフェールオーバークラスターストレージに追加します。

    このディスクをクラスタストレージに追加するには、 SQL01.Dc.Localに接続します RDPを使用して、 Fを開きます ailover C 光沢 M アナガー SQLCluster.DC.Localに接続します 、 Dを選択します リスク 左のパンからAをクリックします ddディスク 。 「クラスターにディスクを追加」ダイアログボックスが開きます。このダイアログボックスに、新しいクラスター化されたディスクが表示されます。次の画像を参照してください:

    新しいディスクが追加されると、フェールオーバークラスターマネージャーのディスクメニューに表示されます。次の画像を参照してください:

    サンプルデータベースファイルを新しいディスクに移動します。

    ディスクが追加されたら、サンプルデータベースファイルを新しいドライブに移動しましょう。 deという名前のデータベースを作成しました モデータベース SQL01.dc.local 。そのデータファイルを新しいディスクに移動します。これを行うには、PowerShellに接続してから、「 SQLCmd」を使用してSQLServerインスタンスに接続します。 ’コマンド。

    インスタンスに接続したら、次のコマンドを実行してデータベースをデタッチします。

    exec sp_detach_db [demodatabase]
    go

    データベースを切り離したら、データファイルをドライブF(古いドライブ)からドライブE(新しいドライブ)にコピーし、次のコマンドを実行してデータベースを接続します。

    CREATE DATABASE demodatabase
        ON (FILENAME = 'E:\SQLData\demodatabase.mdf'),   
        (FILENAME = 'F:\SQLLog\demodatabase_log.ldf')   
        FOR ATTACH; 
    GO

    上記のコマンドを実行すると、次のエラーが発生します。

    Msg 5184, Level 16, State 2, Server SQLCLUST, Line 1
    Cannot use file 'E:\SQLData\demodatabase.mdf' for clustered server. Only formatted files on which the cluster resource of the server has a dependency can be used. Either the disk resource containing the file is not present in the cluster group or the cluster resource of the Sql Server does not have a dependency on it.

    このエラーは、新しいディスクをクラスターリソースグループと AND Dependencyに追加しなかったために発生します。 MSSQLSERVERロールの。次の画像を参照してください:

    このエラーを修正するには、新しいディスクをMSSQLSERVERロールに追加する必要があります。これを行うには、フェールオーバークラスターマネージャーを開き、[役割の選択]をクリックして、SQL Server( MSSQLSERVER )を右クリックします。 )役割を選択し、ストレージの追加を選択します 。次の画像を参照してください:

    ストレージの追加 ダイアログボックスが開きます。使用可能なストレージのリストから、作成したディスクを選択します。次の画像を参照してください:

    ストレージを追加したら、MSSQLSERVERロールの[リソース]タブから確認できます。次の画像を参照してください:

    ディスクを追加したら、SQLServerのAND依存関係にも追加する必要があります。 。これを行うには、 MSSQLSERVERの下のリソースのリストでSQLServerを右クリックします。 役割を選択し、 Pを選択します プロパティ P プロパティ ダイアログボックスで、依存関係に移動します タブをクリックし、クラスターディスク4を選択します リソースのドロップダウンボックスから 列。

    ディスクリソースを追加したら、次のコマンドを使用してデータベースを接続してみてください。

    CREATE DATABASE demodatabase
        ON (FILENAME = 'E:\SQLData\demodatabase.mdf'),   
        (FILENAME = 'F:\SQLLog\demodatabase_log.ldf')   
        FOR ATTACH; 
    GO

    コマンドは正常に実行されます。ファイルが適切な場所にコピーされたことを確認するには、PowerShellで次のクエリを実行します。

    select db_name(database_id) as [database name], physical_name from sys.master_files where db_name(database_id) ='demodatabase'

    出力は次のとおりです。

    Database Name		physical_name
    ------------ 		---------------------------------
    demodatabase		E:\SQLData\demodatabase.mdf
    demodatabase		F:\SQLLog\demodatabase_log.ldf

    ご覧のとおり、データベースファイルは新しいドライブに移動されました。

    概要

    この記事では、既存のSQLServerフェールオーバークラスター化インスタンスにディスクを追加するステップバイステップのプロセスについて説明しました。次の記事では、システムデータベースを新しいクラスター化されたディスクに移動する方法について説明します。

    しばらくお待ちください!


    1. 「マルチパート識別子」とは何ですか?なぜバインドできないのですか?

    2. PostgreSQLでインターバル出力フォーマットを設定する方法

    3. データを別のテーブルにコピーする

    4. MariaDBの日付から日を返す8つの関数