So richten Sie die logische Replikation von Postgresql auf Ubuntu ein

So richten Sie die logische Replikation von Postgresql auf Ubuntu ein
„Daten sind ein sehr wichtiger Bestandteil jeder Anwendung. PostgreSQL ist ein beliebter Datenbankserver, um die Daten der Anwendung zu speichern. Datenverfügbarkeit ist eine wesentliche Funktion einer Datenbank. Es ist besser, mehrere Kopien der Datenbank zu führen, um die Datenverfügbarkeit der Anwendung sicherzustellen. Wenn keine Sicherungskopie der Datenbank gespeichert ist und die Datenbank jederzeit abstürzt, ist die Anwendung nicht zugänglich. Eine oder mehrere Kopien der PostgreSQL -Datenbank können gespeichert werden, um diese Situation zu vermeiden, und sie wird als Replikation bezeichnet. Zwei Arten von Replikationen können auf PostgreSQL durchgeführt werden. Dies sind logische Replikation und physikalische Replikation. In diesem Tutorial wurde die Möglichkeit zur Einrichtung der logischen Replikation der PostgreSQL -Datenbank erläutert.”

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.

  • Die Datenobjekte replizieren basierend auf der Replikationidentität, z. B. dem Primärschlüssel oder dem eindeutigen Schlüssel.
  • Verschiedene Indizes und Sicherheitsdefinitionen können verwendet werden, um Daten in den Zielserver zu schreiben.
  • Die ereignisbasierte Filterung kann durch logische Replikation erfolgen.
  • Logische Replikation unterstützt die Cross -Version. Das heißt, es kann zwischen zwei verschiedenen Versionen der PostgreSQL -Datenbank implementiert werden.
  • Mehrere Abonnements werden von der Veröffentlichung unterstützt.
  • Der kleine Satz von Tabellen kann repliziert werden.
  • Es dauert minimale Serverlast.
  • Es kann für Upgrades und Migration verwendet werden.
  • Es ermöglicht das parallele Streaming unter den Verlage.

Vorteile der logischen Replikation

Einige Vorteile der logischen Replikation werden nachstehend erwähnt.

  • Es wird für die Replikation zwischen zwei verschiedenen Versionen von PostgreSQL -Datenbanken verwendet.
  • Es kann verwendet werden, um Daten zwischen verschiedenen Benutzergruppen zu replizieren.
  • Es kann verwendet werden, um mehrere Datenbanken für analytische Zwecke in eine einzelne Datenbank zu verbinden.
  • Es kann verwendet werden, um inkrementelle Änderungen in einer Teilmenge einer Datenbank oder einer einzelnen Datenbank an andere Datenbanken zu senden.

Nachteile der logischen Replikation

Einige Einschränkungen der logischen Replikation werden nachstehend erwähnt.

  • In der Tabelle der Quelldatenbank ist es obligatorisch, den Primärschlüssel oder ein eindeutiger Schlüssel zu haben.
  • Der vollständige qualifizierte Name der Tabelle ist zwischen der Veröffentlichung und dem Abonnement erforderlich. Wenn der Tabellenname für Quelle und Ziel nicht gleich ist, funktioniert die logische Replikation nicht.
  • Es unterstützt keine bidirektionale Replikation.
  • Es kann nicht verwendet werden, um Schema/DDL zu replizieren.
  • Es kann nicht verwendet werden, um Kürzung zu replizieren.
  • Es kann nicht verwendet werden, um Sequenzen zu replizieren.
  • Es ist obligatorisch, allen Tabellen Super -Benutzer -Berechtigungen hinzuzufügen.
  • Verschiedene Reihenfolge der Spalten können auf dem Zielserver verwendet werden, aber die Spaltennamen müssen für das Abonnement und die Veröffentlichung gleich sein.

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.