Ein Nicht-DBA fragt: Wie kopiere / verschiebe ich eine SQL Server-Instanz schmerzlos über Backup / Restore auf einen anderen Server?

11

Wir haben gerade einen neuen Server, daher muss ich die vorhandene SQL Server 2008-Instanz von der alten Datenbankbox kopieren.

Normalerweise kopiere ich .mdf- und Protokolldateien und hänge sie an, aber ich kann die Datenbank nicht offline schalten, da sie rund um die Uhr verwendet wird. Daher habe ich die Datenbanken gesichert und auf der neuen wiederhergestellt Maschine. Ich habe jedoch einige Probleme festgestellt, von denen eines mit verwaisten Benutzern zusammenhängt . Was ich also suche, ist ein ausfallsicherer Prozess, um alles mit minimalem Aufwand / Mühe / Kopfschmerzen zu bewegen . Ich bin ein .NET-Entwickler mit einer Menge SQL im Gepäck, aber das Innenleben von SQL Server ist mir größtenteils ein Rätsel, und ich finde es schmerzhaft, die MS-Dokumentation zu durchsuchen.

Bitte helfen Sie.

5arx
quelle
1
In dieser vorherigen Frage finden Sie einige Ideen . Aber die vorherigen Antworten sind ziemlich erklärend. Ich denke, dass die beste Idee wäre, eine Spiegelung einzurichten und danach zu brechen, oder einen Protokollversand (kann nur vom Assistenten ausgeführt werden) für alle Datenbankdatenbanken und die erforderlichen Protokollsicherungen weiter wiederherzustellen, aber wenn Sie sagen, dass Sie kein DBA sind Dann ist wahrscheinlich die Sicherungsmethode besser.
Marian

Antworten:

10

Wenn Sie die Datenbanken nicht offline schalten können, müssen Sie eine Sicherung / Wiederherstellung durchführen. Ich würde folgendes vorschlagen:

  1. Installieren Sie SQL 2008 auf der neuen Box unter Verwendung derselben Dateistruktur wie die alte Box für MDF- und LDF-Dateien.
  2. Erstellen Sie Backups aller Datenbanken auf der alten Box.
  3. Stellen Sie den Master von der alten Box in die neue Box zurück, wobei SQL im Einzelbenutzermodus gestartet wurde. Stellen Sie die Master-Methode wieder her
  4. Stellen Sie jede Datenbank mit der Option NORECOVERY von der alten Box in die neue Box wieder her, um zukünftige Diff- oder T-Log-Sicherungen anwenden zu können.
  5. Stellen Sie msdb von der alten Box in die neue Box wieder her.

Wenn Sie die neue Box so erstellen und konfigurieren, dass sie genau wie die alte aussieht, haben Sie nur minimalen Aufwand.

Ich habe keine Ahnung, wie groß Ihre Datenbanken sind, daher kann diese Methode lange dauern. Am einfachsten ist es, die alte Box herunterzufahren und die MDF- und LDF-Dateien zu kopieren. Anschließend müssen Sie (nach dem Wiederherstellen des Masters) nur SQL neu starten, damit Ihre Datenbanken online sind. Sie haben jedoch angegeben, dass dies keine Option ist, da die Datenbanken nicht offline sein dürfen.

SQLRockstar
quelle
3
Vergessen Sie nicht, alle Datenänderungen zu kopieren, die nach dem Erstellen der Sicherungen vorgenommen wurden. Sie können ein Diff-Backup oder ein Tlog-Backup erstellen und diese auf den neuen Server anwenden, nachdem dieser aktiv ist, aber bevor Sie umschalten.
Eric Humphrey - Lotsahelp
Guter Punkt, ich habe vergessen, das auch zu erwähnen. vielleicht sollte ich eine db spiegelkonfiguration einbinden, die danach kaputt gehen könnte?
SQLRockstar
1
Ich würde mir vorstellen, dass jemand bereits einen ausführlichen Artikel über die verschiedenen Möglichkeiten zur Migration von Servern hat. Hier ist auch ein Artikel über das Übertragen von Anmeldungen auf einen neuen Server: support.microsoft.com/kb/246133
Eric Humphrey - Lotsahelp
8

Sie erwähnen den 24/7-Betrieb. Der beste Weg, dies zu tun, besteht darin, einen Datenbankspiegel auf dem neuen System zu erstellen. Dann können Sie einfach mit einer Ausfallzeit von mindestens - je nach Struktur Ihrer Anwendung - über einen Client umschalten. Seitenumleitung. Die grundlegenden Schritte sind:

  1. Stellen Sie sicher, dass Ihre Primärdatenbank im vollständigen Wiederherstellungsmodus ausgeführt wird .
  2. Sichern Sie die primäre und stellen Sie sie auf dem Spiegel wieder her WITH NORECOVERY
  3. Erstellen Sie "Endpunkte" auf beiden Servern und stellen Sie die Konnektivität sicher (z. B. Firewall-Regeln), indem Sie den Port und die IP-Adresse korrekt einstellen. Beispiel:

    CREATE ENDPOINT endpoint1
    STATE=STARTED AS TCP(LISTENER_PORT = 5222, LISTENER_IP = 192.168.1.5) 
    FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM RC4)
  4. Richten Sie die Spiegelung auf dem Spiegel ein und zeigen Sie auf die primäre:

    ALTER DATABASE GaiusMirrorDB SET PARTNER = 'TCP://192.168.1.5:5222'
    go
    EXEC sys.sp_dbmmonitoraddmonitoring
    go
  5. Und auf der primären Seite auf den Spiegel zeigen (nur ein anderer Datenbankname und eine andere IP-Adresse.

  6. Wenn es soweit ist, schalten Sie einfach die Primärseite auf den Spiegel um:

    ALTER DATABASE GaiusDB SET PARTNER FAILOVER
    GO

Hinweis: Ich gehe davon aus, dass sich diese beiden Server im selben Netzwerk befinden, sodass der Betrieb im synchronen Modus in Ordnung ist. Wenn dies über eine WAN-Verbindung erfolgt, verwenden Sie den asynchronen Modus.

Gaius
quelle