2009-01-12 16 views
12

So entscheiden Sie, ob in SQL Server 2005 eine Replikation oder Spiegelung ausgewählt werden soll, um Datenverfügbarkeit und Leistung gleichzeitig bereitzustellen.Spiegelung im Vergleich zur Replikation


Um genauer über meine SQL-Server-Architektur sein, ich habe einen Aktiv/Aktiv-Cluster von 2 Knoten, die für den Lastausgleich verwendet werden, und ich habe eine anderen Server für die Replikation, die für die Berichterstattung nur verwendet werden, Ich möchte sicherstellen, welche Technologie die beste Leistung und Verfügbarkeit bietet, Transaktionsreplikation oder Datenbankspiegelung?

Antwort

7

Es stellt sich heraus, dass Datenbank-Spiegelung den direkten Zugriff auf Daten verhindert, gespiegelte Daten sind nur über einen Datenbank-Snapshot zugänglich, so dass Berichte aus Snapshot-Daten nicht aktuell sind. Daher verwende ich Datenbank-Transaktionsreplikation, um eine hohe Verfügbarkeit bereitzustellen und Lastenausgleich.

+0

Für den Datensatz können Sie Snapshots auf dem Spiegel erstellen und sie für die Berichterstattung verwenden: http://technet.microsoft.com/en-us/library/ms175511.aspx –

5

Ich kenne SQL Server 2005 nicht, aber für allgemeine SQL-Verwendung würde ich immer Replikation bevorzugen. Sie müssen Lese-/Schreibvorgänge in Ihrer Anwendung trennen (für MySQL gibt es MySQL Proxy, der dies auf eine Proxy-Weise für Sie tun kann), aber Sie erhalten ein skalierbares System. (liest zu Slave (s), schreibt zum Master)

Spiegeln bedeutet Master-Master-Replikation, die zu Problemen mit Parallelität/Transaktion führt. Selbst in Master-Master-Szenarien sollten Sie NEVER senden Abfragen an verschiedene Server senden. Abhängig von der Größe Ihres Projekts würden in den nächsten Schritten weitere Slaves hinzugefügt und dann ein weiterer Master und seine Slaves zur Redundanz hinzugefügt.

master --- master 
    |   | 
slave  slave 
    |   | 
slave  slave 
    |   | 
slave  slave 

Selbst dann würden Sie nur Schreibabfragen an einen Master, aber im Fall eines scheiternden Master senden können Sie automatisch den zweiten Master zu Ihrem neuen Schreib-query-Ziel fördern.

+2

Spiegeln in MS-SQL ist * nicht * Master-Master-Replikation. Nur eine der beiden Datenbanken kann gleichzeitig beschrieben werden, und diese Transaktionen zum Einfügen/Aktualisieren/Löschen werden auch an das Protokoll des anderen Servers übergeben. –

7

Es hängt von der Stufe (warm, warm, kalt) der Standby-Verfügbarkeit ab, die Sie benötigen.

verschiedene Mechanismen in SQL Server bieten Datenbank-Level-Redundanz, wie Backup/Restore, Protokollversand, und Datenbankspiegelung (in SQL Server 2005 und später). Datenbankspiegelung ist der einzige Mechanismus, der eine Echtzeit, genaue Kopie der geschützten Datenbank mit der Garantie von Null Datenverlust (wenn der Spiegel ist synchronisiert).

Datenbankspiegelung wird entweder im synchronen oder im asynchronen Modus ausgeführt. Bei asynchronem Vorgang werden Transaktionen festgeschrieben, ohne dass der Spiegelserver das Protokoll auf die Festplatte schreiben muss, wodurch die Leistung maximiert wird.

Dieses MS Whitepaper, Providing High Availability using Database Mirroring, deckt eine Reihe von Szenarien ab.

Sie sollten diesen TechNet-Artikel, Database Mirroring Best Practices and Performance Considerations, lesen.

Verwandte Themen