Microsoft SQL Server发布与订阅
Microsoft SQL Server提供的发布与订阅功能,利用复制技术来实现数据同步,可以通过其提供的发布与订阅功能实现数据的读写分离和线下线上数据同步。
本章节提供使用SQL Server Management Studio(SSMS)配置发布与订阅的方法。RDS for SQL Server支持在界面创建发布和订阅,详见创建发布。
准备工作
环境说明:
- 本地环境:windows系统,Microsoft SQL Server 2014 SE标准版。
- 线上环境:
- 华为云 Microsoft SQL Server 2014 SE 单机实例 2u16g规格 1个,绑定弹性公网EIP。
- 华为云 Microsoft SQL Server 2014 SE 主备实例 4u8g规格 1个,绑定弹性公网EIP。
环境搭建
- 发布服务器(Publisher):数据写入源头,维护源数据,决定将特定数据分发到分发服务器(Distributor),此处即为本地环境构建的服务器。
- 使用SQL Server Management Studio(SSMS)配置发布服务器,以sa身份登录本地数据库。单击右键“复制”,选择“配置分发”,可以将自己作为分发服务器,也可以选择配置其他服务器作为分发服务器,单击“下一步”。
- sa为管理员帐号。
- 登录的账户必须具有sysadmin权限,否则无法配置发布和订阅。
图1 配置发布服务器
- 指定快照文件夹的根位置并记录,单击“下一步”。
发布需要配置相关的代理权限,以供代理账户有权限操作该文件夹,否则会导致发布失败。
图2 快照文件夹
- 选择分发数据库和日志文件的名称及位置,单击“下一步”。
图3 配置分发向导
- 使服务器能够成为发布服务器后使用此分发服务器,单击“下一步”。
- 单击“完成”,执行此配置操作。
图4 完成配置
- 使用SQL Server Management Studio(SSMS)配置发布服务器,以sa身份登录本地数据库。单击右键“复制”,选择“配置分发”,可以将自己作为分发服务器,也可以选择配置其他服务器作为分发服务器,单击“下一步”。
- 配置代理账户控制文件。
- 根据快照文件夹目录地址,需要将agent代理账户加入到该文件的控制属性。未加入该账户到文件控制会出现拒绝访问路径的报错信息:
图5 报错信息
- 打开本地SQLSERVER配置管理器,找到对应代理,右键单击选择“属性”,复制“account name”。
图6 复制代理帐户名
- 返回设置的快照文件夹的目录,右键单击文件夹选择“属性”,在弹出框中选择“安全 > 编辑 > 添加”,选择位置为本地,名称为代理账户名称,单击“确定”,勾选所有权限设置即可。
- 根据快照文件夹目录地址,需要将agent代理账户加入到该文件的控制属性。未加入该账户到文件控制会出现拒绝访问路径的报错信息:
- 分发服务器(Distributor):数据分发源,负责具体执行发送到哪个订阅服务器。将分发和发送服务器都指定为本地服务器,即发送和分发为同一服务器。因而无需再做多余设置。更多设置信息可参考官方文档分发服务器。
- 订阅服务器(Subscriber):数据接收服务器,数据读取的源头,接收端,用于接收分发服务器发送的指定数据。订阅分为推送订阅和请求订阅。
- 推送订阅:发布服务器将更改传播到订阅服务器,而无需订阅服务器发出请求,数据将连续同步或按照经常重复执行的计划同步。
- 请求订阅:订阅服务器主动请求订阅,数据通常按需或按计划同步,而非连续同步。华为云实例不支持请求订阅,因而需要此处设置为推送订阅,仅需在发送服务器端设置即可实现订阅。
在订阅前需要确保服务器间网络互通,可以在本地服务器上访问云上实例。
配置本地端订阅之前,需要将云上信息配置在本地。
- 为订阅服务器在本地服务器上设置别名。由于订阅服务不支持IP访问,因此需要将RDS实例的公网IP映射为别名。别名不可随意取名,需先登录RDS实例后,执行以下SQL语句。
select @@SERVERNAME
图7 设置别名
- 得到别名名称,打开本地sqlserver配置管理器选择“native client”,右键单击“Aliases”,选择“new Aliases”。
图8 配置native client
- 填写相关信息,单击“确认”。
图9 确认
表1 参数说明 参数
说明
Alias Name
1中设置的别名。
Port No
对应实例的端口号。
Server
绑定的公网IP。
- 配置本地host。在C:\Windows\System32\drivers\etc中,打开host文件并添加一条映射:
Server地址 MSSQL-177FFD84\MSSQL2014STD
发布
- 创建发布。
展开服务器下的“复制”节点,右键单击“本地发布”,选择“新建发布”。
图10 新建发布数据库
- 选择事务发布。
- 选择以表作为发布对象。
图11 发布表
- 添加筛选对象,进行个性化的发布。
图12 添加筛选对象
- 事务发布会先创建一个快照以复制表当前的状态。也可以设置快照代理用以执行计划。
图13 快照代理
- 设置代理安全性,这里需要设置登录帐号为本地sa帐号。
图14 设置代理安全性
- 设置发布名称,单击“完成”。
图15 完成
- 创建完成后可以通过复制监视器来查看是否创建发布成功。
图16 启动复制监视器
订阅
- 选择对应设置的发布,单击右键选择“新建订阅”。
图17 新建订阅
- 创建订阅的发布,单击“下一步”。
图18 创建发布
- 选择推送订阅,单击“下一步”。
图19 分发代理位置
- 选择“添加订阅服务器”,支持SQL Server引擎和非SQL Server作为订阅服务器,将创建并根据上述步骤配置的华为云实例作为一个订阅服务器。
图20 添加订阅服务器
- 选择一个数据库作为订阅对象。
图21 选择订阅数据库
- 配置与订阅服务器的连接。
图22 配置连接
- 使用一个长期有效的数据库帐号,保障订阅长期有效,这里的帐号设置可以为登录华为云实例的数据库帐号,单击“确定”。
图23 连接分发服务器
- 创建订阅成功。
图24 创建订阅
- 将鼠标移动到发布配置上可以看到对应的订阅信息。
图25 查看订阅