Alwayson+Replication

本文详细介绍如何使用SQL Server AlwaysOn实现Publicationdatabase的高可用性,并确保事务复制在故障转移后仍能正常运行。此外,还介绍了如何配置Subscriptiondatabase以支持AlwaysOn并在故障转移后手动恢复复制。

本文将介绍如何实现Alwayson + Replication ,通过AlwaysOn实现Publicationdatabase的高可用性,使Publicationdatabasefailover 之后事务复制可以正常运行。

   

拓扑如下:

   

   

Publisher primary

Denali1

Publication database

tranPubDB

Publication name

tranPublicationTest

Publisher secondary

Denali3

Distributor

Denali2

  

  

AlwaysOn Availability Group name

Liwei

Listener

liweion

   

   

   

   

首先配置AlwaysOn Availability Group

  1. 登陆Denali1tranPubDB进行完全备份: backup database tranPubDB to disk='tranpubdb.bak' with init
  2. 右键点击AlwaysOn High Availability

  1. 选择TranPubDb,如果之前不进行备份,Status会显示'Full backup is required'的提示。

   

  1. 指定Replicas:添加priamry secondary

  1. 添加ListenerListener将会用于后续的操作。

  1. 选择初始化数据的方式。

  1. 验证。

   

AlwaysOn的配置就结束了。

   

接下来配置事务复制

(1,2,3步的配置和普通的事务复制完全一致,详细步骤请您参考http://www.sql-server-performance.com/2010/transactional-replication-2008-r2/)

  1. 连接Denali2:
    1. Denali2配置为distributor .
    2. Denali2里指定Denali1Denali3为发布服务器
  2. 连接Denali3:指定Denali2为分发服务器
  3. 连接Denali1:
    1. 指定Denali2为分发服务器.
    2. 创建发布
  4. 连接Denali2, 在分发数据库下执行下面的语句. 执行下面的语句之后,logreader就可以通过Listener连接到正在工作的primaryserver了。请注意,这一步是实现Publication database高可用性的关键步骤。

    EXEC sys.sp_redirect_publisher 

    @original_publisher = 'Denali1',

    @publisher_db = 'tranPubDB',

    @redirected_publisher = 'liweion';----将之前创建的listener带入到这个参数

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

       

       

       

       

    如何配制Subscription database +AlwaysON

    需要说明的是:当subscription database availability group发生failover后,replication是无法自动工作的,我们需要一些手工操作)

    当前拓扑如下

       

Publisher

Denali1

Publication database

tranPubDB

Publication name

tranPublicationTest

Distributor

Denali2

Subscriber  primary

Denali4

Subscriber  secondary

Denali5

Subscription database

subDB

   

   

  1. 假设subscriberAvailabilitygroup发生了failover,此时distrubitonagent是无法工作的。
  2. 切换之后,Denali5成为新的primary
  3. 连接到发布服务器Denali1,进入发布数据库tranPubDB,将发布设置为运行从备份初始化: EXEC sp_changepublication @publication = 'tranPublicationTest', @property = 'allow_initialize_from_backup', @value = 'true';
  4. 连接到新的Denali5. 进入订阅数据库:
    1. 得到当前订阅的LSN: SELECT transaction_timestamp, * FROM MSreplication_subscriptions;
    2. 清除订阅数据库的原数据:EXEC sp_subscription_cleanup @publisher = 'Denali1', @publisher_db = 'tranPubDB'
  5. 连接到发布服务器,将新的primaryserver的数据库指定为订阅:

    EXEC sp_addsubscription -- past the LSN before executing

    @publication = 'tranPublicationTest',

    @subscriber = 'Denali5',

    @destination_db = 'subDB',

    @subscription_Type = 'Push',

    @sync_Type = 'initialize from LSN',

    @subscriptionlsn = 0x00000023000000E60003000000000000, ----这个值就是我们在4 a)步骤得到的transaction_timestamp

    @article = 'all',

    @update_mode = 'read only',

    @subscriber_type = 0;

       

    执行完这步之后,事务复制就可以正常工作了。

 

Update 20190104

====

Since SQL Server 2017, it's able to add distribution database to AG group

https://docs.microsoft.com/en-us/sql/relational-databases/replication/configure-distribution-availability-group?view=sql-server-2017

It also support automatic failover on subscriber

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/replication-subscribers-and-always-on-availability-groups-sql-server?view=sql-server-2017

SQL Server Always On是一种高可用性和灾难恢复解决方案,它基于SQL Server数据库引擎和Windows Server故障转移集群(Failover Cluster)技术。其架构图如下: 1. 客户端:客户端通过应用程序或者数据库工具与主服务器进行交互,如查询、插入、更新等操作。 2. 链接服务/负载均衡:链接服务是一个可选的组件,它负责将客户端连接导向到可用的数据库节点。负载均衡器会根据负载情况将客户端请求分配到相应的数据库节点。 3. 主服务器(Primary):主服务器是Always On配置中的核心组成部分,它承担主要的读写操作。主服务器上的写操作会同步到其他辅助服务器,确保数据的一致性。 4. 辅助服务器(Secondary):辅助服务器是备份主服务器的复本,用于故障转移和读取操作。辅助服务器可以是同城或异地,以实现容灾备份和数据复制。 5. 同步复制(Synchronous replication):主服务器上的写操作会同步地传输到辅助服务器,确保数据的一致性。只有当辅助服务器确认接收到数据后,主服务器才会返回操作完成。 6. 异步复制(Asynchronous replication):主服务器上的写操作异步地传输到辅助服务器。主服务器无需等待辅助服务器确认,能够提供更高的性能,但数据同步的延迟较高。 7. 可读辅助服务器(Readable Secondary):辅助服务器可以配置为只读模式,允许用户进行读取操作。这可以提高性能和负载均衡。 8. 监听器(Listener):监听器是客户端连接到Always On的入口,它会负责向客户端提供主服务器或可读的辅助服务器的连接端点。 Always On架构提供了高可用性、灾难恢复和性能改进。当主服务器发生故障时,自动进行故障转移,辅助服务器会接管主服务器的工作。这样可以最小化应用程序和用户的中断时间,确保业务的连续性和数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值