AlwaysOn 可用性组副本所在服务器以及该副本上数据库的各项状态信息

news2025/2/9 2:30:55

目录标题

    • AlwaysOn
    • 语句
      • 代码解释:
      • 1. `sys.dm_hadr_database_replica_states` 视图字段详细解释及官网链接
        • 官网链接
        • 字段解释
      • 2. `sys.availability_replicas` 视图字段详细解释及官网链接
        • 官网链接
        • 字段解释
    • 查看视图的创建语句
      • 方法一:使用 SQL Server Management Studio (SSMS)
      • 方法二:使用系统视图 `sys.sql_modules`
        • 代码解释:
      • 方法三:使用 `sp_helptext` 存储过程
        • 注意事项:
    • `[dbo].[ha_status]`
      • 1. 视图基本信息
      • 2. 视图定义
      • 3. 选择列及计算列
      • 4. 表连接
      • 总结
    • `[master].[dbo].[ha_status]` 的全面解释
      • 整体概述
      • 1. 查询语句部分
        • 各部分解释
      • 2. 视图 `[ha_status]` 各列详细解释
        • 标识信息
        • 故障转移相关
        • 副本角色与模式
        • 恢复时间与性能指标
        • 同步与状态信息
        • 其他信息
    • seeding
      • Seeding 的主要作用
      • 常见的 Seeding 状态及含义
        • 1. `NOT_STARTED`
        • 2. `IN_PROGRESS`
        • 3. `COMPLETED`
        • 4. `FAILED`
        • 5. `CANCELLED`
      • 查看 Seeding 状态的方法
        • 使用系统视图 `sys.dm_hadr_automatic_seeding`

AlwaysOn

SQL Server AlwaysOn通常不支持真正意义上的多主模式,主要以主从(主副本和辅助副本)结构为主,但在某些特定场景和配置下有一些类似多主的特性或功能变体,以下是具体分析:

  • 基本架构与原理
    • AlwaysOn的核心是基于数据库镜像和日志传送技术,主要支持主从架构。在这种架构中,主副本负责处理所有的读写操作,而辅助副本处于只读状态,主要用于数据冗余、故障转移和报表等辅助功能。辅助副本通过接收主副本发送的日志流来保持数据的同步。
  • 相关功能与限制
    • 可读辅助副本:在AlwaysOn中,可以将辅助副本配置为可读,允许在辅助副本上执行一些查询操作,分担部分读压力。但这并不等同于多主模式,因为辅助副本上的读写操作受到严格限制,仍然不能作为独立的主节点进行写操作。
    • 可用性组侦听器与多实例:虽然可以通过可用性组侦听器来实现多个实例的切换,但在任何时刻,只有一个主副本能够接受写操作,其他副本都是用于故障转移和数据同步的辅助角色,并不是真正的多主并行写入。
  • 特殊情况与实验性支持
    • 在Azure SQL Database等云环境下的某些特殊配置中,有类似于“多主”的功能,如Azure SQL Database的弹性池中的数据库可以在一定程度上实现跨区域的多主写入,但这与传统意义上的AlwaysOn本地部署的多主支持有很大区别,且是在特定的云环境和功能集下实现的。

Linux 上的 SQL Server 的可用性组 AlwaysOn

在这里插入图片描述

语句

sys.dm_hadr_database_replica_statessys.availability_replicas 视图关联起来,

SELECT 
    ar.replica_id,
    ar.replica_server_name,
    ar.endpoint_url,
    ar.failover_mode_desc,
    ar.availability_mode_desc,
    drs.database_id,
    drs.group_database_id,
    drs.is_local,
    drs.is_primary_replica,
    drs.synchronization_state,
    drs.synchronization_state_desc,
    drs.is_commit_participant,
    drs.synchronization_health,
    drs.synchronization_health_desc,
    drs.database_state,
    drs.database_state_desc,
    drs.is_suspended,
    drs.suspend_reason,
    drs.suspend_reason_desc,
    drs.recovery_lsn,
    drs.truncation_lsn,
    drs.last_sent_lsn,
    drs.last_sent_time,
    drs.last_received_lsn,
    drs.last_received_time,
    drs.last_hardened_lsn,
    drs.last_hardened_time,
    drs.last_redone_lsn,
    drs.last_redone_time,
    drs.log_send_queue_size,
    drs.log_send_rate,
    drs.redo_queue_size,
    drs.redo_rate,
    drs.filestream_send_rate,
    drs.end_of_log_lsn,
    drs.last_commit_lsn,
    drs.last_commit_time,
    drs.low_water_mark_for_ghosts,
    drs.secondary_lag_seconds,
    drs.quorum_commit_lsn,
    drs.quorum_commit_time
FROM 
    sys.availability_replicas ar
JOIN 
    sys.dm_hadr_database_replica_states drs ON ar.replica_id = drs.replica_id;

在这里插入图片描述
在这里插入图片描述

SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;

在这里插入图片描述

代码解释:

  1. sys.availability_replicas 视图

    • 该视图存储了 Always On 可用性组中每个副本的元数据信息。
    • replica_id:副本的唯一标识符。
    • replica_server_name:副本所在的 SQL Server 实例名称。
    • endpoint_url:副本的端点 URL,用于副本之间的通信。
    • failover_mode_desc:副本的故障转移模式描述,例如自动故障转移、手动故障转移等。
    • availability_mode_desc:副本的可用性模式描述,如同步提交、异步提交。
  2. sys.dm_hadr_database_replica_states 视图

    • 这是一个动态管理视图,提供了关于可用性组中数据库副本的实时状态信息。
    • 包含了你之前展示的众多列,如 database_idis_localis_primary_replica、同步状态相关列、日志序列号相关列等。
  3. JOIN 操作

    • 通过 JOIN 语句将 sys.availability_replicas 视图和 sys.dm_hadr_database_replica_states 视图根据 replica_id 进行关联。
    • 这样可以把副本的元数据信息(如副本所在服务器名称)和数据库副本的实时状态信息结合起来,让你既能确认 replica_id 对应的具体副本,又能查看该副本上数据库的详细状态。

1. sys.dm_hadr_database_replica_states 视图字段详细解释及官网链接

官网链接

sys.dm_hadr_database_replica_states (Transact - SQL)

字段解释
  • replica_id:可用性副本的唯一标识符,对应 sys.availability_replicas 中的 replica_id,用于关联两个视图。
  • group_id:可用性组的唯一标识符。
  • database_id:数据库的标识符,标识该副本中的数据库。
  • group_database_id:可用性组内数据库的唯一标识符。
  • is_local:指示该副本是否为本地副本。值为 1 表示是本地副本,0 表示不是。
  • is_primary_replica:指示该副本是否为主副本。1 表示主副本,0 表示辅助副本。
  • synchronization_state:数据库副本的同步状态的数字代码。例如 1 表示 SYNCHRONIZING(正在同步),2 表示 SYNCHRONIZED(已同步)等。
  • synchronization_state_desc:同步状态的文本描述,与 synchronization_state 代码对应。
  • is_commit_participant:指示该副本是否参与事务提交。1 表示参与,0 表示不参与。
  • synchronization_health:同步健康状态的数字代码。
  • synchronization_health_desc:同步健康状态的文本描述。
  • database_state:数据库状态的数字代码。
  • database_state_desc:数据库状态的文本描述。
  • is_suspended:指示该副本是否已暂停。1 表示暂停,0 表示未暂停。
  • suspend_reason:暂停原因的数字代码。
  • suspend_reason_desc:暂停原因的文本描述。
  • recovery_lsn:恢复日志序列号,指示数据库恢复的起始点。
  • truncation_lsn:截断日志序列号,指示可以截断日志的位置。
  • last_sent_lsn:主副本上最后发送到辅助副本的日志序列号。
  • last_sent_time:主副本上最后发送日志的时间。
  • last_received_lsn:辅助副本上最后接收到的日志序列号。
  • last_received_time:辅助副本上最后接收日志的时间。
  • last_hardened_lsn:辅助副本上最后持久化到磁盘的日志序列号。
  • last_hardened_time:辅助副本上最后持久化日志到磁盘的时间。
  • last_redone_lsn:辅助副本上最后重做的日志序列号。
  • last_redone_time:辅助副本上最后重做日志的时间。
  • log_send_queue_size:日志发送队列的大小(以字节为单位)。
  • log_send_rate:日志发送速率(以字节/秒为单位)。
  • redo_queue_size:重做队列的大小(以字节为单位)。
  • redo_rate:重做速率(以字节/秒为单位)。
  • filestream_send_rate:FileStream 数据的发送速率(以字节/秒为单位)。
  • end_of_log_lsn:日志末尾的日志序列号。
  • last_commit_lsn:最后提交事务的日志序列号。
  • last_commit_time:最后提交事务的时间。
  • low_water_mark_for_ghosts:幽灵记录的低水位标记。
  • secondary_lag_seconds:辅助副本相对于主副本的延迟秒数。
  • quorum_commit_lsn:法定提交的日志序列号。
  • quorum_commit_time:法定提交的时间。

2. sys.availability_replicas 视图字段详细解释及官网链接

官网链接

sys.availability_replicas (Transact - SQL)

字段解释
  • replica_id:可用性副本的唯一标识符,用于和 sys.dm_hadr_database_replica_states 视图进行关联。
  • group_id:可用性组的唯一标识符。
  • replica_metadata_id:副本的元数据标识符。
  • replica_server_name:承载该可用性副本的 SQL Server 实例的名称。
  • owner_sid:副本所有者的安全标识符。
  • endpoint_url:副本的端点 URL,用于副本之间的通信。
  • availability_mode:可用性模式的数字代码,例如 1 表示同步提交,2 表示异步提交。
  • availability_mode_desc:可用性模式的文本描述。
  • failover_mode:故障转移模式的数字代码,例如 1 表示自动故障转移,2 表示手动故障转移。
  • failover_mode_desc:故障转移模式的文本描述。
  • session_timeout:会话超时时间(以秒为单位)。
  • primary_role_allow_connections:主副本允许的连接类型的数字代码。
  • primary_role_allow_connections_desc:主副本允许的连接类型的文本描述。
  • secondary_role_allow_connections:辅助副本允许的连接类型的数字代码。
  • secondary_role_allow_connections_desc:辅助副本允许的连接类型的文本描述。
  • create_date:副本创建的日期和时间。
  • modify_date:副本最后修改的日期和时间。
  • backup_priority:备份优先级,值越高表示越优先进行备份。
  • read_only_routing_url:只读路由的 URL。
  • seeding_mode:种子设定模式的数字代码。
  • seeding_mode_desc:种子设定模式的文本描述。

查看视图的创建语句

在 SQL Server 中,有多种方法可以查看视图的创建语句,下面为你详细介绍:

方法一:使用 SQL Server Management Studio (SSMS)

  1. 连接到数据库引擎:打开 SSMS 并连接到相应的 SQL Server 实例。
  2. 展开数据库对象:在“对象资源管理器”中,展开“数据库”节点,找到包含目标视图的数据库并展开它。
  3. 找到目标视图:展开“视图”文件夹,找到你想要查看创建语句的视图。
  4. 查看创建脚本:右键单击该视图,选择“编写视图脚本为” -> “CREATE 到” -> “新查询编辑器窗口”。此时,SSMS 会在新的查询窗口中生成该视图的创建语句。

在这里插入图片描述

方法二:使用系统视图 sys.sql_modules

可以通过查询 sys.sql_modules 系统视图来获取视图的定义脚本。以下是具体的 SQL 示例:

-- 假设要查看的视图名为 YourViewName,数据库名为 YourDatabaseName
USE master;
SELECT 
    sm.definition
FROM 
    sys.sql_modules sm
JOIN 
    sys.objects o ON sm.object_id = o.object_id
WHERE 
    o.type = 'V' -- 'V' 表示视图
    AND o.name = 'ha_status';

在这里插入图片描述

代码解释:
  • sys.sql_modules 视图存储了数据库中所有模块(包括视图、存储过程、函数等)的定义文本。
  • sys.objects 视图包含了数据库中所有对象的元数据信息,通过 object_id 将两个视图关联起来。
  • o.type = 'V' 用于筛选出类型为视图的对象。
  • o.name = 'YourViewName' 用于指定要查看的具体视图名称。

方法三:使用 sp_helptext 存储过程

sp_helptext 是 SQL Server 提供的一个系统存储过程,可用于查看对象的定义文本,包括视图。示例如下:

-- 假设要查看的视图名为 YourViewName
EXEC sp_helptext 'ha_status';

在这里插入图片描述

注意事项:
  • 如果视图所在的数据库不是当前默认数据库,需要在视图名称前加上数据库名和架构名,例如 EXEC sp_helptext 'YourDatabaseName.dbo.YourViewName';
  • sp_helptext 会将视图的定义文本逐行显示,如果定义较长,可能会分行显示。

通过以上方法,你可以方便地查看 SQL Server 中视图的创建语句。

[dbo].[ha_status]

以下是对这个视图 [dbo].[ha_status] 创建语句的详细解释:

1. 视图基本信息

USE [master]
GO

/****** Object:  View [dbo].[ha_status]    Script Date: 2025/2/5 14:44:13 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER OFF
GO
  • USE [master]:指定当前使用的数据库为 master 数据库。
  • SET ANSI_NULLS ON:启用 ANSI 空值处理规则,即当比较操作涉及 NULL 值时,结果为 NULL
  • SET QUOTED_IDENTIFIER OFF:指定是否将双引号字符解释为分隔标识符或字符串文字。这里设置为 OFF 表示不严格遵循 SQL-92 标准,双引号可以用于字符串文字。

2. 视图定义

CREATE VIEW [dbo].[ha_status] AS

这行代码创建了一个名为 [dbo].[ha_status] 的视图,其中 dbo 是视图所属的架构。

3. 选择列及计算列

SELECT 
    [AG].[name] AS [AvailabilityGroupName],
    [AR].[replica_server_name] AS [AvailabilityReplicaServerName],
    [dbcs].[database_name] AS [AvailabilityDatabaseName],
    CASE
        WHEN  [dbcs].[database_name]  IS NULL THEN 1
        ELSE  ISNULL([dbcs].[is_failover_ready],0) 
    END AS [IsFailoverReady],
    ISNULL([arstates].[role_desc],3) AS [ReplicaRole],
    [AR].[availability_mode_desc] AS [AvailabilityMode],
    CASE [dbcs].[is_failover_ready]
        WHEN 1
        THEN 0
        ELSE ISNULL(DATEDIFF([ss],[dbr].[last_commit_time],[dbrp].[last_commit_time]),0)
    END AS [EstimatedDataLoss_(Seconds)],
    ISNULL(CASE [dbr].[redo_rate]
        WHEN 0
        THEN -1
        ELSE CAST([dbr].[redo_queue_size] AS FLOAT) / [dbr].[redo_rate]
    END,-1) AS [EstimatedRecoveryTime_(Seconds)],
    ISNULL([dbr].[is_suspended],0) AS [IsSuspended],
    ISNULL([dbr].[suspend_reason_desc],'-') AS [SuspendReason],
    ISNULL([dbr].[synchronization_state_desc],0) AS [SynchronizationState],
    ISNULL([dbr].[last_received_time],0) AS [LastReceivedTime],
    ISNULL([dbr].[last_redone_time],0) AS [LastRedoneTime],
    ISNULL([dbr].[last_sent_time],0) AS [LastSentTime],
    ISNULL([dbr].[log_send_queue_size],-1) AS [LogSendQueueSize],
    ISNULL([dbr].[log_send_rate],-1) AS [LogSendRate_KB/S],
    ISNULL([dbr].[redo_queue_size],-1) AS [RedoQueueSize_KB],
    ISNULL([dbr].[redo_rate],-1) AS [RedoRate_KB/S],
    ISNULL(CASE [dbr].[log_send_rate]
        WHEN 0
        THEN -1
        ELSE CAST([dbr].[log_send_queue_size] AS FLOAT) / [dbr].[log_send_rate]
    END,-1) AS [SynchronizationPerformance],
    ISNULL([dbr].[filestream_send_rate],-1) AS [FileStreamSendRate],
    ISNULL([dbcs].[is_database_joined],0) AS [IsJoined],
    [arstates].[is_local] AS [IsLocal],
    ISNULL([dbr].[last_commit_lsn],0) AS [LastCommitLSN],
    ISNULL([dbr].[last_commit_time],0) AS [LastCommitTime],
    ISNULL([dbr].[last_hardened_lsn],0) AS [LastHardenedLSN],
    ISNULL([dbr].[last_hardened_time],0) AS [LastHardenedTime],
    ISNULL([dbr].[last_received_lsn],0) AS [LastReceivedLSN],
    ISNULL([dbr].[last_redone_lsn],0) AS [LastRedoneLSN]

这部分代码定义了视图返回的列,包括从不同系统表中选取的列以及一些计算列:

  • CASE 语句用于根据不同条件进行值的计算和判断,例如 [IsFailoverReady][EstimatedDataLoss_(Seconds)] 列。
  • ISNULL 函数用于处理可能的 NULL 值,当列值为 NULL 时,使用指定的默认值。
  • 计算列如 [EstimatedRecoveryTime_(Seconds)][SynchronizationPerformance] 是通过对其他列进行数学运算得到的。

4. 表连接

FROM [master].[sys].[availability_groups] AS [AG]
LEFT JOIN [master].[sys].[availability_replicas] AS [AR] ON [AR].[group_id] = [AG].[group_id]
LEFT JOIN [master].[sys].[dm_hadr_database_replica_cluster_states] AS [dbcs] ON [dbcs].[replica_id] = [AR].[replica_id]
LEFT OUTER JOIN [master].[sys].[dm_hadr_database_replica_states] AS [dbr] ON [dbcs].[replica_id] = [dbr].[replica_id]
    AND [dbcs].[group_database_id] = [dbr].[group_database_id]
LEFT OUTER JOIN (
    SELECT
        [drs].[database_id],
        [drs].[replica_id],
        [drs].[last_commit_time]
    FROM [master].[sys].[dm_hadr_database_replica_states] AS [drs]
    WHERE [drs].[is_primary_replica] = 1
) AS [dbrp] ON [dbr].[database_id] = [dbrp].[database_id]
LEFT JOIN [master].[sys].[dm_hadr_availability_replica_states] AS [arstates] ON [arstates].[replica_id] = [AR].[replica_id];

这部分代码通过多个 LEFT JOIN 操作将不同的系统表连接起来,以获取所需的数据:

  • [master].[sys].[availability_groups]:包含可用性组的信息。
  • [master].[sys].[availability_replicas]:包含可用性副本的信息。
  • [master].[sys].[dm_hadr_database_replica_cluster_states]:包含数据库副本在集群中的状态信息。
  • [master].[sys].[dm_hadr_database_replica_states]:包含数据库副本的详细状态信息。
  • [master].[sys].[dm_hadr_availability_replica_states]:包含可用性副本的状态信息。

子查询 [dbrp] 用于筛选出主副本的 last_commit_time 信息,以便计算数据丢失估计时间。

总结

这个视图 [dbo].[ha_status] 主要用于汇总 SQL Server Always On 可用性组的相关状态信息,包括可用性组名称、副本服务器名称、数据库名称、故障转移准备情况、数据丢失估计、恢复时间估计、同步状态等,方便管理员监控和管理可用性组。

[master].[dbo].[ha_status] 的全面解释

以下是对这个查询语句以及相关视图 [master].[dbo].[ha_status] 的全面解释:

整体概述

此查询语句的作用是从 [master].[dbo].[ha_status] 视图中选取前 1000 条记录,获取 SQL Server Always On 可用性组的详细状态信息,这些信息对于监控和管理可用性组的健康状况、性能表现以及故障转移能力等方面具有重要意义。

1. 查询语句部分

SELECT TOP (1000) 
    [AvailabilityGroupName],
    [AvailabilityReplicaServerName],
    [AvailabilityDatabaseName],
    [IsFailoverReady],
    [ReplicaRole],
    [AvailabilityMode],
    [EstimatedDataLoss_(Seconds)],
    [EstimatedRecoveryTime_(Seconds)],
    [IsSuspended],
    [SuspendReason],
    [SynchronizationState],
    [LastReceivedTime],
    [LastRedoneTime],
    [LastSentTime],
    [LogSendQueueSize],
    [LogSendRate_KB/S],
    [RedoQueueSize_KB],
    [RedoRate_KB/S],
    [SynchronizationPerformance],
    [FileStreamSendRate],
    [IsJoined],
    [IsLocal],
    [LastCommitLSN],
    [LastCommitTime],
    [LastHardenedLSN],
    [LastHardenedTime],
    [LastReceivedLSN],
    [LastRedoneLSN]
FROM [master].[dbo].[ha_status];
各部分解释
  • SELECT TOP (1000):指定查询结果仅返回前 1000 条记录。当视图中的数据量较大时,使用 TOP 关键字可以限制返回的数据量,避免返回过多数据导致性能问题或显示不便。
  • 列选择:明确列出了要从视图中选取的列,这些列涵盖了可用性组、副本、数据库的各种状态和性能指标。
  • FROM [master].[dbo].[ha_status]:指定查询的数据来源为 [master] 数据库中 [dbo] 架构下的 [ha_status] 视图。

2. 视图 [ha_status] 各列详细解释

标识信息
  • AvailabilityGroupName:可用性组的名称,用于唯一标识一个 Always On 可用性组。通过该名称可以区分不同的可用性组,方便管理员对多个可用性组进行管理和监控。
  • AvailabilityReplicaServerName:可用性副本所在的 SQL Server 实例名称。每个可用性组可以包含多个副本,分布在不同的服务器上,该列用于标识副本所在的具体服务器。
  • AvailabilityDatabaseName:可用性组中数据库的名称,表明该记录所涉及的具体数据库。
故障转移相关
  • IsFailoverReady:表示该数据库副本是否已准备好进行故障转移。值为 1 表示准备好,0 表示未准备好。此指标对于评估可用性组的高可用性至关重要,当主副本出现故障时,只有准备好的辅助副本才能顺利接管工作。
  • EstimatedDataLoss_(Seconds):估计的数据丢失时间(以秒为单位)。在故障转移过程中,如果辅助副本与主副本之间存在数据延迟,可能会导致部分数据丢失,该指标用于估算可能丢失的数据对应的时间范围。
副本角色与模式
  • ReplicaRole:副本的角色,如主副本、辅助副本等。不同的角色具有不同的功能和职责,主副本负责处理读写操作,辅助副本则用于数据备份和故障转移。
  • AvailabilityMode:可用性模式,例如同步提交或异步提交。同步提交模式下,主副本在确认事务提交之前会等待辅助副本将事务日志写入磁盘,确保数据的一致性;异步提交模式则不等待,性能较高但可能存在数据丢失的风险。
恢复时间与性能指标
  • EstimatedRecoveryTime_(Seconds):估计的恢复时间(以秒为单位),表示辅助副本在发生故障后恢复到可用状态所需的大致时间。该指标可以帮助管理员评估故障恢复的效率和影响范围。
  • LogSendQueueSize:日志发送队列的大小,反映了主副本等待发送到辅助副本的事务日志的数量。队列过大可能表示网络延迟或辅助副本处理能力不足。
  • LogSendRate_KB/S:日志发送速率(以 KB/秒为单位),衡量主副本向辅助副本发送事务日志的速度。该指标可以反映网络带宽和系统性能对日志传输的影响。
  • RedoQueueSize_KB:重做队列的大小,即辅助副本等待重做的事务日志的数量。队列过大可能导致辅助副本与主副本之间的延迟增加。
  • RedoRate_KB/S:重做速率(以 KB/秒为单位),表示辅助副本重做事务日志的速度。该指标反映了辅助副本处理日志的能力。
  • SynchronizationPerformance:同步性能指标,通过日志发送队列大小和日志发送速率计算得出,用于评估主副本和辅助副本之间的同步效率。
同步与状态信息
  • IsSuspended:表示该数据库副本是否已暂停。值为 1 表示暂停,0 表示正常运行。暂停副本可能是由于维护、故障排查等原因。
  • SuspendReason:如果副本已暂停,该列显示暂停的原因,方便管理员了解情况并采取相应的措施。
  • SynchronizationState:副本的同步状态,如正在同步、已同步等。同步状态反映了副本与主副本之间的数据一致性程度。
  • LastReceivedTime:辅助副本最后一次接收到主副本发送的事务日志的时间,用于监控日志接收的及时性。
  • LastRedoneTime:辅助副本最后一次重做事务日志的时间,结合 LastReceivedTime 可以分析辅助副本处理日志的延迟情况。
  • LastSentTime:主副本最后一次发送事务日志的时间,用于监控主副本的日志发送情况。
其他信息
  • FileStreamSendRate:FileStream 数据的发送速率,对于使用 FileStream 功能存储大型二进制数据的数据库,该指标可以反映数据传输的性能。
  • IsJoined:表示数据库是否已加入到可用性组中。值为 1 表示已加入,0 表示未加入。
  • IsLocal:表示该副本是否为本地副本。
  • LastCommitLSN:最后提交事务的日志序列号(LSN),用于标识事务的顺序和位置。
  • LastCommitTime:最后提交事务的时间。
  • LastHardenedLSN:最后持久化到磁盘的日志序列号。
  • LastHardenedTime:最后持久化日志到磁盘的时间。
  • LastReceivedLSN:最后接收到的日志序列号。
  • LastRedoneLSN:最后重做的日志序列号。

通过这些信息,管理员可以全面了解 Always On 可用性组的运行状态,及时发现潜在的问题并采取相应的措施,确保数据库的高可用性和数据的一致性。

seeding

在 SQL Server Always On 可用性组的上下文中,“seeding”(种子设定)是将主副本上的数据库数据初始复制到辅助副本的过程。Seeding 状态反映了这个数据初始化过程的当前情况。下面为你详细介绍相关内容:

Seeding 的主要作用

在创建新的辅助副本或者将新数据库加入到可用性组时,需要将主副本上的数据和日志文件复制到辅助副本上,让辅助副本与主副本的数据保持一致,以便后续进行正常的数据同步和故障转移。Seeding 提供了一种自动化、高效的方式来完成这个初始数据复制过程。

常见的 Seeding 状态及含义

1. NOT_STARTED
  • 含义:种子设定过程尚未开始。这可能是因为管理员还没有触发种子设定操作,或者正在等待必要的条件满足,例如网络连接、权限等。
  • 可能的原因
    • 手动种子设定模式下,管理员还未执行相关的种子设定命令。
    • 自动种子设定模式下,可能存在一些先决条件未满足,如端点配置不正确、防火墙阻止了通信等。
2. IN_PROGRESS
  • 含义:种子设定过程正在进行中。此时,主副本正在将数据库的数据和日志文件复制到辅助副本。
  • 监控要点:可以通过查看相关的系统视图和性能指标来监控种子设定的进度,如 sys.dm_hadr_automatic_seeding 视图中的 transfer_rate_bytes_per_second 列可以显示当前的数据传输速率,total_data_bytesbytes_sent 列可以用于计算传输进度。
3. COMPLETED
  • 含义:种子设定过程已成功完成。辅助副本已经接收到主副本上的所有数据和日志文件,并且数据处于一致状态,可以开始正常的同步过程。
  • 后续操作:种子设定完成后,辅助副本会开始与主副本进行日志同步,以保持数据的实时一致性。
4. FAILED
  • 含义:种子设定过程失败。可能是由于各种原因导致复制过程中断,如网络故障、磁盘空间不足、权限问题等。
  • 排查方法:可以查看 sys.dm_hadr_automatic_seeding 视图中的 failure_message 列,获取详细的失败信息,根据错误信息进行相应的排查和修复。
5. CANCELLED
  • 含义:种子设定过程被手动取消。管理员可以在种子设定过程中根据需要取消操作。
  • 后续处理:如果需要重新进行种子设定,需要重新触发种子设定操作。

查看 Seeding 状态的方法

使用系统视图 sys.dm_hadr_automatic_seeding
SELECT 
    ag.name AS availability_group_name,
    ar.replica_server_name,
    ads.*
FROM 
    sys.dm_hadr_automatic_seeding ads
JOIN 
    sys.availability_replicas ar ON ads.ag_replica_id = ar.replica_id
JOIN 
    sys.availability_groups ag ON ar.group_id = ag.group_id;

这个查询可以获取每个可用性组和副本的种子设定状态信息,帮助管理员监控和管理种子设定过程。

通过了解 Seeding 状态,管理员可以及时发现并解决种子设定过程中出现的问题,确保可用性组的顺利部署和运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2295030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ip地址是手机号地址还是手机地址

在数字化生活的浪潮中,IP地址、手机号和手机地址这三个概念如影随形,它们各自承载着网络世界的独特功能,却又因名称和功能的相似性而时常被混淆。尤其是“IP地址”这一术语,经常被错误地与手机号地址或手机地址划上等号。本文旨在…

zephyr devicetree

Syntax and structure — Zephyr Project Documentation Input files There are four types of devicetree input files: sources (.dts) includes (.dtsi) overlays (.overlay) bindings (.yaml) The devicetree files inside the zephyr directory look like this: …

学习笔记:机器学习中的数学原理(一)

1. 集合 集合分为有限集和无限集; 对于有限集,两集合元素数相等即为等势; 对于无限集,两集合元素存在一一映射关系即为等势; 无限集根据是否与正整数集等势分为可数集和不可数集。 2. sigmoid函数(也叫…

鼠标滚轮冒泡事件@wheel.stop

我有一个页面,是在画布上的组件,但是组件中有一个table,table中数据多了,就会出现滚动条,正常情况下,滚动条用鼠标滚轮就可以滑动,但是这个table是在画布上,滚动滚轮会让画布缩放 在table外层的div上加上 wheel.stop,就生效了 wheel.stop 用途:这个修饰符用于处理鼠…

代码随想录算法【Day38】

Day38 322. 零钱兑换 思路 完全背包 代码 class Solution { public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount 1, INT_MAX);dp[0] 0;for (int i 0; i < coins.size(); i) { // 遍历物品for (int j coins[i]; j <…

51单片机之冯·诺依曼结构

一、概述 8051系列单片机将作为控制应用最基本的内容集成在一个硅片上&#xff0c;其内部结构如图4-1所示。作为单一芯片的计算机&#xff0c;它的内部结构与一台计算机的主机非常相似。其中微处理器相当于计算机中的CPU&#xff0c;由运算器和控制器两个部分构成&#xff1b;…

02.07 TCP服务器与客户端的搭建

一.思维导图 二.使用动态协议包实现服务器与客户端 1. 协议包的结构定义 首先&#xff0c;是协议包的结构定义。在两段代码中&#xff0c;pack_t结构体都被用来表示协议包&#xff1a; typedef struct Pack {int size; // 记录整个协议包的实际大小enum Type type; …

【CubeMX+STM32】SD卡 文件系统读写 FatFs+SDIO+DMA

本篇&#xff0c;将使用CubeMXKeil&#xff0c;创建一个SD卡的 FatFSSDIODMA 文件系统读写工程。 目录 一、简述 二、CubeMX 配置 FatFSSDIO DMA 三、Keil 编辑代码 四、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、简述 上两篇&#xff0c;已循序渐进讲解了SD、…

51单片机之使用Keil uVision5创建工程以及使用stc-isp进行程序烧录步骤

一、Keil uVision5创建工程步骤 1.点击项目&#xff0c;新建 2.新建目录 3.选择目标机器&#xff0c;直接搜索at89c52选择&#xff0c;然后点击OK 4.是否添加起吊文件&#xff0c;一般选择否 5.再新建的项目工程中添加文件 6.选择C文件 7.在C文件中右键&#xff0c;添加…

aws(学习笔记第二十七课) 使用aws API Gateway+lambda体验REST API

aws(学习笔记第二十七课) 使用aws API Gatewaylambda体验REST API 学习内容&#xff1a; 使用aws API Gatewaylambda 1. 使用aws API Gatewaylambda 作成概要 使用api gateway定义REST API&#xff0c;之后再接收到了http request之后&#xff0c;redirect到lambda进行执行。…

5 前端系统开发:Vue2、Vue3框架(上):Vue入门式开发和Ajax技术

文章目录 前言一、Vue框架&#xff08;简化DOM操作的一个前端框架&#xff09;&#xff1a;基础入门1 Vue基本概念2 快速入门&#xff1a;创建Vue实例&#xff0c;初始化渲染&#xff08;1&#xff09;创建一个入门Vue实例&#xff08;2&#xff09;插值表达式&#xff1a;{{表…

快速在wsl上部署学习使用c++轻量化服务器-学习笔记

知乎上推荐的Tinywebserver这个服务器&#xff0c;快速部署搭建&#xff0c;学习c服务器开发 仓库地址 githubhttps://link.zhihu.com/?targethttps%3A//github.com/qinguoyi/TinyWebServerhttps://link.zhihu.com/?targethttps%3A//github.com/qinguoyi/TinyWebServer 在…

2025年Android NDK超全版本下载地址

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

React 设计模式:实用指南

React 提供了众多出色的特性以及丰富的设计模式&#xff0c;用于简化开发流程。开发者能够借助 React 组件设计模式&#xff0c;降低开发时间以及编码的工作量。此外&#xff0c;这些模式让 React 开发者能够构建出成果更显著、性能更优越的各类应用程序。 本文将会为您介绍五…

B站自研的第二代视频连麦系统(上)

导读 本系列文章将从客户端、服务器以及音视频编码优化三个层面&#xff0c;介绍如何基于WebRTC构建视频连麦系统。希望通过这一系列的讲解&#xff0c;帮助开发者更全面地了解 WebRTC 的核心技术与实践应用。 背景 在文章《B站在实时音视频技术领域的探索与实践》中&#xff…

使用Python实现PDF与SVG相互转换

目录 使用工具 使用Python将SVG转换为PDF 使用Python将SVG添加到现有PDF中 使用Python将PDF转换为SVG 使用Python将PDF的特定页面转换为SVG SVG&#xff08;可缩放矢量图形&#xff09;和PDF&#xff08;便携式文档格式&#xff09;是两种常见且广泛使用的文件格式。SVG是…

[渗透测试]热门搜索引擎推荐— — shodan篇

[渗透测试]热门搜索引擎推荐— — shodan篇 免责声明&#xff1a;本文仅用于分享渗透测试工具&#xff0c;大家使用时&#xff0c;一定需要遵守相关法律法规。 除了shodan&#xff0c;还有很多其他热门的&#xff0c;比如&#xff1a;fofa、奇安信的鹰图、钟馗之眼等&#xff0…

基于物联网技术的智能寻车引导系统方案:工作原理、核心功能及系统架构

本文专为IT技术员、软件开发工程师及智能停车领域专业人士打造&#xff0c;旨在深入剖析智能寻车引导系统的构建与优化过程。如需获取详细解决方案可前往文章最下方获取&#xff0c;如有项目需求及技术合作可私信作者。 智能寻车引导系统是一种集智能化、自动化于一体的停车管理…

【React】合成事件语法

React 合成事件是 React 为了处理浏览器之间的事件差异而提供的一种跨浏览器的事件系统。它封装了原生的 DOM 事件&#xff0c;提供了一致的事件处理机制。 合成事件与原生事件的区别&#xff1a; 合成事件是 React 自己实现的&#xff0c;封装了原生事件。合成事件依然可以通…

Redis02 - 持久化

Redis持久化 文章目录 Redis持久化一&#xff1a;持久化简介1&#xff1a;Redis为什么要进行持久化2&#xff1a;Redis持久化的方式 二&#xff1a;RDB持久化介绍1&#xff1a;手动触发RDB2&#xff1a;自动触发RDB3&#xff1a;redis.conf中进行RDB的配置4&#xff1a;RDB优缺…