Das Volumen der Daten, die heute gespeichert, verwaltet und abgerufen werden, ist beispiellos. Unternehmen erwarten von der IT-Abteilung, dass die Daten auf unbestimmte Zeit online und zugänglich bleiben, was einen enormen Druck auf die Datenbanken ausübt, die zur Speicherung und Verwaltung dieser Daten erforderlich sind. Um den heutigen Anforderungen gerecht zu werden, müssen wir veraltete und ineffiziente Legacy-Prozesse durch neue, agilere Techniken ersetzen. SQL Server Replication ist eine der Techniken, um solchen Anforderungen gerecht zu werden.
-
Hinweis: Um mehr über die Replikation von Datenbanken zu erfahren, lesen Sie bitte Different Stakeholders, Different Views: Warum Datenbankmanagement einen systematischen Ansatz erfordert.
In diesem Artikel lernen Sie die gesamte Topographie der SQL Server-Replikation kennen, einschließlich der Komponenten, Interna und des SQL, um alles miteinander zu verbinden. Nachdem Sie diesen Artikel zu Ende gelesen haben, werden Sie es verstehen:
- SQL Server-Replikation, im Allgemeinen
- Komponenten der transaktionalen SQL Server-Replikation, im Besonderen
- Wie Sie Verteilereigenschaften abrufen
- Wie Sie den Publisher finden, der denselben Verteiler verwendet
- Welche Datenbanken für die SQL Server-Replikation verwendet werden
- Die allgemeine Topologie einer Replikationsumgebung
- Welche Artikel dem Typ des SQL Server-Replikationsmodells zugeordnet sind
- Wie Sie Publikations
- Wie Sie Abonnementdetails erhalten
- SQL Server-Replikationsagenten
- Und mehr…
Replikation
SQL Server-Replikation ist eine Technologie zum Kopieren und Verteilen von Daten und Datenbankobjekten von einer Datenbank in eine andere und zum anschließenden Synchronisieren zwischen Datenbanken, um die Konsistenz und Integrität der Daten zu erhalten. In den meisten Fällen handelt es sich bei der Replikation um einen Prozess der Reproduktion der Daten an den gewünschten Zielen. Die SQL Server-Replikation wird für das kontinuierliche Kopieren und Synchronisieren von Daten verwendet oder sie kann auch so geplant werden, dass sie in vorgegebenen Intervallen ausgeführt wird. Es gibt verschiedene Replikationstechniken, die eine Vielzahl von Datensynchronisationsansätzen unterstützen: one-way, one-to-many, many-to-one und bidirektional und mehrere Datensätze miteinander synchron halten.
Komponenten der transaktionalen SQL Server-Replikation
Das folgende Diagramm zeigt die Komponenten der transaktionalen SQL Server-Replikation.
Einschließlich der SQL Server-Replikation …
- Verleger
- Publikationsdatenbank
- Publikation
- Artikel
- Verteiler
- Verteilungsdatenbank
- Abonnent
- Abonnementdatenbank
- Abonnement
- Replikationsagenten
SQL Server Replikationsdiagramm
Artikel
Ein Artikel ist die Grundeinheit der SQL Server Replikation. Ein Artikel kann aus Tabellen, Stored Procedures und Views bestehen. Es ist möglich, den Artikel zu skalieren, horizontal und vertikal mit Hilfe einer Filteroption. Wir können auch mehrere Artikel für dasselbe Objekt erstellen, allerdings mit einigen Einschränkungen und Limitierungen.
Mit Hilfe des Assistenten für neue Publikationen kann der Artikel navigiert werden. Er ermöglicht es uns, die Eigenschaften eines Artikels zu betrachten und bietet Optionen zum Festlegen von Eigenschaften für die Artikel. In einigen Fällen können die Eigenschaften zum Zeitpunkt der Erstellung der Publikation festgelegt werden und es handelt sich um eine schreibgeschützte Eigenschaft.
Wenn nach der Erstellung einer SQL Server-Replikationspublikation beispielsweise eine Eigenschaft geändert werden muss, muss ein neuer Replikations-Snapshot erstellt werden. Wenn die Publikation eine oder mehrere Subskriptionen hat, erfordert die Änderung eine Neuinitialisierung aller Subskriptionen. Weitere Informationen finden Sie im Artikel Hinzufügen/Verwerfen von Artikeln zu/von einer bestehenden Publikation in SQL Server.
Um alle Artikel aufzulisten, die veröffentlicht sind, führen Sie den folgenden T-.SQL
1
2
3
4
5
6
7
8
9
10
11
12
|
SELECT
Pub.
,Art.
,Art.
,Art.
,Art.
FROM
.. Art
INNER JOIN .. Pub
ON Art. = Pub.
ORDER BY
Pub., Art.
|
Um die Details von Artikeln in der transaktionalen oder Merge-SQL-Server-Replikation in einer veröffentlichten Datenbank zu erhalten, führen Sie die folgende T-SQL aus.
1
2
3
4
5
6
7
8
|
SELECT st.name , st.schema_id, st.is_published , st.is_merge_published, is_schema_published
FROM sys.tables st WHERE st.is_published = 1 oder st.is_merge_published = 1 oder st.is_schema_published = 1
UNION
SELECT sp.name, sp.schema_id, 0, 0, sp.is_schema_published
FROM sys.procedures sp WHERE sp.is_schema_published = 1
UNION
SELECT sv.name, sv.schema_id, 0, 0, sv.is_schema_published
FROM sys.views sv WHERE sv.is_schema_published = 1;
|
Um detaillierte Informationen über einen Artikel im aufgelisteten Verlag zu erhalten, führen Sie die folgende T-SQL
1
2
3
4
5
6
7
|
DECLARE @publication AS sysname;
SET @publication = N’PROD_HIST_Pub‘;
USE MES_PROD_AP
EXEC sp_helparticle
@publication = @publication;
GO
|
Um Details auf Spaltenebene zu erhalten, führen Sie das folgende T-SQL
1
2
3
|
USE MES_PROD_AP
GO
sp_helparticlecolumns @publication = N’PROD_HIST_Pub‘ , @article = ‚tb_Branchen_Anlage‘
|
Um die Spalten aufzulisten, die in der transaktionalen Replikation in der Publikationsdatenbank veröffentlicht werden, führen Sie die folgende T-SQL
1
|
SELECT object_name(object_id) , name FROM sys.columns sc WHERE sc.is_replicated = 1;
|
Publikationen
Eine Publikation ist eine logische Sammlung von Artikeln aus einer Datenbank. Die Entität ermöglicht es uns, Artikeleigenschaften auf einer höheren Ebene zu definieren und zu konfigurieren, so dass die Eigenschaften an alle Artikel in dieser Gruppe vererbt werden.
1
|
EXEC sp_helppublication;
|
Publisher-Datenbank
Der Publisher ist eine Datenbank, die eine Liste von Objekten enthält, die als SQL Server-Replikationsartikel bezeichnet werden, die als Publikationsdatenbank bekannt sind. Der Publisher kann eine oder mehrere Publikationen haben. Jeder Publisher definiert einen Datenpropagationsmechanismus, indem er mehrere interne Replikations-Stored-Procedures erstellt.
1
2
3
|
USE Distribution
GO
select * from MSpublications
|
Publisher
Der Publisher ist eine Datenbankinstanz, die Daten über die SQL Server-Replikation an anderen Stellen zur Verfügung stellt. Der Publisher kann eine oder mehrere Publikationen haben, die jeweils einen logisch zusammenhängenden Satz von Objekten und Daten definieren, die repliziert werden sollen.
Distributor
Der Distributor ist eine Datenbank, die als Speicher für replikationsspezifische Daten fungiert, die mit einem oder mehreren Publishern verbunden sind. In vielen Fällen ist der Distributor eine einzelne Datenbank, die sowohl als Publisher als auch als Distributor fungiert. Im Zusammenhang mit der SQL Server-Replikation wird dies üblicherweise als „lokaler Verteiler“ bezeichnet. Wenn er hingegen auf einem separaten Server konfiguriert ist, wird er als „entfernter Verteiler“ bezeichnet. Jeder Publisher ist mit einer einzelnen Datenbank verbunden, die als „Verteilungsdatenbank“ oder auch „Verteiler“ bezeichnet wird.
Die Verteilungsdatenbank identifiziert und speichert SQL Server-Replikationsstatusdaten, Metadaten über die Publikation und fungiert in einigen Fällen als Warteschlange für Daten, die vom Publisher zu den Abonnenten übertragen werden.
Abhängig vom Replikationsmodell kann der Distributor auch dafür verantwortlich sein, die Abonnenten, die eine Publikation abonniert haben, über die Änderung eines Artikels zu benachrichtigen. Außerdem stellt die Verteilerdatenbank die Integrität der Daten sicher.
Distributionsdatenbanken
Jeder Distributor muss mindestens eine Distributionsdatenbank haben. Die Verteilungsdatenbank besteht aus Artikeldetails, Replikations-Metadaten und Daten. Ein Verteiler kann mehr als eine Verteilungsdatenbank besitzen; allerdings müssen alle Publikationen, die auf einem einzelnen Publisher definiert sind, dieselbe Verteilungsdatenbank verwenden.
Um herauszufinden, ob …
-
ein Server ein Verteiler ist oder nicht?
1SELECT @@ServerName Servername, case when is_distributor=1 then ‚Yes‘ else ‚No‘ end status FROM sys.servers WHERE name=’repl_distributor‘ AND data_source=@@servername; -
Ist eine Verteilerdatenbank installiert oder nicht?
1SELECT name FROM sys.databases WHERE is_distributor = 1 -
Ein Publisher verwendet diesen Distributor oder nicht?
1EXEC sp_get_distributor -
oder einfach nur, um verschiedene Eigenschaften von Verteilern und Verteilungsdatenbanken abzufragen?
123EXEC sp_helpdistributor;EXEC sp_helpdistributiondb;EXEC sp_helpdistpublisher;
Subscriber
Eine Datenbankinstanz, die SQL Server-Replikationsdaten aus einer Publikation konsumiert, wird Subscriber genannt. Der Subscriber kann Daten von einem oder mehreren Publishern und Publikationen empfangen. Je nach Art des Replikationsdesigns und -modells kann der Subscriber auch Datenänderungen an den Publisher zurückgeben oder die Daten an andere Subscriber weiterveröffentlichen.
1
|
EXEC sp_helpsubscriberinfo;
|
Subskriptionen
Eine Subskription ist eine Anforderung für eine Kopie einer Publikation, die an einen Subscriber geliefert werden soll. Das Abonnement legt fest, welche Publikationsdaten wann und wo empfangen werden sollen.
Es gibt zwei Arten von Abonnements: Push-Abonnements und Pull-Abonnements
- Push-Abonnement: Der Verteiler aktualisiert die Daten direkt in der Abonnentendatenbank
- Pull-Abonnement: Der Abonnent prüft regelmäßig beim Verteiler, ob neue Änderungen vorliegen und aktualisiert dann selbst die Daten in der Abonnentendatenbank.
1
|
EXEC sp_helpsubscription;
|
Abonnement-Datenbanken
Eine Zieldatenbank eines Replikationsmodells wird als Abonnement-Datenbank bezeichnet.
Replikationsagenten
Die SQL Server-Replikation verwendet einen vordefinierten Satz von eigenständigen Programmen und Ereignissen, die als Agenten bezeichnet werden, um die mit den Daten verbundenen Aufgaben auszuführen. Standardmäßig werden die SQL Server-Replikationsagenten als geplante Aufträge unter SQL Server Agent ausgeführt. Replikationsagenten können auch über die Befehlszeile und von Anwendungen ausgeführt werden, die Replication Management Objects (RMO) verwenden. SQL Server-Replikationsagenten können mit Replication Monitor und SQL Server Management Studio überwacht und verwaltet werden.
Replikations-Snapshot-Agent
Der Replikations-Snapshot-Agent wird mit allen Arten von SQL Server-Replikationstechnologie verwendet, da er den erforderlichen Datensatz bereitstellt, um die anfängliche Datensynchronisation der Veröffentlichungsdatenbank mit der Abonnementdatenbank durchzuführen. Er bereitet das Schema und die anfänglichen Daten der veröffentlichten Artikel sowie die Snapshot-Dateien vor und zeichnet Informationen über den Synchronisierungstyp in der Verteilungsdatenbank auf.
Log Reader Agent
Der Log Reader Agent wird nur bei transaktionaler Replikation verwendet. Er verschiebt Replikationstransaktionen aus dem Online-Transaktionsprotokoll der Publikationsdatenbank in die Verteilungsdatenbank.
Distribution Agent
Der Distribution Agent wird nur bei Replikations-Snapshot und transaktionaler SQL Server-Replikation verwendet. Dieser Agent wendet den anfänglichen Replikations-Snapshot auf die Abonnementdatenbank an und später werden die Datenänderungen in der Verteilungsdatenbank nachverfolgt und aufgezeichnet und auf die Abonnementdatenbank angewendet.
Merge Agent
Der Merge Agent wird mit dem Merge-Replikationsmodell verwendet. Standardmäßig lädt der Merge Agent Änderungen vom Abonnenten zum Verleger hoch und lädt dann Änderungen vom Verleger zum Abonnenten herunter. Jedes Abonnement hat seinen eigenen Merge Agent, der sich sowohl mit dem Verleger als auch mit dem Abonnenten verbindet und beide aktualisiert. Der Merge Agent läuft entweder auf dem Distributor für Push-Abonnements oder auf dem Subscriber für Pull-Abonnements. Hier ist die Synchronisation bidirektional. Die Datenkonflikte werden von einer Reihe von Triggern behandelt, die den gesamten Prozess unterstützen
Zusammenfassung
Bis jetzt haben wir einen Durchgang durch einige der wichtigen Konzepte der SQL Server-Replikation gesehen. Außerdem wurden T-SQL-Skripte zur Abfrage von Systemtabellen und gespeicherten Replikationsprozeduren gezeigt, um die meisten der häufig gestellten Fragen zur SQL Server-Replikation zu beantworten.
In kommenden Artikeln werde ich mehr über SQL Server Replikation besprechen. Wenn Sie der Meinung sind, dass etwas in diesem Artikel verbessert werden kann, können Sie gerne unten einen Kommentar hinterlassen…
Inhaltsverzeichnis
SQL Server-Replikation: Überblick über die Komponenten und die Topographie
SQL-Replikation: Grundlegende Einrichtung und Konfiguration
Wie man Artikel aus bestehenden Publikationen in SQL Server hinzufügt/verschiebt
Wie man einen schnellen geschätzten Vergleich von Daten in zwei großen SQL Server-Datenbanken durchführt, um zu sehen, ob sie gleich sind
SQL Server-Replikation mit Transaktionen: Wie man ein Abonnement mithilfe eines SQL Server-Datenbank-Backups neu initialisiert
Wie man ein benutzerdefiniertes SQL Server-Transaktionsreplikationsmodell mit einem zentralen Abonnenten und mehreren Publisher-Datenbanken einrichtet
Wie man eine benutzerdefinierte SQL Server-Transaktionsreplikation mit einem zentralen Publisher und mehreren Abonnenten-Datenbanken einrichtet
Wie man eine DDL- und DML-Lösung für die transaktionale SQL Server-Datenbankreplikation einrichtet
Wie man eine plattformübergreifendeplattformübergreifende transaktionale SQL Server-Replikation für Datenbank-Reporting unter Linux einrichtet
SQL Server-Datenbankmigrationen ohne Datenverlust und ohne Ausfallzeit
Verwendung der transaktionalen Datenreplikation zum Wiederholen und Testen von Produktionslasten auf einem Staging-Server
Wie man die SQL Server-Datenbankreplikation für einen Reporting-Server einrichtet
SQL Server-Transaktionsreplikation: Wie man ein Abonnement mit „Nur Replikationsunterstützung“ neu initialisiert -TBA
SQL Server Replikationsüberwachung und Einstellen von Warnungen mit PowerShell -TBA
- Autor
- Aktuelle Beiträge
Meine Spezialität ist das Design & und die Implementierung von Hochverfügbarkeitslösungen und plattformübergreifender DB-Migration. Die Technologien, an denen ich derzeit arbeite, sind SQL Server, PowerShell, Oracle und MongoDB.
Alle Beiträge von Prashanth Jayaram anzeigen
- Ein schneller Überblick über Datenbank-Audit in SQL – 28. Januar, 2021
- Wie Sie Azure Data Sync zwischen Azure SQL-Datenbanken und lokalem SQL Server einrichten – 20. Januar 2021
- Wie Sie Azure SQL-Datenbank-Import/Export-Vorgänge mit PowerShell durchführen – 14. Januar 2021