Logische Replikation
Die Möglichkeit, die Datenobjekte und ihre Änderungen zu replizieren, wird als logische Replikation bezeichnet. Es funktioniert basierend auf der Veröffentlichung und dem Abonnement. Es verwendet Wal (Schreibbeindämpferung), um die logischen Änderungen in der Datenbank aufzuzeichnen. Die Änderungen an der Datenbank werden in der Publisher-Datenbank veröffentlicht, und der Abonnent empfängt die replizierte Datenbank vom Verlag in Echtzeit, um die Synchronisierung der Datenbank sicherzustellen.
Die Architektur der logischen Replikation
Das Publisher-/Abonnentenmodell wird in der logischen Replikation von PostgreSQL verwendet. Der Replikationssatz wird im Verlag Knoten veröffentlicht. Eine oder mehrere Veröffentlichungen werden vom Abonnentenknoten abonniert. Die logische Replikation kopiert einen Schnappschuss der Veröffentlichungsdatenbank an den Abonnenten, der als Tabellensynchronisationsphase bezeichnet wird. Die transaktionale Konsistenz wird durch die Verwendung des Commits beibehalten, wenn Änderungen am Abonnentenknoten vorgenommen werden. Die manuelle Methode der logischen Replikation von PostgreSQL wurde im nächsten Teil dieses Tutorials gezeigt.
Der logische Replikationsprozess ist im folgenden Diagramm gezeigt.
Alle Betriebstypen (einfügen, aktualisieren und löschen) werden standardmäßig in logischer Replikation repliziert. Aber die Änderungen des replizierten Objekts können begrenzt sein. Die Replikationsidentität muss für das Objekt konfiguriert werden, das zur Veröffentlichung hinzugefügt werden muss. Der Primär- oder Indexschlüssel wird für die Replikationsidentität verwendet. Wenn die Tabelle der Quelldatenbank keinen primären oder indexziellen Schlüssel enthält, dann die voll wird für die Replik -Identität verwendet. Das bedeutet, dass alle Spalten der Tabelle als Schlüssel verwendet werden. Die Veröffentlichung wird in der Quelldatenbank mithilfe der Veröffentlichungsbefehle erstellen erstellt. Das Abonnement wird in der Zieldatenbank unter Verwendung des Befehls create create erstellt. Das Abonnement kann mithilfe von Änderungen -Abonnementbefehlsbefehl gestoppt oder wieder aufgenommen werden und mit dem Drop -Abonnement -Befehl entfernt werden. Die logische Replikation wird vom Wal -Absender implementiert und basiert auf Wal Decoding. Der Wal -Absender lädt das standardmäßige logische Dekodierungs -Plugin. Dieses Plugin verwandelt die vom Wal abgerufenen Änderungen in den logischen Replikationsprozess. Die Daten werden basierend auf der Veröffentlichung filtriert. Als nächstes werden die Daten kontinuierlich durch Verwendung des Replikationsprotokolls an den Replikationspersonal übertragen, der die Daten mit der Tabelle der Zieldatenbank ordnet und die Änderungen basierend auf der Transaktionsreihenfolge anwendet.
Logische Replikationsfunktionen
Einige wichtige Merkmale der logischen Replikation wurden unten erwähnt.
Vorteile der logischen Replikation
Einige Vorteile der logischen Replikation werden nachstehend erwähnt.
Nachteile der logischen Replikation
Einige Einschränkungen der logischen Replikation werden nachstehend erwähnt.
Implementierung der logischen Replikation
In diesem Teil dieses Tutorials wurden die Schritte zur Implementierung der logischen Replikation in der PostgreSQL -Datenbank gezeigt.
Voraussetzungen
A. Richten Sie die Master- und Replik -Knoten ein
Sie können den Master und die Replik -Knoten auf zwei Arten einstellen. Eine Möglichkeit besteht darin, zwei separate Computer zu verwenden, auf denen das Ubuntu -Betriebssystem installiert ist. Eine andere Möglichkeit besteht darin, zwei virtuelle Maschinen zu verwenden, die auf demselben Computer installiert sind. Der Testprozess des physischen Replikationsprozesses ist einfacher, wenn Sie zwei separate Computer für den Master -Knoten und den Replikatknoten verwenden, da für jeden Computer eine bestimmte IP -Adresse einfach zugewiesen werden kann. Wenn Sie jedoch zwei virtuelle Maschinen auf demselben Computer verwenden, muss die statische IP -Adresse für jede virtuelle Maschine festgelegt werden, und stellen Sie sicher, dass beide virtuellen Maschinen über die statische IP. Ich habe zwei virtuelle Maschinen verwendet, um den physischen Replikationsprozess in diesem Tutorial zu testen. Der Hostname der Meister Der Knoten wurde auf eingestellt Fahmida-Master, und der Hostname der Replik Der Knoten wurde auf eingestellt Fahmida-Slave Hier.
B. Installieren Sie PostgreSQL sowohl auf Master- als auch auf Replikatknoten
Sie müssen die neueste Version des PostgreSQL -Datenbankservers auf zwei Maschinen installieren, bevor Sie die Schritte dieses Tutorials starten. Postgresql Version 14 wurde in diesem Tutorial verwendet. Führen Sie die folgenden Befehle aus, um die installierte Version des PostgreSQL im Masterknoten zu überprüfen.
Führen Sie den folgenden Befehl aus, um Root -Benutzer zu werden.
$ sudo -i
Führen Sie die folgenden Befehle aus, um sich als Postgres -Benutzer mit Superuser -Berechtigungen anzumelden, und stellen Sie die Verbindung mit der PostgreSQL -Datenbank her.
$ su - Postgres
$ psql
Die Ausgabe zeigt, dass PostgreSQL Version 14.4 wurde auf Ubuntu Version 22 installiert.04.1.
Primäre Knotenkonfigurationen
Die erforderlichen Konfigurationen für den primären Knoten wurden in diesem Teil des Tutorials gezeigt. Nach dem Einrichten der Konfiguration müssen Sie eine Datenbank mit der Tabelle im primären Knoten erstellen und eine Rolle und Veröffentlichung erstellen, um eine Anforderung aus dem Replikatknoten zu erhalten und den aktualisierten Inhalt der Tabelle im Replikatknoten zu speichern.
A. Modifiziere den PostgreSQL.Conf Datei
Sie müssen die IP -Adresse des Primärknotens in der benannten PostgreSQL -Konfigurationsdatei einrichten PostgreSQL.Conf Das befindet sich am Standort, /etc/postgresql/14/main/postgresql.Conf. Melden Sie sich im primären Knoten als Root -Benutzer an und führen Sie den folgenden Befehl aus, um die Datei zu bearbeiten.
$ nano/etc/postgresql/14/main/postgresql.Conf
Finden Sie die Listen_addresses Variable in der Datei entfernen. Sie können einen Sternchen (*) oder die IP -Adresse des Primärknotens für diese Variable festlegen. Wenn Sie Sternchen (*) festlegen, hört der primäre Server alle IP -Adressen an. Es wird die spezifische IP -Adresse anhören, wenn die IP -Adresse des Primärservers auf diese Variable festgelegt ist. In diesem Tutorial ist die IP -Adresse des primären Servers, der auf diese Variable festgelegt wurde 192.168.10.5.
listen_addressess = “”
Als nächstes finden Sie das heraus Wal_level Variable zum Einstellen des Replikationstyps. Hier wird der Wert der Variablen sein logisch.
Wal_level = logisch
Führen Sie den folgenden Befehl aus, um den PostgreSQL -Server neu zu starten, nachdem Sie die geändert haben PostgreSQL.Conf Datei.
$ systemctl restart postgresql
*** Hinweis: Wenn Sie die Konfiguration eingerichtet haben, führen Sie die folgenden Befehle für die PostgreSQL -Version 14 aus.
$ sudo chmod 700 -r/var/lib/postgresql/14/main
$ sudo -i -u postgres
#/usr/lib/postgresql/10/bin/pg_ctl restart -d/var/lib/postgresql/10/Main
Sie können sich nach erfolgreicher Ausführung des obigen Befehls mit dem PostgreSQL -Server verbinden.
Melden Sie sich beim PostgreSQL -Server an und führen Sie die folgende Anweisung aus, um den aktuellen WAL -Level -Wert zu überprüfen.
# Show Wal_Level;
B. Erstellen Sie eine Datenbank und Tabelle
Sie können jede vorhandene PostgreSQL -Datenbank verwenden oder eine neue Datenbank zum Testen des logischen Replikationsprozesses erstellen. Hier wurde eine neue Datenbank erstellt. Führen Sie den folgenden SQL -Befehl aus, um eine Datenbank mit dem Namen zu erstellen probiert.
# Datenbank erstellen SAMPLEDB;
Die folgende Ausgabe wird angezeigt, wenn die Datenbank erfolgreich erstellt wird.
Sie müssen die Datenbank ändern, um eine Tabelle für die zu erstellen abgetastet. Der "\ c" mit dem Datenbanknamen wird in PostgreSQL verwendet, um die aktuelle Datenbank zu ändern.
Die folgende SQL -Anweisung ändert die aktuelle Datenbank von Postgres zu SampledBB.
# \ c abgetastet
Die folgende SQL -Anweisung erstellt eine neue Tabelle mit dem Namen "Buch" in die Stichprobendatenbank. Die Tabelle enthält drei Felder. Dies sind ID, Titel und Autor_Name.
# Tabellenbuch erstellen (
id serielle Primärschlüssel,
Titel varchar (50),
Author_Name varchar (50));
Die folgende Ausgabe wird nach der Ausführung der oben genannten SQL -Anweisungen angezeigt.
Führen Sie die folgenden beiden Anweisungen ein, um zwei Datensätze in die Buchtabelle einzufügen.
# In Book einfügen (Titel, Author_Name)
Werte ('postgresql 14 Administration Cookbook', 'Simon Riggs, Gianni ciolli');
# In Book einfügen (Titel, Author_Name)
Werte ('lern postgresql', 'Luca Ferrari, Enrico Pirozzi');
Die folgende Ausgabe wird angezeigt, wenn die Datensätze erfolgreich eingefügt werden.
Führen Sie den folgenden Befehl aus, um eine Rolle mit dem Passwort zu erstellen, mit dem eine Verbindung mit dem primären Knoten aus dem Replikatknoten hergestellt wird.
# Rollenreplikus -Replikations -Anmeldung Passwort '12345' erstellen;
Die folgende Ausgabe wird angezeigt, wenn die Rolle erfolgreich erstellt wird.
Führen Sie den folgenden Befehl aus, um alle Berechtigungen auf dem zu erteilen Buch Tisch für die Replikuser.
# GEBEN SIE ALLES BUCH AN BUCH AN DIE REPLICAUSER;
Die folgende Ausgabe wird angezeigt, wenn die Erlaubnis für die erteilt wird Replikuser.
C. Modifiziere den PG_HBA.Conf Datei
Sie müssen die IP -Adresse des Replikatknotens in der benannten PostgreSQL -Konfigurationsdatei einrichten PG_HBA.Conf Das befindet sich am Standort, /etc/postgresql/14/main/pg_hba.Conf. Melden Sie sich im primären Knoten als Root -Benutzer an und führen Sie den folgenden Befehl aus, um die Datei zu bearbeiten.
$ nano/etc/postgresql/14/main/pg_hba.Conf
Fügen Sie am Ende dieser Datei die folgenden Informationen hinzu.
Gastgeber/32 Scram-Sha-256
Die IP des Sklavenservers ist auf „192) eingestellt.168.10.10 ”hier. Nach den vorherigen Schritten wurde die folgende Zeile in die Datei hinzugefügt. Hier ist der Datenbankname abgetastet, Der Benutzer ist Replikuser, und die IP -Adresse des Replik -Servers lautet 192.168.10.10.
Host ProbleedB Replikuser 192.168.10.10/32 SCRAM-SHA-256
Führen Sie den folgenden Befehl aus, um den PostgreSQL -Server neu zu starten, nachdem Sie die geändert haben PG_HBA.Conf Datei.
$ systemctl restart postgresql
D. Veröffentlichung erstellen
Führen Sie den folgenden Befehl aus, um eine Veröffentlichung für die zu erstellen Buch Tisch.
# Publikations -Bookpub für Tabellenbuch erstellen;
Führen Sie den folgenden PSQL-Meta-Command aus, um zu überprüfen, ob die Veröffentlichung erfolgreich erstellt wird oder nicht.
$ \ drp+
Die folgende Ausgabe wird angezeigt, wenn die Veröffentlichung erfolgreich für die Tabelle erstellt wird Buch.
Replik -Knotenkonfigurationen
Sie müssen eine Datenbank mit derselben Tabellenstruktur erstellen, die im primären Knoten im Replikatknoten erstellt wurde, und ein Abonnement erstellen, um den aktualisierten Inhalt der Tabelle aus dem Primärknoten zu speichern.
A. Erstellen Sie eine Datenbank und Tabelle
Sie können jede vorhandene PostgreSQL -Datenbank verwenden oder eine neue Datenbank zum Testen des logischen Replikationsprozesses erstellen. Hier wurde eine neue Datenbank erstellt. Führen Sie den folgenden SQL -Befehl aus, um eine Datenbank mit dem Namen zu erstellen Replicadb.
# Datenbank Replicadb erstellen;
Die folgende Ausgabe wird angezeigt, wenn die Datenbank erfolgreich erstellt wird.
Sie müssen die Datenbank ändern, um eine Tabelle für die zu erstellen Replicadb. Verwenden Sie das "\ c" mit dem Datenbanknamen, um die aktuelle Datenbank wie zuvor zu ändern.
Die folgende SQL -Anweisung ändert die aktuelle Datenbank aus Postgres Zu Replicadb.
# \ c Replicadb
Die folgende SQL -Anweisung erstellt eine neue Tabelle mit dem Namen Buch in die Replicadb Datenbank. Die Tabelle enthält dieselben drei Felder wie die im primäre Knoten erstellte Tabelle. Dies sind ID, Titel und Autor_Name.
# Tabellenbuch erstellen (
id serielle Primärschlüssel,
Titel varchar (50),
Author_Name varchar (50));
Die folgende Ausgabe wird nach der Ausführung der oben genannten SQL -Anweisungen angezeigt.
B. Abonnement erstellen
Führen Sie die folgende SQL -Anweisung aus, um ein Abonnement für die Datenbank des primären Knotens zu erstellen, um den aktualisierten Inhalt der Buchtabelle vom primären Knoten zum Replikatknoten abzurufen. Hier ist der Datenbankname des primären Knotens abgetastet, Die IP -Adresse des primären Knotens lautet “192.168.10.5”, Der Benutzername ist Replikuser, und das Passwort ist “12345”.
# Abonnement Booksub Connection 'DBNAME = SAMPLEDB HOST = 192.168.10.5 user = replicuser password = 12345 port = 5432 'Publikations -Bookpub;
Die folgende Ausgabe wird angezeigt, wenn das Abonnement erfolgreich im Replikatknoten erstellt wird.
Führen Sie den folgenden PSQL-Meta-Command aus, um zu überprüfen, ob das Abonnement erfolgreich erstellt wird oder nicht.
# \ drs+
Die folgende Ausgabe wird angezeigt, wenn das Abonnement erfolgreich für die Tabelle erstellt wird Buch.
C. Überprüfen Sie den Tabelleninhalt im Replikatknoten
Führen Sie den folgenden Befehl aus, um den Inhalt der Buchtabelle im Replikatknoten nach Abonnement zu überprüfen.
# Tischbuch;
Die folgende Ausgabe zeigt, dass zwei Datensätze, die in der Tabelle des Primärknotens eingefügt wurden. Es ist also klar, dass die einfache logische Replikation ordnungsgemäß abgeschlossen wurde.
Sie können in der Buchtabelle des Primärknotens ein oder mehrere Datensätze oder Datensätze hinzufügen oder Datensätze löschen oder in der ausgewählten Datenbank des Primärknotens eine oder mehrere Tabellen hinzufügen und die Datenbank des Replikatknotens überprüfen, um zu überprüfen Die primäre Datenbank wird in der Datenbank des Replikatknotens ordnungsgemäß repliziert oder nicht.
Fügen Sie neue Datensätze in den primären Knoten ein:
Führen Sie die folgenden SQL -Anweisungen aus, um drei Datensätze in die Einführung in die Buch Tabelle des Primärservers.
# In Book einfügen (Titel, Author_Name)
Werte ('Die Kunst von PostgreSQL', 'Dimitri Fontaine'),
('PostgreSQL: Up und Running, 3. Auflage', 'Regina Obe und Leo Hsu'),
('Postgresql High Performance Cookbook', 'Chitij Chauhan, Dinesh Kumar');
Führen Sie den folgenden Befehl aus, um den aktuellen Inhalt des Buch Tabelle im primären Knoten.
# Auswählen * aus Buch;
Die folgende Ausgabe zeigt, dass drei neue Datensätze ordnungsgemäß in die Tabelle eingefügt wurden.
Überprüfen Sie den Replik -Knoten nach dem Einfügen
Jetzt müssen Sie überprüfen, ob die Buch Die Tabelle des Replikatknotens wurde aktualisiert oder nicht. Melden Sie sich beim PostgreSQL -Server des Replikatknotens an und führen Sie den folgenden Befehl aus, um den Inhalt des Buch Tisch.
# Tischbuch;
Die folgende Ausgabe zeigt, dass drei neue Datensätze in die eingefügt wurden Bücher Tabelle der Replik Knoten, der in die eingefügt wurde primär Knoten des Buch Tisch. Die Änderungen in der Hauptdatenbank wurden also im Replikatknoten ordnungsgemäß repliziert.
Aktualisieren Sie den Datensatz im primären Knoten
Führen Sie den folgenden Aktualisierungsbefehl aus, der den Wert der aktualisiert Autorenname Feld, in dem der Wert des ID -Felds 2 ist. Es gibt nur einen Rekord in der Buch Tabelle, die dem Zustand der Update -Abfrage entspricht.
# Update Book Set Author_Name = "fahmida" wobei ID = 2;
Führen Sie den folgenden Befehl aus, um den aktuellen Inhalt des Buch Tisch in der primär Knoten.
# Auswählen * aus Buch;
Die folgende Ausgabe zeigt das der Autor_Name Der Feldwert des jeweiligen Datensatzes wurde nach Ausführung der Update -Abfrage aktualisiert.
Überprüfen Sie den Replikatknoten nach dem Update
Jetzt müssen Sie überprüfen, ob die Buch Die Tabelle des Replikatknotens wurde aktualisiert oder nicht. Melden Sie sich beim PostgreSQL -Server des Replikatknotens an und führen Sie den folgenden Befehl aus, um den Inhalt des Buch Tisch.
# Tischbuch;
Die folgende Ausgabe zeigt, dass ein Datensatz in der aktualisiert wurde Buch Tabelle des Replikatknotens, der im primären Knoten des Buch Tisch. Die Änderungen in der Hauptdatenbank wurden also im Replikatknoten ordnungsgemäß repliziert.
Datensatz im primären Knoten löschen
Führen Sie den folgenden Befehl Löschen aus, der einen Datensatz aus dem löscht Buch Tabelle der primär Knoten, wobei der Wert des Felds des Author_Name "fahmida" lautet. Es gibt nur einen Rekord in der Buch Tabelle, die dem Zustand der Löschabfrage entspricht.
# Aus Buch löschen wobei Author_Name = "fahmida";
Führen Sie den folgenden Befehl aus, um den aktuellen Inhalt des Buch Tisch in der primär Knoten.
# Auswählen * aus Buch;
Die folgende Ausgabe zeigt, dass ein Datensatz nach Ausführung der Löschabfrage gelöscht wurde.
Überprüfen Sie den Replik -Knoten nach dem Löschen
Jetzt müssen Sie überprüfen, ob die Buch Die Tabelle des Replikknotens wurde gelöscht oder nicht. Melden Sie sich beim PostgreSQL -Server des Replikatknotens an und führen Sie den folgenden Befehl aus, um den Inhalt des Buch Tisch.
# Tischbuch;
Die folgende Ausgabe zeigt, dass ein Datensatz in der gelöscht wurde Buch Tabelle des Replikatknotens, der im primären Knoten der gelöscht wurde Buch Tisch. Die Änderungen in der Hauptdatenbank wurden also im Replikatknoten ordnungsgemäß repliziert.
Abschluss
Der Zweck der logischen Replikation zur Durchführung der Sicherung der Datenbank, der Architektur der logischen Replikation, der Vor- und Nachteile der logischen Replikation und der Implementierung der logischen Replikation in der PostgreSQL -Datenbank wurden in diesem Tutorial mit Beispielen erläutert. Ich hoffe.