SQLServer 2012之AlwaysOn —— 指定数据同步链路,消除网络抖动导致的提交延迟问题

原文:SQLServer 2012之AlwaysOn —— 指定数据同步链路,消除网络抖动导致的提交延迟问题

事件起因:近期有研发反应,某数据库从08切换到12环境后,不定期出现写操作提交延迟的问题;

事件分析:在排除了系统资源争用等问题后,初步分析可能由于网络抖动导致同步模式alwayson节点经常出现会话超时等待提交的问题导致。

经过排查,扩展事件里发现不定期出现35202错误,这是一条副本连接恢复的消息。

由于机房网络环境复杂,数据库服务器和应用服务器混用一个交换机,在业务高峰期时,因上联端口流量打满而导致连接失败的情况屡有发生。

既然短期内无法改造网络环境,那就从SQLSERVER服务器自身出发,只对数据同步的部分进行改造;

现有环境:

SQL AG:为两节点的同步模式,两个节点各有一块网卡连接到交换机,没有直连心跳线(WSFC也不再要求有独立的心跳网络)

改造方案:

1、两个节点各启用一块网卡,采用直连方式进行通信,同时配置私有地址

Server_A:10.0.0.11

Server_B:10.0.0.12

2、删除两个节点的endpoint,手动重新创建Listener_IP为直连IP的endpoint

3、更改AG中,每个副本的endpoint_url

4、等待数据重新同步;

其中第三步的脚本如下,要在两个节点上分别操作,注意Listener_IP为直连网卡的IP

 1 /****** Object:  Endpoint [Hadr_endpoint]    Script Date: 2015/1/6 16:06:17 ******/
 2 DROP ENDPOINT [Hadr_endpoint]
 3 GO
 4
 5 /****** Object:  Endpoint [Hadr_endpoint]    Script Date: 2015/1/6 16:06:17 ******/
 6 CREATE ENDPOINT [Hadr_endpoint]
 7          STATE=STARTED
 8          AS TCP (LISTENER_PORT = 5022, LISTENER_IP = (10.0.0.11))
 9          FOR DATA_MIRRORING (ROLE = ALL, AUTHENTICATION = WINDOWS NEGOTIATE
10 , ENCRYPTION = REQUIRED ALGORITHM AES)
11 GO

第四步的脚本如下,在主副本执行即可

1 ALTER AVAILABILITY GROUP [Alwayson01]
2 MODIFY REPLICA ON N‘Node_01‘ WITH (ENDPOINT_URL = N‘TCP://10.0.0.11:5022‘)
3
4 ALTER AVAILABILITY GROUP [Alwayson01]
5 MODIFY REPLICA ON N‘Node_02‘ WITH (ENDPOINT_URL = N‘TCP://10.0.0.12:5022‘)

注意:删除endpoint后两副本即为未同步状态,但侦听器和AG组中的数据库不受影响,对应用而言,主副本的服务仍然正常;

参考文章:

http://blogs.msdn.com/b/alwaysonpro/archive/2013/11/01/configuring-a-dedicated-network-for-replicating-changes-from-primary-to-secondary-replica.aspx

时间: 2024-10-25 16:02:24

SQLServer 2012之AlwaysOn —— 指定数据同步链路,消除网络抖动导致的提交延迟问题的相关文章

SQLSERVER 2012之AlwaysOn -- 同步模式下的网卡性能优化

本文是基于上一篇<SQLServer 2012之AlwaysOn -- 指定数据同步链路,消除网络抖动导致的提交延迟问题>的问题继续进行优化:具体背景请参照上文:     前后折腾了一个多月,最近终于把这块难啃的骨头搞定了.问题只是出在网卡的高级功能上:     解决方案:关闭网卡的高级功能Jumbo Mtu和Large Send Offload V2     问题分析:根据Broadcom Ethernet 网络适配器的解释 Jumbo Mtu Jumbo Mtu 属性允许网络适配器发送和接

SQLSERVER 2012之AlwaysOn -- 一次硬件升级引发的问题

原文:SQLSERVER 2012之AlwaysOn -- 一次硬件升级引发的问题 这是上周遇到的一个案例:对已有的硬件进行升级而引发的问题,期间还触发了一个比较严重的BUG,可谓多灾多难:不过值得庆幸的是,在一连串连锁问题出现的时候,并没有出现人工操作失误(这往往是在处理故障中风险最高.影响最大的问题)而扩大故障影响范围: ==========================华丽丽的分割线========================== 先说一下环境: 我做的是跨机房3节点alwayson

SQL Sever AlwaysOn的数据同步原理

1. SQL Server AlwaysOn数据同步基本工作 AlwaysOn 副本同步需要完成三件事: 1.把主副本上发生的数据变化记录下来. 2.把这些记录传输到各个辅助副本. 3.把数据变化在辅助副本上同样完成一遍. 这3件工作主要由以下4个线程完成 Log Writer线程:当任何一个SQL用户提交一个数据修改事务时,它会负责把记录本次修改的日志信息先记入一段内存中的日志缓冲区,然后再写入物理日志文件(日志固化). Log Scanner工作线程:位于主副本所在SQL Server上.这

多台服务器之间如何让sqlserver,mysql数据库进行数据同步?

服务器存储视频,带宽不够用,想用多台服务器,如何让所有服务器之间视频实时同步,可以用什么软件!当企业租用服务器,但是在数据同步的时候,又有着严格的要求,要求数据达到一致,在科技发达的今天,这又该如何做到了?下面天下数据为大家介绍多台服务器之间让数据同步的方法! 1.采用高可用sureHA软件镜像型,一台主服务器,一台备服务器,通过心跳线(网线)实时将数据备份,实现服务器双机互备的功能,此方式保证多台服务器之间数据的一致性. 2.采用高可用sureHA双机热备共享型.一台主服务器,一台备服务器,链

使用Sqlserver事务发布实现数据同步(zhuanqian)

事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布订阅的方式简要介绍一下操作流程,一方面做个总结备份,一方面与大家进行一下分享和交流.费话就不多说了,进入一下今天的正题:) 这里要说明一下环境:首先我在本地局域网内有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着2008下创建的事务或快照发布,无法被

Sqlserver事务发布实现数据同步

事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这 里以sqlserver2008的事务发布功能为例,对发布订阅的方式简要介绍一下操作流程,一方面做个总结备份,一方面与大家进行一下分享和交流.费话 就不多说了,进入一下今天的正题:) 这里要说明一下环境:首先我在本地局域网内有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着 2008下创建的事务或快照发布,

使用Sqlserver事务发布实现数据同步

事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布订阅的方式简要介绍一下操作流程,一方面做个总结备份,一方面与大家进行一下分享和交流.费话就不多说了,进入一下今天的正题:) 这里要说明一下环境:首先我在本地局域网内有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着2008下创建的事务或快照发布,无法被

SqlServer调用外部程序实现数据同步

首先创建两个数据库:SyncA是数据源,SyncB是对SyncA进行同步的数据库. 在SyncA和SyncB中分别创建Source表和Target表,实际业务中,两张表的结构大多不相同.     然后创建一个类库的项目:MySync(注意项目的版本,Sql08不支持的.net 4.0及更高版本) 下面是同步程序代码: using System; using System.Data; using System.Data.Sql; using Microsoft.SqlServer.Server;

SQLServer与Oracle的数据同步(触发器trigger)

说到同步,其实是靠"作业"定时调度存储过程来操作数据,增,删,改,全在里面,结合触发器,游标来实现,关于作业调度,使用了5秒运行一次来实行"秒级作业",这样基本就算比较快的"同步" 做的是SQL Server往Oracle端同步,先在sql server上建立往Oracle端的链接服务器,我用一个视图"封装"了一下链接服务器下的一张表. create view v_ora_PUBLISHLASTREC as select *