次の方法で共有


共有を含むレプリケーション スナップショット フォルダーを構成する

適用対象:SQL Server - Linux

スナップショット フォルダーは、共有として指定したディレクトリです。このフォルダーの読み取りと書き込みをするエージェントには、このフォルダーへのアクセスを可能にする十分な権限が必要です。

レプリケーションとスナップショット共有を示す図。

レプリケーション スナップショット フォルダー共有の説明

例の前に、SQL Server がレプリケーションで samba 共有を使用する方法について説明します。 このしくみの基本的な例は次のとおりです。

  1. samba 共有は、パブリッシャー上のレプリケーション エージェント によって /local/path1 に書き込まれるファイルを、サブスクライバーが参照できるように構成されます。
  2. SQL Server は、ディストリビューション サーバー上にパブリッシャーを設定するときに共有パスを使用するように構成されます。これによって、すべてのインスタンスが //share/path を参照します。
  3. SQL Server は、//share/path からローカル パスを探して、ファイルを見つける場所を認識します。
  4. SQL Server は、samba 共有によってサポートされるローカル パスに対して読み取りと書き込みを行います。

スナップショット フォルダーの samba 共有を構成する

レプリケーション エージェントは、他のマシンのスナップショット フォルダーにアクセスするために、レプリケーション ホスト間の共有ディレクトリを必要とします。 たとえば、トランザクション プル レプリケーションでは、ディストリビューション エージェントはサブスクライバーに存在するため、アーティクルを取得するためにディストリビューターへのアクセスが必要です。 このセクションでは、2 つのレプリケーション ホストに対して samba 共有を構成する方法の例について説明します。

手順

例としては、Samba を使用して、ホスト 1 (ディストリビューター) 上のスナップショット フォルダーがホスト 2 (サブスクライバー) で共有されるように構成します。

両方のマシンに Samba をインストールして起動する

sudo yum install samba
sudo service smb start
sudo service smb status

ディストリビューター(ホスト 1) で Samba 共有を設定する

  1. Samba のユーザーとパスワードを設定します。

    sudo smbpasswd -a mssql
    
  2. /etc/samba/smb.confを編集して、次のエントリを含め、share_nameフィールドとパス フィールドに入力します

    <[share_name]>
    path = </local/path/on/host/1>
    writable = yes
    create mask = 770
    directory mask
    valid users = mssql
    

    次の表では、各設定について説明します。

    設定 説明
    [mssql_data] 共有ディレクトリの名前
    path 共有するディレクトリの場所
    writable 共有が他のホストから書き込み可能かどうかを判断する
    create mask 作成されたファイルの Linux アクセス許可
    directory mask 作成されたディレクトリの Linux アクセス許可
    valid users この共有にログインできるユーザーの一覧

    [mssql_data]
    path = /var/opt/mssql/repldata
    writable = yes
    create mask = 770
    directory mask = 770
    valid users = mssql
    

サブスクライバー(ホスト 2) で Samba 共有をマウントする

正しいパスを使用するようにコマンドを編集し、machine2 で次のコマンドを実行します。

sudo mount //<name_of_host_1>/<share_name> </local/path/on/host/2> -o user=mssql,uid=mssql,gid=mssql

mount //host1/mssql_data /var/opt/mssql/repldata_shared -o user=mssql,uid=mssql,gid=mssql

user=mssql <- sets the login name for samba
uid=mssql  <- makes the mssql user as the owner of the mounted directory
gid=mssql  <- sets the mssql group as the owner of the mounted directory

両方の Linux ホストでスナップショット共有を使用するように SQL Server を構成する

次のセクションを両方のマシンの mssql.conf に追加します。 どこであっても //share/path の samba 共有を使用します。 この例では //host1/mssql_data になります。

[uncmapping]
//share/path = /local/path/on/hosts/

host1 の場合:

[uncmapping]
//host1/mssql_data = /local/path/on/hosts/1

host2 の場合:

[uncmapping]
//host1/mssql_data = /local/path/on/hosts/2

共有パスを使用するようにパブリッシャーを構成する

  • レプリケーションを設定するときに、共有パス (//host1/mssql_data など) を使用します。
  • //host1/mssql_data をローカル ディレクトリにマップすると、マッピングが mssql.conf に追加されます。