GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare la replica master-slave per PostgreSQL 9.6 su Ubuntu 16.04

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 e può 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 (gli 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 PostgreSQL 9.6 Master-Slave Replication sul server Ubuntu 16.04. Useremo la modalità Hot standby, ed è un ottimo punto di partenza per imparare a fondo PostgreSQL.

Cosa faremo:

  1. Installa PostgreSQL 9.6.
  2. Configura Firewall UFW.
  3. Configura server MASTER.
  4. Configura il server SLAVE.
  5. Copia i dati PostgreSQL da MASTER a SLAVE.
  6. Test.

Prerequisito:

  • 1 server Ubuntu 16.04
    • MAESTRO - Consenti lettura e scrittura - IP:10.0.15.10
  • 1 server Ubuntu 16.04
    • SCHIAVO - Sola lettura - IP:10.0.15.11
  • privilegi radice

Passaggio 1:installazione di PostgreSQL 9.6

In questo tutorial, installeremo l'ultima versione di PostgreSQL 9.6. Nel repository ufficiale di Ubuntu, forniscono solo PostgreSQL 9.5, quindi dobbiamo installare l'ultima versione direttamente dal repository PostgreSQL.

Aggiungi il repository postgreSQL 9.6 alla directory sources.list.d.

echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' | tee /etc/apt/sources.list.d/postgresql.list

E importa la chiave di firma PostgreSQL nel sistema.

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Ora aggiorna il repository di sistema con il comando apt.

apt-get update

Quindi, installa il pacchetto PosgreSQL 9.6 con il comando apt di seguito.

apt-get install -y postgresql-9.6 postgresql-contrib-9.6

Se l'installazione è stata completata, aggiungila per avviarla automaticamente all'avvio.

systemctl enable postgresql

Per impostazione predefinita, PostgreSQL è in esecuzione sull'indirizzo IP localhost (127.0.0.1) con la porta 5432 su Ubuntu, controllalo con il comando netstat.

netstat -plntu

PostgreSQL 9.6 è in esecuzione sul sistema. Nel passaggio successivo, dobbiamo configurare una password per l'utente postgres.

Dall'account root, accedi all'utente postgres con il comando su, quindi accedi al terminale front-end postgres psql.

su - postgres
psql

Modifica la password per l'utente postgres e controlla le informazioni di connessione con le query postgres di seguito.

\password postgres
\conninfo

PostgreSQL 9.6 è stato installato sul sistema, è in esecuzione senza errori ed è stata aggiornata la password per l'utente postgres.

Passaggio 2:configurazione del firewall UFW

UFW o Uncomplicated Firewall è un'applicazione per gestire il firewall basato su iptables su Ubuntu. UFW è lo strumento di configurazione del firewall predefinito per Ubuntu Linux e fornisce un modo intuitivo per configurare il firewall.

Possiamo installare ufw dal repository principale di Ubuntu con il comando apt.

apt-get install -y ufw

Aggiungi nuovi servizi al firewall UFW:aggiungi servizi SSH e PostgreSQL con i comandi seguenti.

ufw allow ssh
ufw allow postgresql

Abilita il firewall UFW e controlla lo stato.

ufw enable
ufw status

È stato installato il firewall UFW ed è stato aggiunto il servizio PostgreSQL.

NOTA:

Eseguire il passaggio 1 e il passaggio 2 sul server MASTER e SLAVE.

Passaggio 3:configurazione del server MASTER PostgreSQL

Il server master ha l'indirizzo IP 10.0.15.10 e il servizio postgres verrà eseguito con quell'IP con la porta predefinita. Il server master avrà l'autorizzazione per LETTURA e SCRITTURA sul database ed eseguirà la replica in streaming sul server slave.

Vai alla directory di configurazione di postgres '/etc/postgresql/9.6/main ' e modifica il postgresql.conf file con vim.

cd /etc/postgresql/9.6/main/
vim postgresql.conf

Decommenta la riga 'listen_addresses' e cambia il valore nell'indirizzo IP del server master '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 cambia l'opzione archive_command con il comando 'cp %p /var/lib/postgresql/9.6/main/archive/%f'.

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

Per le impostazioni 'Replica', in questo tutorial utilizziamo solo 2 server, master e slave, decommenta il 'wal_sender ' e cambia il valore in 2 e per i 'wal_keep_segments ' il valore è 10 .

max_wal_senders = 2
wal_keep_segments = 10

Per il nome dell'applicazione, decommenta la riga 'synchronous_standby_names' e cambia il valore con il nome 'pgslave001 '.

synchronous_standby_names = 'pgslave001'

Salva il file ed esci dall'editor.

Nel file postgresql.conf, la modalità archivio è abilitata, quindi è necessario creare una nuova directory per l'archivio. Crea una nuova directory di archivio, cambia l'autorizzazione e cambia il proprietario nell'utente postgres.

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

Quindi, modifica il file pg_hba.conf per la configurazione dell'autenticazione.

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, quindi riavvia PostgreSQL.

systemctl restart postgresql

PostgreSQL è in esecuzione con l'indirizzo IP 10.0.15.10, controllalo con il comando netstat.

netstat -plntu

Quindi, crea un nuovo utente per la replica. Creeremo un nuovo utente chiamato 'replica ' con password '[email protetta] '. Scegli qui una password sicura per la tua configurazione! Accedi all'utente postgres e accedi al terminale front-end di postgres psql.

su - postgres
psql

Crea una nuova "replica ' utente con password '[email protetta] ' con la query postgres di seguito.

CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD '[email protected]';

Ora controlla il nuovo utente con 'du ' di seguito e vedrai l'utente di replica con privilegi di replica.

\du

La configurazione del server MASTER è stata completata.

Passaggio 4:configurazione del server SLAVE

Il server SLAVE ha l'indirizzo IP 10.0.15.11. E questo server avrà solo un'autorizzazione di LETTURA per il database. Il server del database Postgres verrà eseguito con l'indirizzo IP del server, non con un IP localhost.

Arresta il servizio postgres sul server slave con il comando systemctl di seguito.

systemctl stop postgresql

Vai alla directory di configurazione di Postgres '/etc/postgresql/9.6/main ', quindi modifica il file di configurazione 'postgresql.conf '.

cd /etc/postgresql/9.6/main/
vim postgresql.conf

Decommenta la riga listen_addresses e sostituisci il valore con l'indirizzo IP del server slave 10.0.15.11 .

listen_addresses = '10.0.15.11'

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

wal_level = hot_standby

Per il livello di sincronizzazione, decommenta la riga synchronous_commit e modifica il valore come mostrato di seguito.

synchronous_commit = local

Per l'impostazione di replica, decommenta la riga max_wal_senders e sostituisci il valore con '2 ' perché usa solo 2 server. E per i wal_keep_segments, cambia il valore in '10 '.

max_wal_senders = 2
wal_keep_segments = 10

Decommenta la riga 'synchronous_standby_names' per il nome dell'applicazione e cambia il valore nel nome 'pgslave001 '.

synchronous_standby_names = 'pgslave001'

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

hot_standby = on

Salva il file ed esci dall'editor.

Passaggio 5:copia i dati PostgreSQL dal MASTER allo SLAVE

Successivamente, vogliamo sostituire la directory principale di postgres in 'SLAVE ' server con la directory dati principale da 'MASTER ' server.

Accedi al server SLAVE e accedi all'utente postgres.

su - postgres

Vai alla directory dei dati di postgres 'main ' ed esegui il backup rinominando il nome della directory.

cd 9.6/
mv main main-bekup

Crea nuovo 'principale ' come 'postgres ' utente e assicurati di avere un'autorizzazione come la directory main-bekup.

mkdir main/
chmod 700 main/

Quindi, copia la directory principale dal server MASTER al server SLAVE con pg_basebackup comando, useremo l'utente di replica per eseguire questa copia dei dati.

pg_basebackup -h 10.0.15.10 -U replica -D /var/lib/postgresql/9.6/main -P --xlog
Password:

Al termine del trasferimento dei dati, vai alla directory dei dati principale e crea un nuovo recovery.conf file.

cd /var/lib/postgresql/9.6/main/
vim recovery.conf

Incolla la configurazione di seguito:

standby_mode = 'on'
primary_conninfo = 'host=10.0.15.10 port=5432 user=replica [email protected] application_name=pgslave001'
restore_command = 'cp /var/lib/postgresql/9.6/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'

Salva ed esci, quindi modifica i permessi del file a 600 con chmod.

chmod 600 recovery.conf

Ora avvia PostgreSQL 9.6 sul server SLAVE e assicurati che il servizio postgres sia in esecuzione sull'indirizzo IP 10.0.15.11 con netstat.

systemctl start postgresql
netstat -plntu

Il trasferimento dei dati e la configurazione per il server SLAVE sono stati completati.

Fase 6 - Test

Per il test, verificheremo lo stato di replica di PostgreSQL 9.6 e proveremo a creare una nuova tabella sul server MASTER, quindi verificheremo la replica controllando tutti i dati dal server SLAVE.

Accedi al server MASTER e accedi all'utente postgres.

su - postgres

Esegui i comandi psql di seguito per vedere lo stato della replica.

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

Otterrai i risultati come di seguito.

Quindi, prova a creare una nuova tabella dal server MASTER. Accedi all'utente postgres sul server principale.

su - postgres
psql

E crea una nuova tabella denominata 'replica_test ' e inserisci i dati nella tabella eseguendo le query postgres di seguito.

CREATE TABLE replica_test (hakase 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');

Quindi, accedi all'utente postgres sul server SLAVE e accedi al terminale psql.

su - postgres
psql

Controlla i dati su 'replica_test ' tabella con query postgres di seguito.

select * from replica_test;

E otterrai gli stessi dati del MASTER, viene replicato dal server MASTER al server SLAVE.

Test aggiuntivo:

Prova a scrivere sul server SLAVE con la query qui sotto.

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

E riceverai un messaggio di errore su "Impossibile eseguire INSERT ' interrogazione sul server SLAVE.

L'installazione e la configurazione di PostgreSQL 9.6 con replica Master-Slave su Ubuntu 16.04 Xenial Xerus ha avuto successo.


Ubuntu
  1. Come installare PostgreSQL su Ubuntu 18.04

  2. Installazione di Ubuntu 20.04 PostgreSQL

  3. Installazione di Ubuntu 22.04 PostgreSQL

  4. Come installare un server PostgreSQL su Ubuntu 18.04

  5. Server Ubuntu per manichini

Come installare Plex Media Server su Ubuntu 20.04 LTS Server/Desktop

Come installare PostgreSQL su Ubuntu 16.04

Come configurare la replica in streaming di PostgreSQL 12 in CentOS 8

Come installare OwnCloud su Ubuntu Linux:un tutorial per principianti

Come impostare la replica MySQL Master-Slave su RHEL 7?

Installa PostgreSQL su un server Ubuntu per le configurazioni di sicurezza