适用于:SQL Server 在 Linux 上
快照文件夹是指定为共享的目录;对此文件夹执行读写操作的代理必须对其具有足够的访问权限。
复制快照文件夹共享介绍
在示例之前,让我们逐步讲解SQL Server如何在复制中使用 samba 共享。 以下是其工作原理的基本示例。
- Samba 共享配置为订阅服务器可以看到发布服务器上的复制代理写入
/local/path1的文件 - 在分发服务器上设置发布服务器时,SQL Server 配置为使用共享路径,以便所有实例都将指向
//share/path - SQL Server从
//share/path中查找本地路径,以了解在何处查找文件 - SQL Server在由Samba共享支持的本地路径上进行读/写操作。
为快照文件夹配置 samba 共享
复制代理需要通过复制主机之间的共享目录访问其他计算机上的快照文件夹。 例如,在事务性请求复制中,分发代理驻留在订阅服务器上,这需要访问分发服务器才能获取项目。 在本部分中,我们将介绍如何在两个复制主机上配置 samba 共享的示例。
步骤
例如,我们将在主机 1(分发服务器)上使用 Samba 配置要与主机 2(订阅服务器)共享的快照文件夹。
在两台计算机上安装并启动 Samba
在分发服务器(主机 1)上设置 Samba 共享
为 samba 设置用户和密码:
sudo smbpasswd -a mssql编辑
/etc/samba/smb.conf以包含以下条目,并在share_name和path字段中填写内容:<[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。
相关内容
- Linux 上的 SQL Server 复制
- 复制存储过程(Transact-SQL)