web-dev-qa-db-fra.com

L'instance SQL mobile manuellement sur un autre nœud provoque un basculement de miroir de base de données immédiat

J'ai un cluster SQL à deux nœuds (2008 R2).

Certaines des bases de données de cette instance SQL sont reflétées vers un autre serveur sur un site distant, en utilisant la sécurité élevée avec un basculement automatique. La valeur du délai d'expiration de connexion de miroir pour ces bases de données est définie à 90 secondes.

Lorsque je déplace SQL d'un nœud dans le cluster vers un autre nœud, vous utilisez l'option de "déplacez ce service ou d'application sur un autre nœud de Failover Cluster Manager". Les bases de données reflétées échouent instantanément au miroir.

Ceci est un comportement indésirable. Ma raison pour la définition de la valeur du délai d'expiration de connexion de miroir est que je veux seulement échouer au miroir de la base de données si le cluster échoue complètement et qu'il n'y a pas de nœuds de fonctionnement.

Y'a-t-il une quelconque façon de réussir cela? Il semble que cela soit possible, sinon le concept de mélange de clustering et de mise en miroir automatique de la base de données de basculement serait impraticable car chaque basculement de nœud au sein du cluster déclencherait un basculement de miroir.

Merci.

5
paulH

Une façon d'empêcher le basculement du miroir est:

  1. Pause miroir avec ALTER DATABASE XYZ SET PARTNER SUSPEND
  2. Déplacer l'instance SQL
  3. Reprendre la mise en miroir avec ALTER DATABASE XYZ SET PARTNER RESUME

L'instance échoue au miroir car le témoin et le secondaire ne peuvent plus voir l'instance principale.

On dirait que vous essayez de recréer des groupes de disponibilité SQL Server 2012 en combinant miroir et clustering.

Database miroir uniquement des délais sur des erreurs dits "douces". Les erreurs difficiles, comme une grappe ayant échoué, sont signalées à la session de mise en miroir provoquant immédiatement le basculement immédiat. En savoir plus à http://msdn.microsoft.com/en-us/library/ms190913.cells

Les causes possibles des erreurs difficiles incluent (mais ne se limitent pas à) les conditions suivantes:

A broken connection or wire

A bad network card

A router change

Changes in the firewall

Endpoint reconfiguration

Loss of the drive where the transaction log resides

Operating system or process failure

Les conditions susceptibles de provoquer des délais de mise en miroir comprennent (mais ne se limitent pas à) ce qui suit:

Network errors such as TCP link time-outs, dropped or corrupted packets, 
    or packets that are in an incorrect order.

A hanging operating system, server, or database state.

A Windows server timing out.

Insufficient computing resources, such as a CPU or disk overload, the transaction 
    log filling up, or the system is running out of memory or threads. In these 
    cases, you must increase the time-out period, reduce the workload, or change 
    the hardware to handle the workload. 

Pour plus d'informations sur la mise en miroir et les problèmes potentiels, vous voudrez peut-être voir ma question Qu'est-ce qui peut provoquer une session de mise en miroir à l'initiative, puis le basculement? SQL Server 2005

5
Max Vernon

Cela se passe parce que le serveur répond à la réaction, mais le point d'extrémité de miroir est en panne. Le partenaire et le témoin obtiennent une réponse du système d'exploitation que le port que le point final est terminé est fermé et démarre immédiatement le basculement. Le délai d'attente s'applique au moment où aucune réponse n'est reçue de l'hôte par opposition à: "Le port que vous recherchez n'écoute plus" "réponse.

Pour contourner ce problème, vous devez soit suspendre la session de miroir comme Max suggérées ou, si vous êtes également préoccupé par le basculement de grappes non planifiées, désactivez le basculement automatique comme Swasheck suggéré et échoue manuellement sur le miroir en cas de besoin.

2
cfradenburg