Il server di failover ha lo stato (Mirror, Disconnected, In recovery) e il server principale ha lo stato (Main, Disconnected).
Qual è il processo per riconnettere questi server?
Il server di failover ha lo stato (Mirror, Disconnected, In recovery) e il server principale ha lo stato (Main, Disconnected).
Qual è il processo per riconnettere questi server?
Risposte:
A volte il riavvio dell'endpoint del mirroring sul server principale risolverà questo problema.
Per fare questo usa il seguente T-SQL.
ALTER ENDPOINT Endpoint_Name STATE = STOPPED
ALTER ENDPOINT Endpoint_Name STATE = STARTED
Per ottenere il nome dell'endpoint.
SELECT * FROM sys.endpoints
WHERE type = 4
Vedere KB 2490051 per maggiori dettagli.
Innanzitutto, prova a farli riconnettere con questo comando T-SQL sull'entità:
ALTER DATABASE AdventureWorks2012 SET PARTNER RESUME;
Se fallisce, hai un problema di comunicazione tra il principale e il mirror, ed è qui che inizia il divertimento. Può essere qualsiasi cosa, dalla connettività IP alla sicurezza sugli endpoint del mirroring a diversi metodi di crittografia. Consiglierei il libro di Robert Davis Pro SQL Server 2008 Mirroring se hai bisogno di approfondire la risoluzione dei problemi.
Nel nostro caso utilizziamo l'autenticazione con certificato per connettere endpoint di mirroring e il problema era dovuto al fatto che uno dei certificati utilizzati dagli endpoint di mirroring era scaduto.
È possibile controllare la data di scadenza del certificato coinvolto nell'autenticazione dell'endpoint facendo un
SELECT * FROM sys.certificates
In questo caso, dovrai creare nuovi certificati per qualsiasi cosa scaduta, quindi esegui ALTER ENDPOINT
dopo che sono stati importati.
Ho risolto questo problema con i passaggi successivi, il riavvio dell'endpoint solo su PRIMARY non ha aiutato
Su PRIMARY:
SELECT * FROM sys.endpoints WHERE type = 4
ALTER ENDPOINT Mirroring STATE = STOPPED
ALTER ENDPOINT Mirroring STATE = STARTED
Su SPECCHIO:
SELECT * FROM sys.endpoints WHERE type = 4
ALTER ENDPOINT Mirroring STATE = STOPPED
ALTER ENDPOINT Mirroring STATE = STARTED
Di nuovo su PRIMARY:
ALTER DATABASE PACXDSite SET PARTNER RESUME;
Astuccio:
Quando si esegue il comando seguente sul server principale:
alter database 'Database_Name' set partner off
Dopo aver eseguito il comando precedente, il DB passa in [mirror, disconnected]
stato sul server mirror.
Risoluzione:
Passaggio 1: eseguire la query di seguito sul mirror
exec sp_resetstatus 'Database_Name'
Passaggio 2: dopo aver eseguito il comando seguente, il DB sarà disponibile.
restore database 'Database_Name' with recovery
Nota: il passaggio 2 richiederà del tempo per il ripristino.
Se "RIPRENDI PARTNER" non funziona
ALTER DATABASE AdventureWorks2016 SET PARTNER RESUME;
Vorrei spezzare il mirror per quel database (s) e riconfigurarlo.
- PASSAGGIO 1 SU PRINCIPALE, interrompere il mirror per un database
ALTER DATABASE AdventureWorks2016 SET PARTNER OFF;
- PASSO 2 SU SPECCHIO, rompere il mirror per un database
ALTER DATABASE AdventureWorks2016 SET PARTNER OFF;
- PASSO 3 SU SPECCHIO
RESTORE LAST FULL BACKUP DATABASE WITH NO RECOVERY
RESTORE TRAN BACKUP DATABASE WITH NO RECOVERY
- PASSO 4 SU SPECCHIO
ALTER DATABASE AdventureWorks2016 SET PARTNER = 'TCP://PRINCIPAL.MyDomain.COM:5022';
- PASSO 5 SUL PRINCIPALE
ALTER DATABASE AdventureWorks2016 SET PARTNER = 'TCP://MIRROR.MyDomain.COM:5022';
- PASSAGGIO 6 SU PRINCIPALE, se era già stato configurato un TESTIMONE
ALTER DATABASE AdventureWorks2016 SET WITNESS = 'TCP://WITNESS.MyDomain.COM:5022';
Vale la pena ricordare che tutto quanto sopra può essere fatto durante l'orario di lavoro poiché il database principale sarà sempre online e disponibile.