poorX

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在现有AlwaysOn集群增加发布订阅节点

配置

前提

  1. 节点1、节点2在AlwaysOn集群,节点3作为集群外节点使用订阅复制集群数据同步
  2. 发布对象必须要有主键

步骤

  1. 登录节点3配置分发distributor
  2. 在节点3中指定节点1和节点2是发布服务器
  3. 登录节点2指定节点3是分发服务器
  4. 登录节点1指定节点3是分发服务器
  5. 登录节点1创建发布
  6. 登录节点3,在分发数据库下执行下面的语句,执行下面的语句之后,logreader就可以通过Listener连接到正在工作的Primary Server了。请注意这一步是实现Publication database高可用性的关键步骤。
    EXEC sys.sp_redirect_publisher
    @original_publisher = 'Denali1',
    @publisher_db = 'tranPubDB',
    @redirected_publisher = 'liweion'; -- 将之前创建的listener带入到这个参数

配置步骤就全部完成了,之后您可以任意添加订阅,当failover发生之后,事务复制也可以正常工作。

参考:https://www.cnblogs.com/stswordman/p/3252549.html

发布订阅的限制

https://learn.microsoft.com/zh-cn/sql/relational-databases/replication/publish/filter-published-data?view=sql-server-2016

主键列对于事务发布中的所有表都是必需的。 主键对于合并发布中的表并不是必需的,但如果存在主键列,则无法筛选该列。

复制类型:https://learn.microsoft.com/zh-cn/sql/relational-databases/replication/types-of-replication?view=sql-server-2016

问题

1、订阅创建时提示:本地订阅已存在,但本地订阅中不显示

参考:https://blog.csdn.net/selaginella/article/details/82563207
参考:https://learn.microsoft.com/zh-cn/sql/relational-databases/replication/delete-a-push-subscription?view=sql-server-ver16

在发布服务器上,对发布数据库执行 transact-SQL) sp_dropsubscription (。 指定 @publication 和 @subscriber。 为@article指定所有值。 (可选) 如果无法访问分发服务器,请为@ignore_distributor指定值 1 以删除订阅,而无需在分发服务器上删除相关对象。

在订阅服务器上的订阅服务器上,执行 sp_subscription_cleanup (Transact-SQL) 以删除订阅数据库中的复制元数据。

2、删除发布时出现问题提示:无法更新分发数据库订阅表。无法更改订阅状态。

-- 下面存储过程的参数是 数据库名
EXEC sp_removedbreplication 'TestSync'

参考:https://blog.csdn.net/huyu107/article/details/51098462?utm_source=blogxgwz6

3、作业任务日志中存在以下报错:由于发布服务器处于不活动状态,无法生成快照

参考:https://blog.csdn.net/seteor/article/details/7742612

posted on 2022-10-26 14:54  poorX  阅读(453)  评论(0编辑  收藏  举报