適用対象:SQL Server - Linux
スナップショット フォルダーは、共有として指定したディレクトリです。このフォルダーの読み取りと書き込みをするエージェントには、このフォルダーへのアクセスを可能にする十分な権限が必要です。
レプリケーション スナップショット フォルダー共有の説明
例の前に、SQL Server がレプリケーションで samba 共有を使用する方法について説明します。 このしくみの基本的な例は次のとおりです。
- samba 共有は、パブリッシャー上のレプリケーション エージェント によって
/local/path1
に書き込まれるファイルを、サブスクライバーが参照できるように構成されます。 - SQL Server は、ディストリビューション サーバー上にパブリッシャーを設定するときに共有パスを使用するように構成されます。これによって、すべてのインスタンスが
//share/path
を参照します。 - SQL Server は、
//share/path
からローカル パスを探して、ファイルを見つける場所を認識します。 - SQL Server は、samba 共有によってサポートされるローカル パスに対して読み取りと書き込みを行います。
スナップショット フォルダーの samba 共有を構成する
レプリケーション エージェントは、他のマシンのスナップショット フォルダーにアクセスするために、レプリケーション ホスト間の共有ディレクトリを必要とします。 たとえば、トランザクション プル レプリケーションでは、ディストリビューション エージェントはサブスクライバーに存在するため、アーティクルを取得するためにディストリビューターへのアクセスが必要です。 このセクションでは、2 つのレプリケーション ホストに対して samba 共有を構成する方法の例について説明します。
手順
例としては、Samba を使用して、ホスト 1 (ディストリビューター) 上のスナップショット フォルダーがホスト 2 (サブスクライバー) で共有されるように構成します。
両方のマシンに Samba をインストールして起動する
ディストリビューター(ホスト 1) で Samba 共有を設定する
Samba のユーザーとパスワードを設定します。
sudo smbpasswd -a mssql
/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
に追加されます。