Solución de problemas de Always On en SQL Server
Este artículo le ayuda a resolver el problema común sobre la configuración de AlwaysOn en SQL Server.
Nota:
Para ver una experiencia guiada de este artículo, consulte Solución de problemas de SQL Server AlwaysOn.
Versión original del producto: SQL Server 2012 Enterprise, SQL Server 2014 Enterprise, SQL Server 2016 Enterprise
Número de KB original: 10179
Notas importantes
Los datos css de Microsoft indican que un porcentaje significativo de problemas de los clientes a menudo se soluciona en una CU publicada, pero no se aplica de forma proactiva y, por lo tanto, recomienda la instalación continua y proactiva de las RU a medida que estén disponibles. Para obtener más información, vea Anuncio de actualizaciones del modelo de mantenimiento incremental (ISM) de SQL Server.
Para comprobar las CPU más recientes que pueden estar disponibles para su versión, consulte Cómo determinar la versión, la edición y el nivel de actualización de SQL Server y sus componentes.
Puede ver Herramientas útiles para solucionar problemas y supervisar grupos de disponibilidad AlwaysOn en Guía de solución de problemas y supervisión de grupos de disponibilidad AlwaysOn para obtener más información sobre las herramientas que puede usar para diagnosticar diferentes tipos de problemas y para supervisar grupos de disponibilidad. La guía también tiene escenarios adicionales que no se pueden tratar en este tutorial guiado.
El nodo primario de la documentación de grupos de disponibilidad AlwaysOn y proporciona una referencia única para varias preguntas, consulte Grupos de disponibilidad AlwaysOn (SQL Server).
Necesito punteros para configurar y configurar grupos de disponibilidad AlwaysOn
Si busca documentación sobre cómo configurar la configuración de AlwaysOn, consulte los siguientes documentos:
Introducción a los grupos de disponibilidad AlwaysOn (SQL Server): el documento proporciona respuestas a muchas preguntas que puede tener sobre los grupos de disponibilidad y la configuración. Siguiendo todos los pasos de este artículo y revisando requisitos previos, restricciones y recomendaciones para grupos de disponibilidad AlwaysOn (SQL Server) le ayudarán a evitar muchos problemas que puede experimentar con la configuración y el mantenimiento de grupos de disponibilidad en su entorno.
Recursos adicionales
- Paso a paso: Crear un grupo de disponibilidad AlwaysOn de SQL Server 2012
- Guías de arquitectura AlwaysOn
- Vínculo externo: Grupos de disponibilidad AlwaysOn de SQL Server
Si esta información no es útil, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Tengo problemas para configurar grupos de disponibilidad AlwaysOn
Los problemas de configuración típicos incluyen grupos de disponibilidad AlwaysOn deshabilitados, las cuentas están configuradas incorrectamente, el punto de conexión de creación de reflejo de la base de datos no existe, el punto de conexión es inaccesible (error de SQL Server 1418), el acceso a la red no existe y se produce un error en un comando de combinación de base de datos (error 35250 de SQL Server). Revise el siguiente documento para obtener ayuda sobre cómo solucionar estos problemas:
Solucionar problemas de configuración de grupos de disponibilidad AlwaysOn (SQL Server)
Vínculo adicional: Corrección: Error 41009 al intentar crear varios grupos de disponibilidad
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Tengo problemas con la configuración del agente de escucha (19471, 19476 y otros errores)
Uno de los problemas de configuración más comunes que encuentran los clientes es la creación del agente de escucha del grupo de disponibilidad. Los errores son similares a los siguientes:
-
Msg 19471, Nivel 16, Estado 0, Línea 2El clúster WSFC no pudo traer el recurso Nombre de red con el nombre DNS '' en línea. Es posible que se haya tomado el nombre DNS o que haya un conflicto con los servicios de nombres existentes, o que el servicio de clúster WSFC no esté en ejecución o que no sea accesible. Use otro nombre DNS para resolver conflictos de nombres o compruebe el registro del clúster de WSFC para obtener más información.
-
Mensaje 19476, Nivel 16, Estado 4, Línea 2El intento de crear el nombre de red y la dirección IP para el agente de escucha produjo un error. Es posible que el servicio WSFC no se esté ejecutando o que no sea accesible en su estado actual, o los valores proporcionados para el nombre de red y la dirección IP pueden ser incorrectos. Compruebe el estado del clúster de WSFC y valide el nombre de red y la dirección IP con el administrador de red.
La mayoría de las veces, los errores de creación del agente de escucha que producen los mensajes anteriores se deben a la falta de permisos para que el objeto de nombre de clúster (CNO) de Active Directory cree y lea el objeto de equipo del agente de escucha. Para solucionar este problema, revise los artículos siguientes:
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
La conmutación automática por error no funciona según lo previsto
Si observa que la conmutación automática por error no funciona según lo previsto durante las pruebas o en producción, consulte: Solución de problemas de conmutación automática por error en entornos alwaysOn de SQL Server 2012.
La configuración incorrecta de Errores máximos en el período especificado es una de las causas principales de la conmutación por error principal no automáticamente a la secundaria. El valor predeterminado de esta configuración es N-1, donde N es el número de réplicas. Para más información, consulte El límite máximo de errores del clúster de conmutación por error (grupo).
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Tengo problemas para conectarse a grupos de disponibilidad AlwaysOn
Después de configurar el agente de escucha del grupo de disponibilidad para un grupo de disponibilidad AlwaysOn en SQL Server 2012, es posible que no pueda hacer ping al agente de escucha o conectarse a él desde una aplicación. Puede obtener un error similar al siguiente:
Sqlcmd: Error: Microsoft SQL Native Client: el tiempo de espera de inicio de sesión ha expirado.
Para solucionar estos errores y similares, revise lo siguiente:
- Error de tiempo de espera y no se puede conectar a un agente de escucha de grupo de disponibilidad AlwaysOn de SQL Server 2012 en un entorno de varias subredes
- Tiempos de expiración de conexión en un grupo de disponibilidad con varias subredes.
Más vínculos de información:
- Una actualización presenta compatibilidad con las características AlwaysOn de SQL Server 2012 o una versión posterior para the.NET Framework 3.5 SP1
- Agrupación en clústeres de varias subredes de SQL Server (SQL Server)
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Tengo problemas para configurar grupos de disponibilidad AlwaysOn en mi máquina virtual de Azure (IaaS)
Se producen muchos problemas relacionados con AlwaysOn debido a una configuración incorrecta del agente de escucha. Si tiene problemas de conexión con el agente de escucha,
Asegúrese de leer todas las limitaciones del agente de escucha de ILB y de seguir todos los pasos descritos en el siguiente artículo con especial atención a la configuración de dependencias, la dirección IP y otros parámetros en el script de PowerShell.
Si no está seguro, es posible que desee eliminar y volver a crear el agente de escucha según el documento anterior.
Si recientemente ha movido la máquina virtual a un servicio diferente o si las direcciones IP han cambiado, debe actualizar el valor del recurso de dirección IP para reflejar la nueva dirección y debe volver a crear el punto de conexión de carga equilibrada para el grupo de disponibilidad. Puede actualizar la dirección IP mediante los
Get
comandos oSet
como se indica a continuación:Get-ClusterResource "IPResourceName" | Set-ClusterParameter -name Address -value "w.x.y.z"
Documentos recomendados:
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Tarda mucho tiempo en conmutar por error de principal a secundario o viceversa
Después de una conmutación por error automática o manual planeada sin pérdida de datos en un grupo de disponibilidad, es posible que el tiempo de conmutación por error supere su objetivo de tiempo de recuperación (RTO). Para solucionar problemas de las causas y posibles soluciones, consulte Solución de problemas: RTO superado por el grupo de disponibilidad.
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Los cambios en la réplica principal no se reflejan ni se replican lentamente en la réplica secundaria.
Es posible que observe que los cambios en la réplica principal no se propagan a la secundaria de forma oportuna. Para solucionar estos problemas y resolverlos, pruebe lo siguiente:
Para entornos de SQL Server 2012 y SQL Server 2014, consulte FIX: Slow synchronization when disks have different sector sizes for primary and secondary replica log files in SQL Server AG and Logshipping environments.
Compruebe si los nodos secundarios están en estado Pausado en el administrador del clúster.
Consulte Solución de problemas: Los cambios en la réplica principal no se reflejan en la réplica secundaria.
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Administración del tamaño del registro de transacciones para las bases de datos de grupo de disponibilidad
Puede reducir los tamaños del registro de transacciones configurando copias de seguridad normales en servidores principales o secundarios.
Revise los temas siguientes para obtener información adicional:
- Descarga de copias de seguridad admitidas en réplicas secundarias de un grupo de disponibilidad
- Realización de copias de seguridad del registro de transacciones mediante réplicas secundarias de solo lectura del grupo de disponibilidad AlwaysOn: parte 1
Si esta información no es útil, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Los servidores principales o secundarios alcanzaron el estado de resolución o experimenta conmutaciones por error inesperadas
Compruebe los registros de eventos del sistema y la aplicación en busca de problemas de hardware y otros errores y trabaje con el proveedor para corregirlos.
Si usa máquinas virtuales, compruebe su base de conocimiento para ver si hay algún problema notificado recientemente que pueda contribuir al problema. Por ejemplo, la pérdida de paquetes grande en el nivel de sistema operativo invitado en la VMXNET3 vNIC en ESXi (2039495) ha causado problemas con la configuración del grupo de disponibilidad en algunos casos.
Más información:
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
No se pueden conectar los recursos
Compruebe si las bases de datos tardan mucho tiempo en recuperarse revisando los mensajes en el Registro de errores de SQL.
Si el problema sigue existiendo, consulte Más información sobre los grupos de disponibilidad AlwaysOn.
Preguntas más frecuentes
¿Es posible tener dos agentes de escucha para un grupo de disponibilidad?
Sí, puede configurar varios agentes de escucha para el mismo grupo de disponibilidad. Consulte Creación de varios agentes de escucha para el mismo grupo de disponibilidad (Goden Yao).
¿Es posible tener una tarjeta NIC independiente para el tráfico siempre en el tráfico y la conectividad del cliente?
Sí, puede tener una tarjeta NIC dedicada para el tráfico AlwaysOn. Consulte Configuración del grupo de disponibilidad para comunicarse en una red dedicada.
¿Qué ediciones admiten instancias de clúster de conmutación por error AlwaysOn?
Este tema de los Libros en pantalla de SQL Server tiene más información: Ediciones y características admitidas para SQL Server 2016.
¿Cómo recuperarse en caso de error en todos los nodos del clúster?
Consulte Recuperación ante desastres de WSFC a través del cuórum forzado (SQL Server).
¿Dónde puedo encontrar información sobre la compatibilidad con transacciones distribuidas en configuraciones de AG?
Consulte Transacciones: grupos de disponibilidad y creación de reflejo de la base de datos.
¿Cómo actualizar las configuraciones de AlwaysOn?
Consulte Actualización de instancias de réplica de grupo de disponibilidad AlwaysOn.
¿Cómo agregar la base de datos habilitada para TDE (Cifrado de datos transparente) a la configuración del grupo de disponibilidad?
Para agregar la base de datos habilitada para TDE al grupo de disponibilidad, consulte Configuración de AlwaysOn para una base de datos TDE.
¿Cómo configurar alertas para comprobar si la base de datos secundaria está retrasada detrás de la principal?
Puede usar el siguiente script:
SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.database_id AS database_id, is_ag_replica_local = CASE WHEN ar_state.is_local = 1 THEN N'LOCAL' ELSE 'REMOTE' END, ag_replica_role = CASE WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED' ELSE ar_state.role_desc END, dr_state.last_hardened_lsn, dr_state.last_hardened_time, datediff(s,last_hardened_time, getdate()) AS 'seconds behind primary' FROM (( sys.availability_groups AS ag JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id) JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id) JOIN sys.dm_hadr_database_replica_states dr_state ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
¿Cómo recibir alertas si el estado de la base de datos no está sincronizado?
Puede usar el siguiente script:
SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.database_id AS database_id, is_ag_replica_local = CASE WHEN ar_state.is_local = 1 THEN N'LOCAL' ELSE 'REMOTE' END, ag_replica_role = CASE WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED' ELSE ar_state.role_desc END, ar_state.connected_state_desc, ar.availability_mode_desc, dr_state.synchronization_state_desc FROM (( sys.availability_groups AS ag JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id ) JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id) JOIN sys.dm_hadr_database_replica_states dr_state ON ag.group_id = dr_state.group_id AND dr_state.replica_id = ar_state.replica_id
También puede revisar los vínculos siguientes para ver métodos adicionales para supervisar grupos AlwaysOn:
Administración basada en directivas para problemas operativos con grupos de disponibilidad AlwaysOn
Vínculo externo: Uso de la administración basada en directivas para alertas de pérdida de datos de grupos de disponibilidad de SQL Server
Comportamiento del testigo dinámico en clústeres de conmutación por error de Windows Server 2012 R2