Der Failover-Server hat den Status (Spiegeln, Nicht verbunden, In Wiederherstellung) und der Hauptserver den Status (Prinzipal, Nicht verbunden).
Wie werden diese Server wieder verbunden?
Der Failover-Server hat den Status (Spiegeln, Nicht verbunden, In Wiederherstellung) und der Hauptserver den Status (Prinzipal, Nicht verbunden).
Wie werden diese Server wieder verbunden?
Antworten:
Manchmal wird dies durch einen Neustart des Spiegelungsendpunkts auf dem Hauptserver behoben.
Verwenden Sie dazu das folgende T-SQL.
ALTER ENDPOINT Endpoint_Name STATE = STOPPED
ALTER ENDPOINT Endpoint_Name STATE = STARTED
Um den Namen des Endpunkts zu erhalten.
SELECT * FROM sys.endpoints
WHERE type = 4
Weitere Informationen finden Sie in KB 2490051 .
Versuchen Sie zunächst, sie dazu zu bringen, sich wieder mit diesem T-SQL-Befehl auf dem Principal zu verbinden:
ALTER DATABASE AdventureWorks2012 SET PARTNER RESUME;
Wenn dies fehlschlägt, liegt ein Kommunikationsproblem zwischen dem Schulleiter und dem Spiegel vor, und hier beginnt der Spaß. Dies kann alles sein, von IP-Konnektivität über Sicherheit auf den Spiegelungsendpunkten bis hin zu verschiedenen Verschlüsselungsmethoden. Ich würde Robert Davis 'Buch Pro SQL Server 2008 Mirroring empfehlen, wenn Sie sich eingehend mit der Fehlerbehebung befassen müssen.
In unserem Fall verwenden wir die Zertifikatauthentifizierung zum Verbinden von Spiegelungsendpunkten. Das Problem bestand darin, dass eines der von den Spiegelungsendpunkten verwendeten Zertifikate abgelaufen war.
Sie können das Ablaufdatum des Zertifikats überprüfen, das an der Endpunktauthentifizierung beteiligt ist, indem Sie a
SELECT * FROM sys.certificates
Wenn dies der Fall ist, müssen Sie neue Zertifikate für alle abgelaufenen Zertifikate erstellen und diese ALTER ENDPOINT
nach dem Import ausführen.
Ich habe dieses Problem durch die nächsten Schritte behoben. Ein Neustart des Endpunkts nur auf PRIMARY hat nicht geholfen
Auf PRIMARY:
SELECT * FROM sys.endpoints WHERE type = 4
ALTER ENDPOINT Mirroring STATE = STOPPED
ALTER ENDPOINT Mirroring STATE = STARTED
Auf SPIEGEL:
SELECT * FROM sys.endpoints WHERE type = 4
ALTER ENDPOINT Mirroring STATE = STOPPED
ALTER ENDPOINT Mirroring STATE = STARTED
Zurück auf PRIMARY:
ALTER DATABASE PACXDSite SET PARTNER RESUME;
Fall:
Wenn Sie den folgenden Befehl auf dem Hauptserver ausführen:
alter database 'Database_Name' set partner off
Nachdem Sie den obigen Befehl ausgeführt haben, wird Ihre Datenbank [mirror, disconnected]
auf dem Spiegelserver in den Status versetzt.
Auflösung:
Schritt 1: Führen Sie die folgende Abfrage auf dem Spiegel aus
exec sp_resetstatus 'Database_Name'
Schritt 2: Nachdem Sie den folgenden Befehl ausgeführt haben, ist Ihre Datenbank verfügbar.
restore database 'Database_Name' with recovery
Hinweis: Die Wiederherstellung von Schritt 2 dauert einige Zeit.
Wenn "RESUME PARTNER" nicht funktioniert
ALTER DATABASE AdventureWorks2016 SET PARTNER RESUME;
Ich würde den Spiegel für diese Datenbank (en) brechen und sie neu konfigurieren.
--STEP 1 ON PRINCIPAL, brechen Sie den Spiegel für eine Datenbank
ALTER DATABASE AdventureWorks2016 SET PARTNER OFF;
--STEP 2 ON MIRROR, brechen Sie den Spiegel für eine Datenbank
ALTER DATABASE AdventureWorks2016 SET PARTNER OFF;
- SCHRITT 3 AUF SPIEGEL
RESTORE LAST FULL BACKUP DATABASE WITH NO RECOVERY
RESTORE TRAN BACKUP DATABASE WITH NO RECOVERY
- SCHRITT 4 AUF SPIEGEL
ALTER DATABASE AdventureWorks2016 SET PARTNER = 'TCP://PRINCIPAL.MyDomain.COM:5022';
- SCHRITT 5 ZUM PRINZIP
ALTER DATABASE AdventureWorks2016 SET PARTNER = 'TCP://MIRROR.MyDomain.COM:5022';
- SCHRITT 6 AUF PRINZIP, wenn bereits ein ZEUGNIS konfiguriert wurde
ALTER DATABASE AdventureWorks2016 SET WITNESS = 'TCP://WITNESS.MyDomain.COM:5022';
Es ist erwähnenswert, dass alle oben genannten Aufgaben während der Arbeitszeit ausgeführt werden können, da die Hauptdatenbank immer online und verfügbar ist.