# Cluster actif-passif 2 noeuds

Installer Postgresql sur les 2 noeuds ([Installation de Postresql 16 sur Rocky linux 9](https://kb.systea.fr/books/postgresql/page/installation-de-postresql-16-sur-rocky-linux-9 "Installation de Postresql 16 sur Rocky linux 9")).

##### Sur le noeud primaire

Créer un rôle réplication

```SQL
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'Telep@rt321';
```

Ajuster à la configuration de postgresql.conf :

```shell
cd /var/lib/pgsql/16/data/
vi postgresql.conf
```

> listen\_addresses = '10.0.0.22' # IP locale du serveur  
> wal\_level = logical  
> wal\_log\_hints = on

Puis éditer pg\_hba.conf. Ajouter à la fin :

> host replication replica\_user 10.0.0.29/32 md5

Relancer Postgresql

```shell
systemctl restart postgresql-16
```

##### Sur le noeud standby

Supprimer le répertoire DATA et dupliquer celui du noeud primaire:

```shell
systemctl stop postgresql-16
rm -rf /var/lib/pgsql/16/data/
pg_basebackup -h 10.0.0.22 -U replica_user -X stream -C -S replica_1 -v -R -W -D /var/lib/pgsql/16/data/
chown postgres.postgres -R /var/lib/pgsql/16
```

Editer /var/lib/pgsql/16/data/postgresql.conf et modifier "listen\_addresses" pour y mettre l'IP locale

Relancer Postgresql

```
systemctl start postgresql-16
```

Sur le primary, vérifier si le replica est connecté

```
postgres=# SELECT client_addr, state
FROM pg_stat_replication;

client_addr | state
-------------+-----------
10.0.0.29 | streaming
(1 row)
```

Créer une base test et vérifier qu'elle apparaît bien côté standby

```
postgres=# CREATE DATABASE TESTREP;
# Puis sur les 2 noeuds lister les bases de données :
postgres=# \l
```