GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare e configurare la replica master-slave con PostgreSQL 9.6 su CentOS 7

PostgreSQL o Postgres è un sistema di gestione di database relazionali a oggetti (ORDBMS) open source con oltre 15 anni di sviluppo attivo. È un potente server di database in grado di gestire carichi di lavoro elevati. PostgreSQL può essere utilizzato su server Linux, Unix, BSD e Windows.

La replica del database master/slave è un processo di copia (sincronizzazione) dei dati da un database su un server (il master) a un database su un altro server (lo slave). Il vantaggio principale di questo processo è la distribuzione dei database su più macchine, quindi quando il server master ha un problema, è disponibile una macchina di backup con gli stessi dati per gestire le richieste senza interruzioni.

PostgreSQL fornisce diversi modi per replicare un database. Può essere utilizzato per scopi di backup e per fornire un server di database ad alta disponibilità. In questo tutorial, ti mostreremo come installare e configurare la replica Master-Slave di PostgreSQL 9.6 su un server CentOS 7. Useremo la modalità Hot standby, ed è un ottimo punto di partenza per imparare a fondo PostgreSQL.

Cosa faremo

  1. Installa PostgreSQL 9.6
  2. Avvia e configura PostgreSQL 9.6
  3. Configura Firewalld
  4. Configura il server principale
  5. Configura server slave
  6. Test

Prerequisito

    • 1 server CentOS 7
      • Maestro - Autorizzazione di lettura e scrittura - IP:10.0.15.10
    • 1 server CentOS 7
      • Schiavo - Autorizzazione di sola lettura- IP:10.0.15.11
    • privilegi radice

    Passaggio 1:installazione di PostgreSQL 9.6

    In questo tutorial, discuteremo come installare l'ultima versione di PostgreSQL 9.6 sul server CentOS 7. Per impostazione predefinita, il repository ufficiale di CentOS offre una versione precedente, quindi è necessario installare PostgreSQL dal repository ufficiale.

    Aggiungi un nuovo repository PostgreSQL 9.6 al sistema.

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

    Ora installa PostgreSQL 9.6 usando il seguente comando yum.

    yum -y install postgresql96-server postgresql96-contrib

    Quindi, in questo modo, puoi installare PostgreSQL 9.6.

    Passaggio 2 - Avvia e configura PostgreSQL 9.6

    Prima di avviare il servizio postgres, è necessario inizializzare il database. Per questo, vai su '/usr/pgsql-9.6/bin ' directory e inizializza il database con postgres setup 'postgresql96-setup '.

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

    Quindi, avvia il servizio postgres e abilitalo per l'avvio automatico all'avvio del sistema.

    systemctl start postgresql-9.6
    systemctl enable postgresql-9.6

    Per impostazione predefinita, postgres viene eseguito sulla porta 5432. Quindi assicurati che lo stato della porta 5432 sia 'ASCOLTA ' eseguendo il comando netstat nel modo seguente.

    netstat -plntu

    Se non hai un comando netstat, installa net-tools. Fa parte degli strumenti di rete.

    yum -y install net-tools

    Quindi PostgreSQL 9.6 è stato avviato. Ma dobbiamo ancora configurare la password per l'utente postgres. Accedi come utente 'postgres', quindi accedi alla shell 'psql' di postgres.

    su - postgres
    psql

    Dai il 'postgres ' utente nuova password con la query sottostante.

    \password postgres
    Enter new password:

    Quindi PostgreSQL 9.6 è stato avviato ed è stata configurata una nuova password per l'utente postgres.

    Passaggio 3 - Configura Firewalld

    Firewalld è uno strumento di gestione del firewall predefinito su CentOS 7. Inizieremo questo servizio e apriremo la porta per la connessione PostgreSQL.

    Avvia firewalld e abilitalo per l'avvio automatico all'avvio del sistema utilizzando i seguenti comandi:

    systemctl start firewalld
    systemctl enable firewalld

    Quindi, aggiungi il nuovo servizio postgres a firewalld con i seguenti comandi.

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

    Ora controlla la porta aperta del servizio.

    firewall-cmd --list-all

    E vedrai che il servizio PostgreSQL è stato aggiunto al firewalld.

    NOTA: Esegui i passaggi 1, 2 e 3 su tutti i master e gli slave.

    Fase 4:configura il server principale

    In questo passaggio configureremo un server master per la replica. Questo è il server principale, che consente il processo di lettura e scrittura dalle applicazioni in esecuzione su di esso. PostgreSQL sul master viene eseguito solo sull'indirizzo IP '10.0.15.10' ed esegue la replica in streaming sul server slave.

    Vai alla directory dei dati di pgsql '/var/lib/pgsql/9.6/data ' e modifica il file di configurazione 'postgresql.conf '.

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

    Decommenta la riga 'listen_addresses' e cambia il valore dell'indirizzo IP del server in '10.0.15.10'.

    listen_addresses = '10.0.15.10'

    Decommenta la riga 'wal_level' e cambia il valore in 'hot_standby '.

    wal_level = hot_standby

    Per il livello di sincronizzazione, utilizzeremo la sincronizzazione locale. Decommenta e modifica la riga del valore come di seguito.

    synchronous_commit = local

    Abilita la modalità di archiviazione e assegna alla variabile archive_command un comando come valore.

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

    Per le impostazioni "Replica", decommenta la riga "wal_sender" e cambia il valore in 2 (in questo tutorial usiamo solo 2 server master e slave) e per il valore "wal_keep_segments" è 10.

    max_wal_senders = 2
    wal_keep_segments = 10

    Per il nome dell'applicazione, decommenta la riga 'synchronous_standby_names' e cambia il valore in 'pgslave01 '.

    synchronous_standby_names = 'pgslave01'

    Questo è tutto. Salva queste modifiche ed esci dall'editor.

    Andando avanti, nel file postgresql.conf, la modalità di archiviazione è abilitata, quindi dobbiamo creare una nuova directory per scopi di archiviazione.

    Crea una nuova directory, cambia la sua autorizzazione e cambia il proprietario nell'utente 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/

    Ora modifica il file pg_hba.conf.

    vim pg_hba.conf

    Incolla la configurazione di seguito fino alla fine della riga.

    # 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

    Salva ed esci. Tutta la configurazione è completa. Ora riavvia PostgreSQL 9.6 usando il seguente comando.

    systemctl restart postgresql-9.6

    Successivamente, dobbiamo creare un nuovo utente con privilegi di replica. Creeremo un nuovo utente chiamato 'replica '.

    Accedi come utente postgres e crea una nuova 'replica ' utente con password '[email protetta] '.

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

    Quindi, con questo, la configurazione Master di PostgreSQL 9.6 è stata completata e viene creato l'utente per la replica.

    Passaggio 5:configurazione del server slave

    In questo passaggio, configureremo il server Slave. Vogliamo sostituire la directory dei dati postgres sul server slave con i dati postgres dal server master, quindi configurare il server slave per l'esecuzione con l'indirizzo IP '10.0.15.11' e infine abilitare hot_standby su di esso per consentire solo la lettura senza scrittura.

    Prima di iniziare a configurare il server slave, interrompi il servizio postgres utilizzando il comando systemctl di seguito.

    systemctl stop postgresql-9.6

    Quindi vai alla directory postgres e alla directory dei dati di backup.

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

    Crea una nuova directory di dati e cambia i permessi di proprietà della directory con l'utente postgres.

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

    Quindi, accedi come utente postgres e copia tutta la directory dei dati dal 'Master ' allo 'Slave ' server come utente di replica.

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

    Digita la tua password e attendi il trasferimento dei dati dal server master al server slave.

    Al termine del trasferimento, vai alla directory dei dati di postgres e modifica il file postgresql.conf sul server slave.

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

    Modifica il valore di 'listen_addresses' con l'indirizzo IP del server slave '10.0.15.11'.

    listen_addresses = '10.0.15.11'

    Abilita 'hot_standby ' sul server slave decommentando la riga seguente e modificando il valore in 'on '.

    hot_standby = on

    Questo è tutto. Salva le modifiche ed esci dall'editor.

    Quindi crea il nuovo 'recovery.conf ' file con vim.

    vim recovery.conf

    Incolla la seguente configurazione al suo interno.

    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'

    Salva le modifiche ed esci dal file.

    Nota: Su primary_conninfo , inserisci i dettagli del tuo server.

    Modifica le autorizzazioni di proprietà del file recovery.conf con quelle dell'utente 'postgres'.

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

    E avvia PostgreSQL 9.6 sul server slave.

    systemctl start postgresql-9.6

    La configurazione del server slave è stata completata.

    Ora, quando controlli il server Slave, vedrai che PostgreSQL 9.6 è in esecuzione sul server con l'indirizzo IP '10.0.15.11 '.

    netstat -plntu

    Fase 6 - Test

    L'installazione e la configurazione per la replica Master-Slave di PostgreSQL 9.6 sono complete. Per testare la configurazione, controlla il flusso di stato della replica e verifica la replica dei dati dal master allo slave.

    Accedi al server Master e passa all'utente postgres.

    su - postgres

    Quindi, controlla la replica dello stato di streaming di PostgreSQL con i seguenti comandi.

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

    Dovresti vedere che il valore dello stato è 'streaming ' e sync_state è 'sync '.

    Quindi, prova inserendo i dati dal master e quindi controlla tutti i dati sul server slave.

    Accedi come utente postgres e accedi alla shell PostgreSQL su 'MASTER ' server.

    su - postgres
    psql

    Crea una nuova tabella 'replica_test ' e inserisci alcuni dati al suo interno con le seguenti query di inserimento.

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

    E ora accedi a 'SLAVE ' server simile a quello che hai fatto sul master.

    su - postgres
    psql

    Controlla tutti i dati dalla tabella 'replica_test' utilizzando la query seguente.

    select * from replica_test;

    Quindi vedrai che tutti i dati sono replicati dal 'MASTER ' al server 'SLAVE ' server.

    Test aggiuntivo

    Prova per eseguire l'azione 'SCRITTURA' dal server 'SLAVE'.

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

    E il risultato dovrebbe essere "Impossibile eseguire INSERT '.

    Quindi l'installazione e la configurazione di PostgreSQL 9.6 Master-Slave Replication su CentOS 7 ha esito positivo.

    Riferimenti

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

    Cent OS
    1. Come installare e configurare Nginx su CentOS 7

    2. Come installare e configurare Postgres 13 Ubuntu 20.04

    3. Come installare e configurare Postgres 13 su Centos 8

    4. Come installare e configurare Postgres 14 Ubuntu 20.04

    5. Come installare e configurare Postgres 14 su Debian 11

    Come installare e configurare GitLab CE su CentOS 7

    Come installare e configurare Zabbix su CentOS 7

    Come installare OwnCloud 8 con Nginx e MariaDB su CentOS 7

    Come installare e configurare OpenLiteSpeed ​​con PHP 7 su CentOS 7

    Come installare e utilizzare Ruby on Rails con PostgreSQL su CentOS 7

    Come installare PostgreSQL con pgAdmin su CentOS 8