Wie in anderen Antworten erwähnt:
Datenbankspiegelung im alten Stil und AlwaysOn im neuen Stil benötigen Threads, und mit 2000 Datenbanken werden Ihnen definitiv die Threads ausgehen. Ich erinnere mich sehr daran, dass die praktische Grenze weit unter 200 Datenbanken liegt. (Irgendwo gibt es ein Whitepaper dazu, aber ich bin zu faul, um es jetzt zu suchen, und diese Antwort ist bereits sehr lang.) Natürlich sind das 200 Datenbanken pro Instanz. Theoretisch könnten Sie 20 Instanzen starten und 100 Datenbanken auf jeder Instanz ausführen. Das alles zu verwalten wäre ein Aufwand, und ich vermute, dass das Verwalten des Speichers zwischen all diesen Instanzen Kopfschmerzen bereiten würde.
Die SQL Server-Replikation (Replizieren von Tabellen (oder Teilmengen von Tabellen) anstelle von Dateien) ist nicht wirklich für DR gedacht. Selbst für einige Datenbanken ist die Einrichtung und Verwaltung schwierig. Möglicherweise müssen Sie Ihr Datenmodell ändern, damit es funktioniert. Dies kann Änderungen an Ihrer App bedeuten. Sie benötigen eine automatisierte Methode, um dieselbe Replikationskonfiguration auf jede Ihrer 2000 (vermutlich identischen oder nahezu identischen) Datenbanken anzuwenden. Die gespeicherten Prozeduren, die Sie zum Konfigurieren der Replikation verwenden müssen, sind unübersichtlich. Die Verwaltung von 2000 Datenbanken, die für die Replikation über die GUI konfiguriert sind, wäre ein Albtraum. Wenn Sie ein Failover durchführen, müssen Sie möglicherweise Änderungen vornehmen, damit alles wieder funktioniert. Die Failover-Zeit ist nicht, wenn Sie knifflige Änderungen oder Arbeiten vornehmen möchten, die Sie vermeiden können. Sie möchten alles so schnell wie möglich wieder zum Laufen bringen.
Die Replikation zwischen SAN-Speichereinheiten kann teuer sein, insbesondere wenn es sich um Hardware eines Unternehmens wie EMC handelt. Sobald Sie mit einem Anbieter beginnen, sind Sie mit ihm verheiratet, um Upgrades, Wartung, zusätzlichen Speicherplatz usw. zu erhalten.
Vorschlag Nr. 1:
Haben Sie sich so etwas wie Steeleyes DataKeeper angesehen? Es handelt sich um ein softwarebasiertes Replikationsprodukt, das auf Ihren Servern ausgeführt wird und Windows Failover Clustering nutzt. Ich habe es nie benutzt und habe keine Verbindung zur Firma, außer ein paar Hund-und-Pony-Shows durchzusitzen. Es sieht ideal für Ihre Situation aus.
Vorschlag Nr. 2:
Wenn ich es wäre und ich absolut kein Budget hätte, würde ich mir ein selbst entwickeltes Holzversandsystem ansehen. Ich habe Zweifel, dass der integrierte Protokollversand mit 2000 Datenbanken sehr gut umgehen kann. Es ist nicht so schwer, ein Protokollversandsystem zu schreiben, und es kann alle Probleme lösen, die für Ihre Umgebung spezifisch sind. (Möglicherweise müssen Sie die Dateien per SFTP an Ihre DR-Site senden.)
Grundsätzlich besteht das System aus drei Teilen. Jeder Teil muss regelmäßig ausgeführt werden:
Ein Teil führt die Transaktionsprotokollsicherungen durch und legt die tlog-Sicherungsdateien für jede Datenbank in einem anderen Ordner ab (für die Skalierung des Dateisystems). Ich würde den Wartungsassistenten dafür nicht verwenden. Ich habe gesehen, dass er zu oft wackelig wird und anfängt, Datenbanken zu überspringen und sich im Allgemeinen schlecht zu benehmen. Wenn Sie eine 30-minütige Garantie gewähren möchten, wird diese möglicherweise alle 15 Minuten ausgeführt.
Ein Teil kopiert die Sicherungsdateien aus dem Staging-Bereich auf Ihre DR-Site. Dies kann so einfach sein wie eine Robocopy-CMD-Datei, wenn Sie über ein VPN zu Ihrem DR verfügen. Sie können ein Paket oder ein Powershell-Skript schreiben, wenn Sie etwas ausgefalleneres benötigen (sftp oder ssh / scp oder zip / unzip, wenn Sie keine integrierte Backup-Komprimierung haben). Dies kann schneller laufen, vielleicht alle 5 Minuten, um sicherzustellen, dass alles kommt. Sobald etwas außerhalb des Standorts kopiert wurde, ist es "sicher".
- Ein Teil stellt die am DR-Standort gefundenen tlog-Sicherungen auf Ihrem sekundären Server wieder her. Sie müssen sicherstellen, dass Sie die wiederhergestellten Tlogs identifizieren und sie verschieben oder nach einem bestimmten Zeitplan löschen, da sonst der Speicherplatz knapp wird. Dies muss nicht so häufig ausgeführt werden, aber Sie müssen sicherstellen, dass es auf allen verfügbaren tlog-Sicherungen ausgeführt wurde, bevor Sie die DR-Sekundärseite als "live" deklarieren, wenn Sie ein Problem haben.
Sie möchten Tabellen, die alle drei Schritte überwachen, einige Berichte / Skripte, die Ihnen zeigen, was passiert ist (läuft eine bestimmte Datenbank auf Ihrem primären oder sekundären Standort? Hat eine Datenbank auf dem sekundären Standort keine Tlog-Wiederherstellung in beispielsweise zwei Stunden gesehen? ) und ein Warnschema.
Darüber hinaus möchte ich in der Lage sein, eine bestimmte Datenbank für das Failover sowie alles für das Failover auszuwählen. Die Möglichkeit, eine Datenbank für das Failover auszuwählen, ermöglicht ein einfaches Testen (Sie führen ein Failover einer Testdatenbank durch, nicht der Datenbank eines Kunden) und bietet Ihnen möglicherweise ein rudimentäres Lastausgleichsschema, wenn Sie auf Skalierungsprobleme stoßen. Sie möchten auch eine automatisierte Methode zum "erneuten Synchronisieren" zwischen primär und sekundär (erstellen Sie eine vollständige Sicherung von der primären und wenden Sie sie auf die sekundäre an, starten Sie den Tlogs-Fluss usw.). Diese Funktionen sind möglicherweise besser für eine Version 2.0.
(Jeder hat vergessen, dass der früheste von MS unterstützte Tlog-Versand über einige Skripte implementiert wurde, die Sie herunterladen und unter SQL 7.0 ausführen konnten. Es gab eine Go-GUI, die Benutzeroberfläche bestand aus einigen SQL-Berichten und einigen gespeicherten Prozeduren.)
Abgesehen vom Schreiben eines kleinen tsql-Codes sind die Herausforderungen hier:
Umstellung auf das vollständige Wiederherstellungsmodell (es scheint mir, dass Sie möglicherweise ein einfaches Wiederherstellungsmodell verwenden) und die Zunahme der Speichernutzung, die für Protokollsicherungen, größere Datenbankgrößen und was-haben-Sie wahrscheinlich sind.
Stellen Sie sicher, dass Ihr Speichersystem die Last häufiger tlog-Sicherungen bewältigen kann, und kopieren Sie diese rechtzeitig auf einen DR-Standort. IOW: Wenn Sie über 2000 Datenbanken verfügen und Daten bis zur letzten Stunde garantieren möchten, müssen Sie in der Lage sein, eine Transaktionsprotokollsicherung für jede dieser 2000 Datenbanken zu erstellen und auf einen Netzwerkspeicher zu übertragen (irgendwo, der sich nicht auf Ihrem Primärserver befindet ).
Stellen Sie sicher, dass alles im Allgemeinen Schritt hält.
Nachdem ich all das zum Laufen gebracht hatte, beschäftigte ich mich mit der Automatisierung des Failovers, wie ich meinen Websites mitteilen kann, wo die Live-Version der Datenbank eines bestimmten Kunden ausgeführt wurde usw. Wenn Sie keine Cluster-Systeme ausführen, stellen Sie sicher, dass Sie dies tun Halten Sie alle Anmeldungen / Passwörter, Jobs, Verbindungsserver usw. usw. synchron. Dies ist eine PITA.