SQL Server 2017 AlwaysOn AG 自动初始化(八)

监控自动种子设定

  •  系统动态管理视图

sys.dm_hadr_automatic_seeding

在主要副本上,查询 sys.dm_hadr_automatic_seeding 以检查自动种子设定过程的状态。 对于每个种子设定过程,该视图都将返回一行。 例如:

SELECT start_time,
    completion_time,
    is_source,
    current_state,
    failure_state,
    failure_state_desc,
    error_code
FROM sys.dm_hadr_automatic_seeding

sys.dm_hadr_physical_seeding_stats

在主要副本上,查询 sys.dm_hadr_physical_seeding_stats DMV 以查看当前运行的每个种子设定过程的物理统计信息。 种子设定正在运行时,以下查询将返回多行:

SELECT local_database_name,
    role_desc,
    internal_state_desc,
    transfer_rate_bytes_per_second,
    transferred_size_bytes,
    database_size_bytes,
    start_time_utc,
    end_time_utc, estimate_time_complete_utc,
    total_disk_io_wait_time_ms,
    total_network_wait_time_ms,
    is_compression_enabled
FROM sys.dm_hadr_physical_seeding_stats
  • 错误日志
  • 扩展事件

下表列出了与自动种子设定相关的扩展事件:


属性


描述


hadr_db_manager_seeding_request_msg


种子设定请求消息


hadr_physical_seeding_backup_state_change


物理种子设定备份端状态更改


hadr_physical_seeding_restore_state_change


物理种子设定还原端状态更改


hadr_physical_seeding_forwarder_state_change


物理种子设定转发器端状态更改


hadr_physical_seeding_forwarder_target_state_change


物理种子设定转发器目标端状态更改


hadr_physical_seeding_submit_callback


物理种子设定提交回调事件


hadr_physical_seeding_failure


物理种子设定失败事件


hadr_physical_seeding_progress


物理种子设定进度事件


hadr_physical_seeding_schedule_long_task_failure


物理种子设定计划长任务失败事件


hadr_automatic_seeding_start


在提交自动种子设定操作时发生


hadr_automatic_seeding_state_transition


在自动种子设定操作更改状态时发生


hadr_automatic_seeding_success


在自动种子设定操作成功时发生


hadr_automatic_seeding_failure


在自动种子设定操作失败时发生


hadr_automatic_seeding_timeout


在自动种子设定操作超时时发生

创建扩展事件

CREATE EVENT SESSION [DirectSeed] ON SERVER
ADD EVENT sqlserver.hadr_ar_controller_debug(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_automatic_seeding_failure(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_automatic_seeding_start(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_automatic_seeding_state_transition(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_automatic_seeding_success(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_automatic_seeding_timeout(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack))
ADD TARGET package0.event_file(SET filename=N'C:\XE\DirectSeed.xel',max_rollover_files=(10))
GO
 
CREATE EVENT SESSION [PhysicalSeed] ON SERVER
ADD EVENT sqlserver.hadr_physical_seeding_backup_state_change(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_physical_seeding_failure(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_physical_seeding_forwarder_state_change(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_physical_seeding_forwarder_target_state_change(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_physical_seeding_progress(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_physical_seeding_restore_state_change(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_physical_seeding_schedule_long_task_failure(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.hadr_physical_seeding_submit_callback(
    ACTION(sqlserver.database_id,sqlserver.sql_text,sqlserver.tsql_stack))
ADD TARGET package0.event_file(SET filename=N'C:\XE\PhysicalSeed',max_rollover_files=(10))
GO
 
ALTER EVENT SESSION [DirectSeed] ON SERVER STATE = START
ALTER EVENT SESSION [PhysicalSeed] ON SERVER STATE = START

分析扩展事件

IF OBJECT_ID('tempdb..#DirectSeed') IS NOT NULL
   DROP TABLE [#DirectSeed];
 
CREATE TABLE [#DirectSeed]
       (
         [ID] INT IDENTITY(1, 1)
                  NOT NULL ,
         [EventXML] XML ,
         CONSTRAINT [PK_DirectSeed] PRIMARY KEY CLUSTERED ( [ID] )
       );
 
INSERT  [#DirectSeed]
        ( [EventXML] )
SELECT  CONVERT(XML, [event_data]) AS [EventXML]
FROM    [sys].[fn_xe_file_target_read_file]('C:\XE\DirectSeed*.xel', NULL, NULL, NULL)
 
CREATE PRIMARY XML INDEX [DirectSeedXML] ON [#DirectSeed]([EventXML]);
 
CREATE XML INDEX [DirectSeedXMLPath] ON [#DirectSeed]([EventXML])
USING XML INDEX [DirectSeedXML] FOR VALUE;
 
SELECT
[ds].[EventXML].[value]('(/event/@name)[1]', 'VARCHAR(MAX)') AS [event_name],                     
[ds].[EventXML].[value]('(/event/@timestamp)[1]', 'DATETIME2(7)') AS [event_time],
[ds].[EventXML].[value]('(/event/data[@name="debug_message"]/value)[1]', 'VARCHAR(8000)') AS [debug_message],
/*hadr_automatic_seeding_state_transition*/
[ds].[EventXML].[value]('(/event/data[@name="previous_state"]/value)[1]', 'VARCHAR(8000)') AS [previous_state],
[ds].[EventXML].[value]('(/event/data[@name="current_state"]/value)[1]', 'VARCHAR(8000)') AS [current_state],
/*hadr_automatic_seeding_start*/
[ds].[EventXML].[value]('(/event/data[@name="operation_attempt_number"]/value)[1]', 'BIGINT') as [operation_attempt_number],
[ds].[EventXML].[value]('(/event/data[@name="ag_id"]/value)[1]', 'VARCHAR(8000)') AS [ag_id],
[ds].[EventXML].[value]('(/event/data[@name="ag_db_id"]/value)[1]', 'VARCHAR(8000)') AS [ag_id],
[ds].[EventXML].[value]('(/event/data[@name="ag_remote_replica_id"]/value)[1]', 'VARCHAR(8000)') AS [ag_remote_replica_id],
/*hadr_automatic_seeding_success*/
[ds].[EventXML].[value]('(/event/data[@name="required_seeding"]/value)[1]', 'VARCHAR(8000)') AS [required_seeding],
/*hadr_automatic_seeding_timeout*/
[ds].[EventXML].[value]('(/event/data[@name="timeout_ms"]/value)[1]', 'BIGINT') as [timeout_ms],
/*hadr_automatic_seeding_failure*/
[ds].[EventXML].[value]('(/event/data[@name="failure_state"]/value)[1]', 'BIGINT') as [failure_state],
[ds].[EventXML].[value]('(/event/data[@name="failure_state_desc"]/value)[1]', 'VARCHAR(8000)') AS [failure_state_desc]
FROM [#DirectSeed] AS [ds]
ORDER BY [ds].[EventXML].[value]('(/event/@timestamp)[1]', 'DATETIME2(7)') DESC

原文地址:http://blog.51cto.com/ultrasql/2129247

时间: 2024-08-01 18:53:51

SQL Server 2017 AlwaysOn AG 自动初始化(八)的相关文章

SQL Server 2017 AlwaysOn AG 自动初始化(十四)

功能性测试 测试自动种子设定对SQL Server 2017数据文件磁盘布局要求的变化 由于生产环境存放数据文件可能位于不同的卷上,且实例名也不同,那么数据文件的完整路径就不同.为了能实现自动种子设定,重设默认数据路径,满足对2017磁盘布局的要求. 假设主实例默认路径为c:\data\,辅助实例默认路径为d:\data\ 主实例文件位置 SQL Server 2016辅助实例文件位置 SQL Server 2017辅助实例文件位置 C:\data\ C:\data\ D:\data\ C:\d

SQL Server 2017 AlwaysOn AG 自动初始化(九)

SQL Server VDI备份原理分析 SQL Server提供了虚拟设备接口(VDI)API,用于帮助独立的应用程序提供商,支持将SQL Server的备份和恢复操作集成到他们的产品中.这些API设计为提供最大可靠性和性能,支持所有的备份和恢复功能,包括所有的热备和快照备份能力. 在早期SQL Server版本,VDI备份需要3个线程来完成备份.一个控制线程来接收备份命令,两个辅助线程来处理VDI完成和元数据流活动. 需要的VDI线程数 = (文件在卷上的数据库数) * 3 而在新的SQL

SQL Server 2017 AlwaysOn AG 自动初始化(四)

查看数据库同步进度 如果数据库在为自动种子设定配置的可用性组中,你可以查询 sys.dm_hadr_automatic_seeding 系统视图来监视种子设定进度. 对于处于为自动种子设定配置的可用性组中的每个副本的每个数据库,以下查询都返回一行. 在主副本上执行 SELECT start_time, ag.name, db.database_name, current_state, performed_seeding, failure_state, failure_state_desc FRO

SQL Server 2017 AlwaysOn AG 自动初始化(七)

在现有可用性组上启用某个辅助副本的自动种子设定 在主副本上执行 ALTER AVAILABILITY GROUP [<availability_group_name>]     MODIFY REPLICA ON '<secondary_node>'     WITH (SEEDING_MODE = AUTOMATIC) GO 前一命令将强制数据库重启种子设定.例如,如果种子设定因辅助副本磁盘空间不足而失败,可在添加可用空间后再重启种子设定. 原文地址:http://blog.51

SQL Server 2017 AlwaysOn AG 自动初始化(十三)

其他需要知道的事情 在自动种子设定期间事务日志不能被截断 自动种子设定延迟日志截断.如果主副本上数据库负载很高,那么将显著产生大量日志,那么可能有填满日志文件的风险.当然大多数情况下日志文件设置为自动增长,没有设置限制,也要监控在自动种子设定期间日志文件所在磁盘空间的使用情况. Sys.databases视图的LOG_REUSE_WAIT_DESC列反应了延迟日志截断的原因.然而,当由于自动种子设定而延迟事务截断时,LOG_REUSE_WAIT_DESC列的值为"NOTHING",表示

[AlwaysOn Availability Groups]SQL Server错误日志(AG)

SQL Server错误日志(AG) SQL Server错误日志会记录影响AG的时间,比如: 1.和Windows故障转移集群交互 2.可用副本的状态 3.可用数据的状态 4.AG endpoint的状态 5.AG Listener的状态 6.SQL Server resource DLL和SQL Server实例的租用状态 7.AG的错误事件 出现以下状态就需要检查错误日志: 1.无法连接到可用性数据库 2.非预料的AG故障转移 3.AG的Resolving状态不可预期 4.AG在不其确定的

SQL Server 2016 AlwaysOn 安装及配置介绍

SQL Server 2016  AlwaysOn 安装及配置介绍 Always On 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案. SQL Server 2012 中引入了 Always On 可用性组功能,此功能可最大程度地提高一组用户数据库对企业的可用性. "可用性组" 针对一组离散的用户数据库(称为"可用性数据库" ,它们共同实现故障转移)支持故障转移环境. 一个可用性组支持一组读写主数据库以及一至八组对应的辅助数据库. (

在Linux上使用mssql-conf工具配置SQL Server 2017

mssql-conf是在Linux上安装SQL Server 2017后的一个配置脚本.你可以使用这个实用工具设置以下参数: Agent 启用SQL Server代理 Collation 设置一个新的排序规则 Customer feedback 选择是否发送反馈给微软 Database Mail Profile 设置默认数据库邮件配置 Default data directory 修改新的数据文件的默认路径 Default log directory 修改新的日志文件的默认路径 Default

SQL Server 2017 高可用性

可用性功能的使用方式主要有以下四种: 高可用性 灾难恢复 迁移和升级 扩大一个或多个数据库的可读副本 SQL Server 可用性功能不能替换对经过充分测试的可靠备份和还原策略的需求,后者是所有可用性解决方案最基本的构建基块. AlwaysOn 可用性组 SQL Server 2012 中引入的 AlwaysOn 可用性组将数据库的每个事务发送到另一个实例,从而提供数据库级别的保护,该实例称为副本,其中包含处于特定状态的数据库副本. 副本之间的数据移动可以是同步的或异步的,Enterprise