2017-03-11 7 views
0

Ich habe eine 300 GB MSSQL 2016 Produktionsdatenbank auf einem Server und ich muss eine Kopie dieser Datenbank auf einem anderen Server für Reporting-Zwecke erstellen.SQL zu SQL Datenreplikation

In der Produktionsdatenbank gibt es normale Clustered/Non-Clustered-Indizes und tägliche Lese-Schreib-Operationen sind möglich.

Auf der Berichtseite werde ich die gleichen Datenbanktabellen mit columnstore Indizes haben, so dass ich die Möglichkeit erhalten werde, meine Berichtabfrageergebnisse schneller als lebende Datenbank zu bekommen.

Die Idee war gut, bis ich keine richtige Art und Weise zu replizieren diese 2 Datenbanken und halten sie synchron finden könnte (wie bei max. 5 mnts Toleranz)

Ich habe einige Log Shipping Topologien versucht, funktionierte nicht Gut.

Ich habe versucht SQL Replication zwischen diesen beiden Datenbanken, aber es gibt nicht% 100 Datenkonsistenz und es ist nicht tolerierbar für Fehler wie beim Hinzufügen oder Löschen einer Spalte in der Tabelle oder wenn Sie eine neue Tabelle an die liefern möchten Berichtsdatenbank usw.

PS. Ich würde erwägen, eine Replik meiner Prod-Datenbank synchron zu haben (neben der Berichtsdatenbank) (wie Protokollversand nur sekundäre lesen). Also ich bin bereit, einen anderen Server (insgesamt 3 Server) für eine sekundäre replizierten Datenbank (1-prod, 1-Replikat, 1-Reporting) zu erstellen, wenn ich eine richtige Topologie finden würde.

Was halten Sie für das Beste? in meinem Fall?

Vielen Dank im Voraus.

Antwort

0

Wenn DDL-Änderungen repliziert werden sollen, müssen Sie den Protokollversand oder die Spiegelung einer Art verwenden. Das bedeutet, dass Sie dieselbe Datenbank (bis auf die Seitenebene) auf dem Lese- nur kopieren. Sie können keine unterschiedlichen Indexdefinitionen haben.

Wenn Sie möchten, dass die Indexdefinitionen unterschiedlich sind, dann müssen Sie eine Möglichkeit finden, die Daten zu replizieren - manuelle Skripts sind wahrscheinlich die beste Wahl, aber es ist schwierig zu verfolgen, welche Datensätze neu sind , aktualisiert und vor allem in der Produktionsdatenbank gelöscht (Zeilenspalten hinzufügen und sicherstellen, dass Primärschlüssel für alle Tabellen nützlich sind). Sie müssten die DDL-Änderungen auch manuell von der Produktionsdatenbank in die schreibgeschützte Kopie kopieren. und aktualisieren Sie Ihre Datenreplikationsskripte so, dass sie übereinstimmen.

Ich würde empfehlen, eine der verfügbaren Spiegelungstechniken (Protokollversand, AG mit einem Nur-Lese-Spiegel, et al.) Zu verwenden und die Datenbanken exakt identisch zu halten.