Erstellen eines schreibgeschützten Replikats der SQL Server-Datenbank für Berichte

7

Ich habe ein Problem, wenn meine .NET-Webanwendung langsam ausgeführt wird, selbst wenn ich alle Abfragen optimiert habe. Wie sich herausstellte, führt ein anderer Entwickler, der Berichte erstellt, ständig eine Reihe nicht optimierter Abfragen aus. Also habe ich beschlossen, einen separaten Server für ihn zu erstellen. Derzeit habe ich Jobs erstellt, die Backups erstellen, auf einen anderen Server kopieren und wiederherstellen. Da es sich jedoch um eine vorübergehende Lösung handelt, prüfe ich, ob der zweite Server über aktuelle Daten verfügt oder zumindest mit minimaler Latenz, die Möglichkeit, ein schreibgeschütztes Replikat zu erstellen.

Da ich kein DBA bin, habe ich einige Artikel zum SQL Server-Replikationsmechanismus gelesen. Die beste Option für mich ist, wenn meine PROD-Webanwendung überhaupt nicht von der Replikation betroffen ist. Ich meine viel Sperre beim Synchronisieren von Tabellen. Ich benötige keine Echtzeitsynchronisierung wie die Spiegelung. Außerdem benötige ich keine King-of-Cluster-Lösung. Lesen Sie einfach die Nur-Synchronisierungskopie meiner PROD-Datenbank. Daher habe ich den TransactionalReplikationsmechanismus (nicht aktualisierbar) mit asynchroner Verteilungsrichtlinie (planmäßig) ausgewählt.

Ich habe also eine Frage:

  1. Passt die Transaktionsreplikation am besten zu meinem Problem unter den SQL Server-Replikationsmechanismen?

  2. Wenn ich die Möglichkeit habe, von SQL Server 2008 auf SQL Server 2012 zu migrieren, hat die Transaktionsreplikation einige wichtige Änderungen? Ich habe einen Artikel über Technet gelesen , in dem Fehler auftreten können.

  3. Ist der SQL Server 2012- Always OnMechanismus nicht besser, um mein Problem zu lösen (ich betrachte diese Option als letzte, da ich immer noch 2008 R2 verwende und die Migration auf 2012 nicht bald geplant ist)?

Johnny_D
quelle

Antworten:

10

Passt die Transaktionsreplikation am besten zu meinem Problem unter den SQL Server-Replikationsmechanismen?

Von allen Replikationsoptionen - Transaktionsklänge scheinen Ihnen hier am meisten zu helfen. Es gibt die minimale Latenz und muss nicht bidirektional sein (kann aber sein). Sie führen keine Änderungen zusammen und benötigen kein Peer-to-Peer.

Das heißt - Replikation ist nicht "kostenlos" - Sie müssen sie verwalten und überwachen, und ein schlechtes Setup kann Leistungsprobleme verschlimmern. Sie sollten sich über die besten Optionen für die Leistung und das beste Setup für die Leistung informieren und dies berücksichtigen und Ihre Replikationsumgebung überwachen.

Die Transaktionsreplikation ist "einfacher" als die Zusammenführungsreplikation. Das bedeutet aber nicht, dass Sie immer ein glattes Segel haben und immer davonkommen können, ohne dass jemand mit Replikationserfahrung hilft.

Wenn ich die Möglichkeit habe, von SQL Server 2008 auf SQL Server 2012 zu migrieren, hat die Transaktionsreplikation einige wichtige Änderungen? Ich habe einen Artikel über Technet gelesen, in dem Fehler auftreten können.

Leider ist dies eine Art "es kommt darauf an". Wir könnten Ihnen theoretisch Antworten aus unseren eigenen Erfahrungen geben, aber Sie müssen testen. Wenn Sie auf Probleme stoßen, handelt es sich nicht unbedingt um unmögliche Probleme, die Sie nicht beheben können. Sie müssen getestet und optimiert werden.

Ist der SQL Server 2012 Always On-Mechanismus nicht besser, um mein Problem zu lösen (ich betrachte diese Option als letzte, da ich immer noch 2008 R2 verwende und die Migration auf 2012 nicht bald geplant ist)?

In SQL Server 2012 hat AlwaysOn hier etwas für Sie, das möglicherweise funktioniert. Verfügbarkeitsgruppen sind hier eine Antwort mit dem Konzept einer aktiven Sekundarstufe zum Lesen. Es gibt jedoch Lizenzprobleme - Sie müssen sowohl auf der primären als auch auf der schreibgeschützten / aktiven Sekundärseite in Enterprise sein. Mit dem Replikationsansatz müssen Sie immer noch an beiden Enden lizenziert sein, aber dies ist mit Sicherheit eine gute Option. Es hat auch Overhead-Probleme und einige administrative Probleme, die Sie kennenlernen sollten - aber es ist eine großartige Option.

Mike Walsh
quelle
5

Ich benötige keine Echtzeitsynchronisierung wie die Spiegelung. Außerdem benötige ich keine King-of-Cluster-Lösung. Lesen Sie einfach die Nur-Synchronisierungskopie meiner PROD-Datenbank.

Wie Mike erwähnte, ist T-Rep nicht kostenlos. Sie müssen die Verteilerdatenbank pflegen und es bestehen Abhängigkeiten vom Log-Reader-Agenten. Wenn die Anzahl der in der Veröffentlichung auftretenden Änderungen groß ist und von der Netzwerklatenz abhängt, werden in der Verteilungsdatenbank Befehle gesammelt, die darauf warten, dass der Protokollleser-Agent sie scannt und an den Abonnenten sendet. Für Schemaänderungen ist ein neuer Snapshot erforderlich. Dadurch wird die Veröffentlichungsdatenbank gesperrt, bis der Snapshot abgeschlossen ist. Außerdem führt die Replikation der gesamten Datenbank im Gegensatz zu einer Teilmenge von Daten (ausgewählte Tabellen, SPs usw.) häufig zu Problemen im Zusammenhang mit ihrer Wartung.

Aufgrund Ihrer Situation würde ich Logshipping empfehlen . Es ist einfach einzurichten und es besteht nur eine minimale Abhängigkeit (Netzwerkfreigabe - sollte über entsprechende Berechtigungen verfügen).

Das Gute am Logshipping ist, dass Sie die sekundäre Datenbank im STANDBY-Modus schreibgeschützt haben können.

Sie können die Wiederherstellung von Protokollsicherungen auf sekundären Websites verzögern .

Hinweis: Wenn Sie Logshipping mit der Option STANDBY verwenden, kann sich die sekundäre Datenbank nicht auf einer höheren Version des SQL-Servers als eine primäre befinden.

Kin Shah
quelle
0

Mike als guter Punkt zur Transaktionsreplikation. Wir haben eine ähnliche Situation und ich versuche, die Transaktionsreplikation im Moment zum Laufen zu bringen. Sie funktioniert jedoch wie sie ist. Wenn ich jedoch einen Artikel hinzufüge, von dem ich weiß, dass er viele Lösch- und Einfügevorgänge generiert, bleibt die Verteilungsdatenbank auf der Publisher-Seite hängen ( Dies ist eine der Einschränkungen bei der Transaktionsreplikation. Das ist meine Frage:

SQL Server Transactional Replication-Verteilungsdatenbank hält nicht mit

Ich versuche immer noch herauszufinden, warum Distribution DB beim Publisher nicht mithält. Hoffentlich generiert Ihre Umgebung nicht so viele Änderungen, und Sie sollten mit der Transaktionsreplikation einverstanden sein, da dies das Beste für Ihren Ansatz zu sein scheint.

NismoGTR05
quelle