GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren und konfigurieren Sie die Master-Slave-Replikation mit PostgreSQL 9.6 unter CentOS 7

PostgreSQL oder Postgres ist ein objektrelationales Open-Source-Datenbankverwaltungssystem (ORDBMS) mit mehr als 15 Jahren aktiver Entwicklung. Es ist ein leistungsstarker Datenbankserver, der hohe Arbeitslasten bewältigen kann. PostgreSQL kann auf Linux-, Unix-, BSD- und Windows-Servern verwendet werden.

Die Master/Slave-Datenbankreplikation ist ein Vorgang des Kopierens (Synchronisierens) von Daten aus einer Datenbank auf einem Server (dem Master) in eine Datenbank auf einem anderen Server (dem Slave). Der Hauptvorteil dieses Prozesses besteht darin, Datenbanken auf mehrere Rechner zu verteilen, sodass bei einem Problem des Master-Servers ein Backup-Rechner mit denselben Daten zur Verfügung steht, um Anfragen ohne Unterbrechung zu bearbeiten.

PostgreSQL bietet mehrere Möglichkeiten, eine Datenbank zu replizieren. Es kann für Sicherungszwecke und zur Bereitstellung eines Datenbankservers mit hoher Verfügbarkeit verwendet werden. In diesem Tutorial zeigen wir Ihnen, wie Sie die PostgreSQL 9.6 Master-Slave-Replikation auf einem CentOS 7-Server installieren und konfigurieren. Wir werden den Hot-Standby-Modus verwenden, und es ist ein sehr guter Ausgangspunkt, um PostgreSQL gründlich zu lernen.

Was wir tun werden

  1. Installieren Sie PostgreSQL 9.6
  2. Starten und konfigurieren Sie PostgreSQL 9.6
  3. Firewalld konfigurieren
  4. Master-Server konfigurieren
  5. Slave-Server konfigurieren
  6. Testen

Voraussetzung

    • 1 CentOS 7-Server
      • Meister - Lese- und Schreibberechtigung - IP:10.0.15.10
    • 1 CentOS 7-Server
      • Sklave - Nur Leseberechtigung – IP:10.0.15.11
    • Root-Berechtigungen

    Schritt 1 – PostgreSQL 9.6 installieren

    In diesem Tutorial besprechen wir, wie Sie die neueste PostgreSQL-Version 9.6 auf dem CentOS 7-Server installieren. Standardmäßig bietet das offizielle CentOS-Repository eine ältere Version, daher müssen wir PostgreSQL aus dem offiziellen Repository installieren.

    Fügen Sie dem System ein neues PostgreSQL 9.6-Repository hinzu.

    yum -y install https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

    Installieren Sie nun PostgreSQL 9.6 mit dem folgenden yum-Befehl.

    yum -y install postgresql96-server postgresql96-contrib

    Auf diese Weise können Sie also PostgreSQL 9.6 installieren.

    Schritt 2 – PostgreSQL 9.6 starten und konfigurieren

    Bevor wir den Postgres-Dienst starten, müssen wir die Datenbank initialisieren. Gehen Sie dazu in die Datei '/usr/pgsql-9.6/bin ' Verzeichnis und initialisieren Sie die Datenbank mit postgres setup 'postgresql96-setup '.

    cd /usr/pgsql-9.6/bin
    ./postgresql96-setup initdb

    Starten Sie als Nächstes den Postgres-Dienst und aktivieren Sie ihn so, dass er beim Systemstart automatisch gestartet wird.

    systemctl start postgresql-9.6
    systemctl enable postgresql-9.6

    Postgres wird standardmäßig auf Port 5432 ausgeführt. Stellen Sie also sicher, dass der Status von Port 5432 "LISTEN" ist ' durch Ausführen des netstat-Befehls auf folgende Weise.

    netstat -plntu

    Wenn Sie keinen netstat-Befehl haben, installieren Sie net-tools. Es ist Teil der net-tools.

    yum -y install net-tools

    PostgreSQL 9.6 wurde also gestartet. Aber wir müssen noch das Passwort für den Postgres-Benutzer konfigurieren. Melden Sie sich als „postgres“-Benutzer an und greifen Sie dann auf die postgres „psql“-Shell zu.

    su - postgres
    psql

    Geben Sie die 'postgres ' Benutzer neues Passwort mit der folgenden Abfrage.

    \password postgres
    Enter new password:

    PostgreSQL 9.6 wurde also gestartet und ein neues Passwort für den Postgres-Benutzer konfiguriert.

    Schritt 3 - Konfigurieren Sie Firewalld

    Firewalld ist standardmäßig ein Firewall-Verwaltungstool auf CentOS 7. Wir werden diesen Dienst starten und den Port für die PostgreSQL-Verbindung öffnen.

    Starten Sie firewalld und aktivieren Sie es mit den folgenden Befehlen so, dass es beim Systemstart automatisch gestartet wird:

    systemctl start firewalld
    systemctl enable firewalld

    Fügen Sie als Nächstes mit den folgenden Befehlen einen neuen Postgres-Dienst zu firewalld hinzu.

    firewall-cmd --add-service=postgresql --permanent
    firewall-cmd --reload

    Überprüfen Sie nun den offenen Port des Dienstes.

    firewall-cmd --list-all

    Und Sie werden sehen, dass der PostgreSQL-Dienst zur Firewall hinzugefügt wurde.

    HINWEIS: Führen Sie Schritt 1, Schritt 2 und Schritt 3 für alle Master und Slaves aus.

    Schritt 4 - Master-Server konfigurieren

    In diesem Schritt konfigurieren wir einen Masterserver für die Replikation. Dies ist der Hauptserver, der Lese- und Schreibvorgänge von darauf ausgeführten Anwendungen zulässt. PostgreSQL auf dem Master läuft nur auf der IP-Adresse „10.0.15.10“ und führt eine Streaming-Replikation zum Slave-Server durch.

    Gehen Sie zum pgsql-Datenverzeichnis '/var/lib/pgsql/9.6/data ' und bearbeiten Sie die Konfigurationsdatei 'postgresql.conf '.

    cd /var/lib/pgsql/9.6/data
    vim postgresql.conf

    Entkommentieren Sie die Zeile „listen_addresses“ und ändern Sie den Wert der Server-IP-Adresse in „10.0.15.10“.

    listen_addresses = '10.0.15.10'

    Entkommentieren Sie die Zeile „wal_level“ und ändern Sie den Wert in „hot_standby '.

    wal_level = hot_standby

    Für die Synchronisierungsebene verwenden wir die lokale Synchronisierung. Entkommentieren und ändern Sie die Wertzeile wie unten.

    synchronous_commit = local

    Aktivieren Sie den Archivierungsmodus und geben Sie der Variablen archive_command einen Befehl als Wert.

    archive_mode = on
    archive_command = 'cp %p /var/lib/pgsql/9.6/archive/%f'

    Kommentieren Sie für die Einstellungen „Replikation“ die Zeile „wal_sender“ aus und ändern Sie den Wert auf 2 (in dieser Anleitung verwenden wir nur 2 Server, Master und Slave), und für „wal_keep_segments“ ist der Wert 10.

    max_wal_senders = 2
    wal_keep_segments = 10

    Kommentieren Sie für den Anwendungsnamen die Zeile „synchronous_standby_names“ aus und ändern Sie den Wert in „pgslave01 '.

    synchronous_standby_names = 'pgslave01'

    Das ist es. Speichern Sie diese Änderungen und beenden Sie den Editor.

    In der postgresql.conf-Datei ist der Archivmodus aktiviert, also müssen wir ein neues Verzeichnis für Archivierungszwecke erstellen.

    Erstellen Sie ein neues Verzeichnis, ändern Sie seine Berechtigung und ändern Sie den Eigentümer in den Postgres-Benutzer.

    mkdir -p /var/lib/pgsql/9.6/archive/
    chmod 700 /var/lib/pgsql/9.6/archive/
    chown -R postgres:postgres /var/lib/pgsql/9.6/archive/

    Bearbeiten Sie nun die Datei pg_hba.conf.

    vim pg_hba.conf

    Konfiguration unten bis zum Ende der Zeile einfügen.

    # Localhost
    host    replication     replica          127.0.0.1/32            md5

    # PostgreSQL Master IP address
    host    replication     replica          10.0.15.10/32            md5

    # PostgreSQL SLave IP address
    host    replication     replica          10.0.15.11/32            md5

    Speichern und schließen. Die gesamte Konfiguration ist abgeschlossen. Starten Sie nun PostgreSQL 9.6 mit dem folgenden Befehl neu.

    systemctl restart postgresql-9.6

    Als nächstes müssen wir einen neuen Benutzer mit Replikationsberechtigungen erstellen. Wir werden einen neuen Benutzer mit dem Namen „replica“ erstellen '.

    Melden Sie sich als Postgres-Benutzer an und erstellen Sie ein neues 'Replikat ' Benutzer mit Passwort '[email protected] '.

    su - postgres
    createuser --replication -P replica
    Enter New Password:

    Damit ist die Master-Konfiguration von PostgreSQL 9.6 abgeschlossen und der Benutzer für die Replikation erstellt.

    Schritt 5 - Slave-Server konfigurieren

    In diesem Schritt konfigurieren wir den Slave-Server. Wir möchten das Postgres-Datenverzeichnis auf dem Slave-Server durch die Postgres-Daten des Master-Servers ersetzen und dann den Slave-Server so konfigurieren, dass er unter der IP-Adresse „10.0.15.11“ läuft, und schließlich hot_standby darauf aktivieren, um nur Lesen ohne Schreiben zuzulassen.

    Bevor wir mit der Konfiguration des Slave-Servers beginnen, stoppen Sie den Postgres-Dienst mit dem folgenden systemctl-Befehl.

    systemctl stop postgresql-9.6

    Wechseln Sie dann in das Postgres-Verzeichnis und sichern Sie das Datenverzeichnis.

    cd /var/lib/pgsql/9.6/
    mv data data-backup

    Erstellen Sie ein neues Datenverzeichnis und ändern Sie die Eigentumsberechtigungen des Verzeichnisses auf den Postgres-Benutzer.

    mkdir -p data/
    chmod 700 data/
    chown -R postgres:postgres data/

    Melden Sie sich als Nächstes als Postgres-Benutzer an und kopieren Sie das gesamte Datenverzeichnis aus dem 'Master ' Server zum 'Slave ' Server als Replica-Benutzer.

    su - postgres
    pg_basebackup -h 10.0.15.10 -U replica -D /var/lib/pgsql/9.6/data -P --xlog
    Password:

    Geben Sie Ihr Passwort ein und warten Sie auf die Datenübertragung vom Master- zum Slave-Server.

    Wechseln Sie nach Abschluss der Übertragung in das Postgres-Datenverzeichnis und bearbeiten Sie die Datei postgresql.conf auf dem Slave-Server.

    cd /var/lib/pgsql/9.6/data/
    vim postgresql.conf

    Ändern Sie den Wert von „listen_addresses“ in die IP-Adresse des Slave-Servers „10.0.15.11“.

    listen_addresses = '10.0.15.11'

    Aktivieren Sie 'hot_standby ' auf dem Slave-Server, indem Sie die folgende Zeile auskommentieren und den Wert auf 'on ändern '.

    hot_standby = on

    Das ist es. Speichern Sie die Änderungen und beenden Sie den Editor.

    Erstellen Sie dann eine neue 'recovery.conf ' Datei mit vim.

    vim recovery.conf

    Fügen Sie die folgende Konfiguration darin ein.

    standby_mode = 'on'
    primary_conninfo = 'host=10.0.15.10 port=5432 user=replica [email protected] application_name=pgslave01'
    trigger_file = '/tmp/postgresql.trigger.5432'

    Speichern Sie die Änderungen und beenden Sie die Datei.

    Hinweis: Auf der primary_conninfo , geben Sie Ihre eigenen Serverdetails ein.

    Ändern Sie die Eigentumsberechtigungen der Datei recovery.conf auf die des Benutzers „postgres“.

    chmod 600 recovery.conf
    chown postgres:postgres recovery.conf

    Und starten Sie PostgreSQL 9.6 auf dem Slave-Server.

    systemctl start postgresql-9.6

    Die Konfiguration des Slave-Servers ist abgeschlossen.

    Wenn Sie nun den Slave-Server überprüfen, sehen Sie, dass PostgreSQL 9.6 auf dem Server mit der IP-Adresse „10.0.15.11“ ausgeführt wird '.

    netstat -plntu

    Schritt 6 – Testen

    Installation und Konfiguration für die PostgreSQL 9.6 Master-Slave-Replikation sind abgeschlossen. Um das Setup zu testen, überprüfen Sie den Statusstrom der Replikation und testen Sie die Datenreplikation vom Master zum Slave.

    Melden Sie sich beim Master-Server an und wechseln Sie zum postgres-Benutzer.

    su - postgres

    Überprüfen Sie als Nächstes die Replikation des Streaming-Status von PostgreSQL mit den folgenden Befehlen.

    psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"
    psql -x -c "select * from pg_stat_replication;"

    Der Statuswert sollte "streaming" lauten ', und der sync_state ist 'sync '.

    Als nächstes testen Sie, indem Sie Daten vom Master einfügen und dann alle Daten auf dem Slave-Server überprüfen.

    Melden Sie sich als postgres-Benutzer an und greifen Sie auf die PostgreSQL-Shell auf dem 'MASTER zu '-Server.

    su - postgres
    psql

    Erstellen Sie eine neue Tabelle 'replica_test ' und fügen Sie mit den folgenden Einfügeabfragen einige Daten ein.

    CREATE TABLE replica_test (test varchar(100));
    INSERT INTO replica_test VALUES ('howtoforge.com');
    INSERT INTO replica_test VALUES ('This is from Master');
    INSERT INTO replica_test VALUES ('pg replication by hakase-labs');

    Und jetzt melden Sie sich beim 'SLAVE an ' Server ähnlich wie auf dem Master.

    su - postgres
    psql

    Überprüfen Sie alle Daten aus der Tabelle „replica_test“ mit der folgenden Abfrage.

    select * from replica_test;

    Sie sehen also, dass alle Daten repliziert werden vom 'MEISTER ' Server zum 'SLAVE '-Server.

    Zusätzlicher Test

    Testen Sie, um die 'WRITE'-Aktion vom 'SLAVE'-Server auszuführen.

    INSERT INTO replica_test VALUES ('this is SLAVE');

    Und das Ergebnis sollte 'Kann INSERT nicht ausführen lauten '.

    Die Installation und Konfiguration der PostgreSQL 9.6 Master-Slave-Replikation auf CentOS 7 ist also erfolgreich.

    Referenzen

    • https://www.postgresql.org/download/linux/redhat/
    • https://www.server-world.info/en/note?os=CentOS_7

    Cent OS
    1. So installieren und konfigurieren Sie Nginx unter CentOS 7

    2. So installieren und konfigurieren Sie Postgres 13 Ubuntu 20.04

    3. So installieren und konfigurieren Sie Postgres 13 auf Centos 8

    4. So installieren und konfigurieren Sie Postgres 14 Ubuntu 20.04

    5. So installieren und konfigurieren Sie Postgres 14 unter Debian 11

    So installieren und konfigurieren Sie GitLab CE unter CentOS 7

    So installieren und konfigurieren Sie Zabbix unter CentOS 7

    So installieren Sie OwnCloud 8 mit Nginx und MariaDB auf CentOS 7

    So installieren und konfigurieren Sie OpenLiteSpeed ​​mit PHP 7 unter CentOS 7

    So installieren und verwenden Sie Ruby on Rails mit PostgreSQL unter CentOS 7

    So installieren Sie PostgreSQL mit pgAdmin unter CentOS 8