-
察看AG group的面板,察看AG组是否正常,如果面板显示正常执行2的步骤,面板显示异常的请根据异常提示来执行操作,本篇内容不涉及处理这些异常
执行以下语句
点击(此处)折叠或打开
-
select n.group_name,
n.replica_server_name,
n.node_name,
rs.role_desc,
CASE WHEN rs.is_local = 1 THEN N'LOCAL' ELSE 'REMOTE' END as is_local,
DB_NAME(drs.database_id) as 'database_name',
rs.connected_state_desc,
CASE WHEN drs.is_suspended=0 THEN 'RESUMED' ELSE
CASE WHEN drs.suspend_reason_desc='SUSPEND_FROM_USER' THEN '用户手动挂起数据移动'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_PARTNER' THEN '在强制故障转移后挂起数据库副本'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_REDO' THEN '在重做阶段中出错'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_APPLY' THEN '在将日志写入文件时出错(请参阅错误日志)'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_CAPTURE' THEN '在捕获主副本上的日志时出错'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_RESTART' THEN '在重新启动数据库前挂起数据库副本(请参阅错误日志)'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_UNDO' THEN '在撤消阶段中出错(请参阅错误日志)'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_REVALIDATION' THEN '在重新连接时检测到了日志更改不匹配(请参阅错误日志)'
WHEN drs.suspend_reason_desc='SUSPEND_FROM_XRF_UPDATE' THEN '找不到公共日志点(请参阅错误日志)'
ELSE '' END
END as is_suspended, --是否数据库挂起及原因
drs.synchronization_state_desc,
drs.synchronization_health_desc,
ISNULL(drs.log_send_queue_size,0) as log_send_queue_size, --主数据库中尚未发送到辅助数据库的日志记录量 (KB)
ISNULL(drs.redo_queue_size,0) as redo_queue_size, --辅助副本的日志文件中尚未重做的日志记录量 (KB)
CASE WHEN ISNULL(drs.log_send_rate,0)=0 THEN 0
ELSE CAST(ISNULL(drs.log_send_queue_size,0)*1./ISNULL(drs.log_send_rate,0) AS DECIMAL(18,2))
END as log_send_need_time, --主数据库中日志记录发送完成需要时间(秒)
CASE WHEN ISNULL(drs.redo_rate,0)=0 THEN 0
ELSE CAST(ISNULL(drs.redo_queue_size,0)*1./ISNULL(drs.redo_rate,0) AS DECIMAL(18,2))
END as redo_need_time --辅助副本中日志记录重做完成需要时间(秒)
from sys.dm_hadr_availability_replica_cluster_nodes n
join sys.dm_hadr_availability_replica_cluster_states cs
on n.replica_server_name = cs.replica_server_name
join sys.dm_hadr_availability_replica_states rs
on rs.replica_id = cs.replica_id
join sys.dm_hadr_database_replica_states drs
on rs.replica_id=drs.replica_id
where rs.connected_state_desc<>'CONNECTED'
or drs.synchronization_health_desc<>'HEALTHY'
or drs.is_suspended<>0
or CASE WHEN ISNULL(drs.log_send_rate,0)=0 THEN 0 ELSE CAST(ISNULL(drs.log_send_queue_size,0)*1./ISNULL(drs.log_send_rate,0) AS DECIMAL(18,2)) END>100
connected_state_desc=CONNECTED
is_suspended=RESUMED
synchronization_state_desc=SYNCHRONIZING
synchronization_health_desc=HEALTHY
这几个表示
AG组运行正常,同步也在继续,即可以排除网络和磁盘读写的问题
一般这些问题排除后可以定位为人为操作造成的
3. 用以下语句察看当前blocked sql
点击(此处)折叠或打开
-
;with cte as (select replace(hostname,' ','') as hostname ,''''+replace(program_name,' ','')+'''' as program_name
, loginame, db_name(a.dbid) AS DBname,spid,blocked,waittime/1000 as waittime,a.status,a.lastwaittype,a.cmd
,Replace(substring(b.text,1,340),'''','''') as sqlmessage,cpu
from sys.sysprocesses as a with(nolock)
cross apply sys.dm_exec_sql_text(sql_handle) as b
where a.blocked>0 and sql_handle<>0x0000000000000000000000000000000000000000
and waittime>2000 )
select replace(hostname,' ','') as hostname ,''''+replace(program_name,' ','')+'''' as program_name
, loginame, db_name(a.dbid) AS DBname,spid,blocked,waittime/1000 as waittime,a.status,a.lastwaittype,a.cmd
,Replace(substring(b.text,1,340),'''','''') as sqlmessage,cpu
from sys.sysprocesses as a with(nolock)
cross apply sys.dm_exec_sql_text(sql_handle) as b
where exists(select blocked from cte where cte.blocked=a.spid)
and not exists (select spid from cte where cte.spid=a.spid)
union all
select * from cte
用脚本可以直接kill所有进程,供参考,
点击(此处)折叠或打开
-
USE master;
GO
DECLARE @SQL VARCHAR(MAX);
declare @i int;
set @i=3600 --大小可以先设置为redo_need_time(s)
SET @SQL=''
while @i>0
begin
SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID)
FROM master..sysprocesses
WHERE dbid=DB_ID('datayesdb');
EXEC(@SQL);
set @i=@i-1
print @i
end
waitfor delay '0:0:1'
5.打开另一查询窗口用2的语句时时监控alwayson的状态
一般来讲,以下几个值都会慢慢减小,如果还在增大可能需要继续判断是否是其他问题,此篇不做讨论
log_send_queue_size
redo_queue_size
log_send_need_time
redo_need_time
6.当AG恢复正常,需要去重新启用之前被kill的job
编辑推荐:
- 在线修复Alwayson的重做日至过大03-02
- monitor temp db usage for MSSQL03-02
- automatic generate create table sql03-02
- tmstamp monitor03-02
- DOS批处理命令实现自动复制指定的文件夹到其他位置03-02
- 电脑如何设置BIOS, 制作U盘启动盘03-02
- 视频监控系统工程的设计流程与深度03-02
- 3000元可以购买什么配置的电脑?03-02
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- DOS批处理命令实现自动复制指定的文件夹到其他位置
DOS批处理命令实现自动复制指定的文件夹到其他位置
26-03-02 - 电脑如何设置BIOS, 制作U盘启动盘
电脑如何设置BIOS, 制作U盘启动盘
26-03-02 - 3000元可以购买什么配置的电脑?
3000元可以购买什么配置的电脑?
26-03-02 - 总线制与分线制入侵报警系统建设教程
总线制与分线制入侵报警系统建设教程
26-03-02 - 不花钱让自己的电脑变为多台电脑的最低配置?
不花钱让自己的电脑变为多台电脑的最低配置?
26-03-02 - 一台十年前的台式电脑,升级M2 固态后速度能有多快
一台十年前的台式电脑,升级M2 固态后速度能有多快
26-03-02 - 如何安全扩展使用中电脑的C盘空间?
如何安全扩展使用中电脑的C盘空间?
26-03-02 - 电流互感器与电量仪接线工作原理及使用教程
电流互感器与电量仪接线工作原理及使用教程
26-03-02 - 工程控制设备-交流接触器工作原理及使用教程
工程控制设备-交流接触器工作原理及使用教程
26-03-02 - 介绍常见的信息化机房多回路供电方式解决措施
介绍常见的信息化机房多回路供电方式解决措施
26-03-02
