通过


使用共享配置复制快照文件夹

适用于:SQL Server 在 Linux 上

快照文件夹是指定为共享的目录;对此文件夹执行读写操作的代理必须对其具有足够的访问权限。

SQL Server 使用 Samba 共享在发布服务器和订阅服务器之间进行复制的图表.

复制快照文件夹共享介绍

在示例之前,让我们逐步讲解SQL Server如何在复制中使用 samba 共享。 以下是其工作原理的基本示例。

  1. Samba 共享配置为订阅服务器可以看到发布服务器上的复制代理写入 /local/path1 的文件
  2. 在分发服务器上设置发布服务器时,SQL Server 配置为使用共享路径,以便所有实例都将指向 //share/path
  3. SQL Server从 //share/path 中查找本地路径,以了解在何处查找文件
  4. SQL Server在由Samba共享支持的本地路径上进行读/写操作。

为快照文件夹配置 samba 共享

复制代理需要通过复制主机之间的共享目录访问其他计算机上的快照文件夹。 例如,在事务性请求复制中,分发代理驻留在订阅服务器上,这需要访问分发服务器才能获取项目。 在本部分中,我们将介绍如何在两个复制主机上配置 samba 共享的示例。

步骤

例如,我们将在主机 1(分发服务器)上使用 Samba 配置要与主机 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_namepath字段中填写内容:

    <[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。 在所有位置将 samba 共享用于 //share/path。 在此示例中,它是 //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