GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat a nakonfigurovat replikaci Master-Slave s PostgreSQL 9.6 na CentOS 7

PostgreSQL nebo Postgres je open source objektově-relační databázový systém (ORDBMS) s více než 15 lety aktivního vývoje. Je to výkonný databázový server, který zvládne vysoké pracovní zatížení. PostgreSQL lze použít na serverech Linux, Unix, BSD a Windows.

Replikace databáze master/slave je proces kopírování (synchronizace) dat z databáze na jednom serveru (master) do databáze na jiném serveru (slave). Hlavní výhodou tohoto procesu je distribuce databází na více počítačů, takže když má hlavní server problém, je k dispozici záložní stroj se stejnými daty pro zpracování požadavků bez přerušení.

PostgreSQL poskytuje několik způsobů, jak replikovat databázi. Může být použit pro účely zálohování a poskytování vysoce dostupného databázového serveru. V tomto tutoriálu vám ukážeme, jak nainstalovat a nakonfigurovat replikaci PostgreSQL 9.6 Master-Slave na serveru CentOS 7. Použijeme režim Hot standby a je to velmi dobrý výchozí bod, jak se naučit PostgreSQL do hloubky.

Co uděláme

  1. Nainstalujte PostgreSQL 9.6
  2. Spusťte a nakonfigurujte PostgreSQL 9.6
  3. Nakonfigurujte bránu firewall
  4. Konfigurace hlavního serveru
  5. Nakonfigurujte podřízený server
  6. Testování

Předpoklad

    • 1 server CentOS 7
      • Mistr - Oprávnění ke čtení a zápisu - IP:10.0.15.10
    • 1 server CentOS 7
      • Slave - Oprávnění pouze ke čtení - IP:10.0.15.11
    • Kořenová oprávnění

    Krok 1 – Instalace PostgreSQL 9.6

    V tomto tutoriálu probereme, jak nainstalovat nejnovější PostgreSQL verzi 9.6 na server CentOS 7. Oficiální úložiště CentOS standardně nabízí starší verzi, takže musíme nainstalovat PostgreSQL z oficiálního úložiště.

    Přidejte do systému nové úložiště PostgreSQL 9.6.

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

    Nyní nainstalujte PostgreSQL 9.6 pomocí následujícího příkazu yum.

    yum -y install postgresql96-server postgresql96-contrib

    Takže tímto způsobem můžete nainstalovat PostgreSQL 9.6.

    Krok 2 – Spuštění a konfigurace PostgreSQL 9.6

    Před spuštěním postgresové služby musíme inicializovat databázi. Chcete-li to provést, přejděte na stránku '/usr/pgsql-9.6/bin ' a inicializujte databázi pomocí nastavení postgres 'postgresql96-setup '.

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

    Dále spusťte službu postgres a povolte její automatické spouštění při startu systému.

    systemctl start postgresql-9.6
    systemctl enable postgresql-9.6

    Ve výchozím nastavení běží postgres na portu 5432. Ujistěte se tedy, že stav portu 5432 je 'LISTEN ' provedením příkazu netstat následujícím způsobem.

    netstat -plntu

    Pokud nemáte příkaz netstat, nainstalujte net-tools. Je součástí síťových nástrojů.

    yum -y install net-tools

    Byl tedy spuštěn PostgreSQL 9.6. Stále však musíme nakonfigurovat heslo pro uživatele postgres. Přihlaste se jako uživatel 'postgres' a poté otevřete shell 'psql' postgres.

    su - postgres
    psql

    Dejte 'postgres ' nové heslo uživatele s dotazem níže.

    \password postgres
    Enter new password:

    PostgreSQL 9.6 byl tedy spuštěn a bylo nakonfigurováno nové heslo pro uživatele postgres.

    Krok 3 – Konfigurace brány firewall

    Firewalld je výchozí nástroj pro správu firewallu na CentOS 7. Spustíme tuto službu a otevřeme port pro připojení PostgreSQL.

    Spusťte firewalld a povolte jeho automatické spouštění při spouštění systému pomocí následujících příkazů:

    systemctl start firewalld
    systemctl enable firewalld

    Dále přidejte novou službu postgres do firewalld pomocí následujících příkazů.

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

    Nyní zkontrolujte otevřený port služby.

    firewall-cmd --list-all

    A uvidíte, že služba PostgreSQL byla přidána do firewallu.

    POZNÁMKA: Spusťte Krok 1, Krok 2 a Krok 3 na všech Master a Slave.

    Krok 4 – Konfigurace hlavního serveru

    V tomto kroku nakonfigurujeme hlavní server pro replikaci. Toto je hlavní server, který umožňuje proces čtení a zápisu z aplikací, které na něm běží. PostgreSQL na hlavním serveru běží pouze na IP adrese '10.0.15.10' a provádí streamovací replikaci na podřízený server.

    Přejděte do datového adresáře pgsql '/var/lib/pgsql/9.6/data a upravte konfigurační soubor 'postgresql.conf '.

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

    Odkomentujte řádek 'listen_addresses' a změňte hodnotu IP adresy serveru na '10.0.15.10'.

    listen_addresses = '10.0.15.10'

    Odkomentujte řádek „wal_level“ a změňte hodnotu na „hot_standby '.

    wal_level = hot_standby

    Pro úroveň synchronizace použijeme místní synchronizaci. Odkomentujte a změňte řádek hodnot, jak je uvedeno níže.

    synchronous_commit = local

    Povolte režim archivace a zadejte proměnné archive_command příkaz jako hodnotu.

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

    Pro nastavení 'Replication' zrušte odkomentování řádku 'wal_sender' a změňte hodnotu na 2 (v tomto tutoriálu používáme pouze 2 servery master a slave) a pro 'wal_keep_segments' je hodnota 10.

    max_wal_senders = 2
    wal_keep_segments = 10

    U názvu aplikace odkomentujte řádek 'synchronous_standby_names' a změňte hodnotu na 'pgslave01 '.

    synchronous_standby_names = 'pgslave01'

    A je to. Uložte tyto změny a ukončete editor.

    V souboru postgresql.conf je povolen režim archivace, takže musíme vytvořit nový adresář pro účely archivace.

    Vytvořte nový adresář, změňte jeho oprávnění a změňte vlastníka na uživatele postgres.

    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/

    Nyní upravte soubor pg_hba.conf.

    vim pg_hba.conf

    Vložte konfiguraci níže na konec řádku.

    # 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

    Uložit a odejít. Veškerá konfigurace je dokončena. Nyní restartujte PostgreSQL 9.6 pomocí následujícího příkazu.

    systemctl restart postgresql-9.6

    Dále musíme vytvořit nového uživatele s oprávněními pro replikaci. Vytvoříme nového uživatele s názvem 'replika '.

    Přihlaste se jako uživatel postgres a vytvořte novou 'repliku ' uživatel s heslem '[e-mail chráněný] '.

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

    Takže tímto byla konfigurace PostgreSQL 9.6 Master dokončena a je vytvořen uživatel pro replikaci.

    Krok 5 – Konfigurace podřízeného serveru

    V tomto kroku nakonfigurujeme Slave server. Chceme nahradit postgres datový adresář na podřízeném serveru postgresovými daty z hlavního serveru a poté nakonfigurovat podřízený server tak, aby běžel pod IP adresou '10.0.15.11', a nakonec na něm povolit hot_standby, který umožňuje pouze čtení bez zápisu.

    Než začneme konfigurovat podřízený server, zastavte službu postgres pomocí příkazu systemctl níže.

    systemctl stop postgresql-9.6

    Poté přejděte do adresáře postgres a adresáře zálohovaných dat.

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

    Vytvořte nový datový adresář a změňte oprávnění k vlastnictví adresáře na uživatele postgres.

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

    Dále se přihlaste jako uživatel postgres a zkopírujte veškerý datový adresář z 'Master ' serveru na 'Slave ' server jako uživatel repliky.

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

    Zadejte své heslo a počkejte na přenos dat z hlavního na podřízený server.

    Po dokončení přenosu přejděte do adresáře dat postgres a upravte soubor postgresql.conf na podřízeném serveru.

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

    Změňte hodnotu 'listen_addresses' na IP adresu podřízeného serveru '10.0.15.11'.

    listen_addresses = '10.0.15.11'

    Povolit 'hot_standby “ na podřízeném serveru zrušením komentáře na následujícím řádku a změnou hodnoty na „on '.

    hot_standby = on

    A je to. Uložte změny a ukončete editor.

    Poté vytvořte nový 'recovery.conf ' soubor s vim.

    vim recovery.conf

    Vložte do něj následující konfiguraci.

    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'

    Uložte změny a ukončete soubor.

    Poznámka: Na stránce primary_conninfo , zadejte podrobnosti o svém vlastním serveru.

    Změňte oprávnění k vlastnictví souboru recovery.conf na oprávnění uživatele 'postgres'.

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

    A spusťte PostgreSQL 9.6 na podřízeném serveru.

    systemctl start postgresql-9.6

    Konfigurace podřízeného serveru byla dokončena.

    Nyní, když zkontrolujete Slave server, uvidíte, že PostgreSQL 9.6 běží na serveru s IP adresou '10.0.15.11 '.

    netstat -plntu

    Krok 6 – Testování

    Instalace a konfigurace pro replikaci PostgreSQL 9.6 Master-Slave jsou dokončeny. Chcete-li otestovat nastavení, zkontrolujte stavový tok replikace a otestujte replikaci dat z Master na Slave.

    Přihlaste se na hlavní server a přepněte na uživatele postgres.

    su - postgres

    Dále zkontrolujte replikaci stavu streamování PostgreSQL pomocí následujících příkazů.

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

    Měli byste vidět, že hodnota stavu je 'streaming a sync_state je 'sync '.

    Dále otestujte vložením dat z hlavního serveru a poté zkontrolujte všechna data na podřízeném serveru.

    Přihlaste se jako uživatel postgres a získejte přístup k prostředí PostgreSQL na 'MASTER ' server.

    su - postgres
    psql

    Vytvořte novou tabulku 'replica_test ' a vložte do něj některá data pomocí následujících vkládacích dotazů.

    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');

    A nyní se přihlaste do 'SLAVE ' server podobný tomu, jaký jste dělali na hlavním serveru.

    su - postgres
    psql

    Zkontrolujte všechna data z tabulky 'replica_test' pomocí dotazu níže.

    select * from replica_test;

    Uvidíte tedy, že všechna data jsou replikována od 'MASTER ' na server 'SLAVE ' server.

    Další test

    Otestujte provedení akce 'WRITE' ze serveru 'SLAVE'.

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

    A výsledek by měl být „Nelze spustit INSERT '.

    Instalace a konfigurace PostgreSQL 9.6 Master-Slave Replication na CentOS 7 je tedy úspěšná.

    Odkazy

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

    Cent OS
    1. Jak nainstalovat a nakonfigurovat Postgres 13 Ubuntu 20.04

    2. Jak nainstalovat a nakonfigurovat Postgres 13 na Centos 8

    3. Jak nainstalovat a nakonfigurovat Postgres 14 Ubuntu 20.04

    1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 7

    2. Jak nainstalovat a nakonfigurovat Redis na CentOS 7

    3. Jak nainstalovat a nakonfigurovat Postgres 14 na Debian 11

    1. Jak nainstalovat a nakonfigurovat GitLab na CentOS 7

    2. Jak nainstalovat a nakonfigurovat Nextcloud s Apache na CentOS 7

    3. Jak nainstalovat a nakonfigurovat Redmine na CentOS 7