# POSTGRES



# TimescaleDB Update

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/g71pSE3C7p2eTy2b-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/g71pSE3C7p2eTy2b-image.png)

<div id="bkmrk-ajouter-le-proxy-ave">Ajouter le proxy avec la commande export</div><div id="bkmrk--1">  
</div><div id="bkmrk-yum-update"><span style="color: rgb(230, 126, 35);">Yum update</span></div><div id="bkmrk--2">  
</div>[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/Qliyo0BWZVufJVCr-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/Qliyo0BWZVufJVCr-image.png)

<div id="bkmrk--4">  
</div><div id="bkmrk-installation-%C3%A0-la-ma">Installation à la mano:</div><div id="bkmrk-yum-update-timescale"><span style="color: rgb(230, 126, 35);">yum update timescaledb-2-postgresql-12</span></div><div id="bkmrk-systemctl-restart-po"><span style="color: rgb(230, 126, 35);">systemctl restart postgresql-12</span></div><div id="bkmrk-timescaledb-tune---p"><span style="color: rgb(230, 126, 35);">timescaledb-tune --pg-config=/usr/pgsql-12/bin/pg\_config</span></div><div id="bkmrk--5">  
</div>[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/rafkb4UY48PIiPWn-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/rafkb4UY48PIiPWn-image.png)

<div id="bkmrk-sudo--u-%22user%22--i-ps">sudo -u "user" -i psql</div><div id="bkmrk-%5Cc-database">\c database</div><div id="bkmrk-%5Cdx">\dx</div><div id="bkmrk-alter-extension-time">ALTER EXTENSION timescaledb UPDATE;</div><div id="bkmrk--7">  
</div>[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/hjKt49PSJWQJELji-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/hjKt49PSJWQJELji-image.png)\\q

<div id="bkmrk--8"></div><div id="bkmrk--9">  
</div><div id="bkmrk-infos-suppl%C3%A9mentaire">Infos supplémentaire:</div><div id="bkmrk-je-vois-bien-la-dern">Je vois bien la dernière version de timescaledb dans pg_available_extensions, mais la version installée sur la BDD reste toujours la 2.8.1.</div><div id="bkmrk--10">  
</div>[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/i5dBr8EGJF9tI7kI-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/i5dBr8EGJF9tI7kI-image.png)

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/9t0fY77J4uTG7eMu-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/9t0fY77J4uTG7eMu-image.png)

<div id="bkmrk-il-faudrait-donc-met">Il faudrait donc mettre à jour la version de timescaledb sur la BDD MASS.</div><div id="bkmrk-exemple-%3A">Exemple :</div><div id="bkmrk---alter-extension-ti">- <span style="color: rgb(230, 126, 35);">ALTER EXTENSION timescaledb UPDATE TO '2.11.2';</span></div><div id="bkmrk-https%3A%2F%2Fwww.postgres">https://www.postgresql.org/docs/12/sql-alterextension.html</div><div id="bkmrk---ou-si-%C3%A7a-ne-foncti">- Ou si ça ne fonctionne pas, désinstaller puis réinstaller : </div><div id="bkmrk-drop-extension-times"><span style="color: rgb(230, 126, 35);">DROP EXTENSION timescaledb CASCADE; </span></div><div id="bkmrk-create-extension-if-"><span style="color: rgb(230, 126, 35);">CREATE EXTENSION IF NOT EXISTS timescaledb;</span></div><div id="bkmrk--13"></div>

# Création user en lecture seul

```bash
sudo -u postgres -i
```

```postgresql
CREATE USER servicenav LOGIN PASSWORD 'Password';
GRANT CONNECT ON DATABASE contact TO servicenav;
GRANT CONNECT ON DATABASE side TO servicenav;
GRANT CONNECT ON DATABASE vac TO servicenav;
```

```postgresql
GRANT USAGE ON SCHEMA public TO servicenav;
GRANT SELECT ON ALL TABLES IN schema public TO servicenav;
```

# Modification du compte Monitor

sudo -u postgres -i  
cd /production/pgsql/data/

Modification :

vim /production/pgsql/data/pg\_hba.conf

\#host all monitor 10.0.0.0/8 password  
host all monitor 10.1.1.85/32 password

Modification mot de passe compte postgresql monitor :

psql test

test=# \\du  
 List of roles  
 Role name | Attributes | Member of   
\--------------+------------------------------------------------------------+-----------  
 test | | {}  
 monitor | Superuser | {}  
 postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}  
 postgresdump | Superuser | {}

  
ALTER USER monitor WITH PASSWORD 'password';

systemctl reload postgresql-12  
Nb : pour avoir le nom exact du service : systemctl --type=service | grep postgre

# Vacuum

<div id="bkmrk-">  
</div><div id="bkmrk-sudo--u-postgres--i-">sudo -u postgres -i psql</div><div id="bkmrk--1">  
</div><div id="bkmrk-postgres%3D%23-%5Cc-%22nom_d">postgres=# \c "nom_de_la_bdd"</div><div id="bkmrk--2">  
</div><div id="bkmrk-nom_de_la_bdd%3D%23%C2%A0%C2%A0">nom_de_la_bdd=# VACUUM VERBOSE ANALYZE;</div><div id="bkmrk--3">  
</div><div id="bkmrk-nom_de_la_bdd%3D%23-%5Cq">nom_de_la_bdd=# \q</div>

# Splitbrain

Reconstruction du cluster Postgresql sous Centos

Premièrement sauvegarder la VM via un quick backup du côté du serveur VEEAM ou autre  
Deuxièmement : vérifier qu'il n'existe pas de job de dump sql sur les serveurs membres du cluster

UNIQUEMENT QUAND CECI EST FAIT désactiver le service PostgreSQL sur le Node qui sera le slave/standby

```bash
Service postgres12 stop
```

Dans le cas où il risque d'y avoir des cron de sauvegarde ou autre désactiver aussi le service crond

```bash
Service crond stop
```

Puis, toujours sur le node standby lancez cette commande en se positionnant sur un dossier qui est "possédé" par le user qui a accès à la/aux base/s ici c'est postgres et on effectue à partir du dossier <span style="color: rgb(230, 126, 35);">/production/pgsql </span>

```bash
/usr/pgsql-12/bin/repmgr -h POSTGRESQL1.repli -U repmgr -d repmgr standby clone -F
```

 Ici POSTGRESQL1 est le node master  
Afin de forcer la synchronisation des données entre le nœud master et standby

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/Eh4GZBR2GdVekwKH-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/Eh4GZBR2GdVekwKH-image.png)

  
Astuce : utilisez <span style="color: rgb(230, 126, 35);">watch -n1 df -h </span>côté nœud standby pour regarder l'évolution du remplissage du disque et pour vérifier qu'entre le nœud principal et secondaire une même quantité de données est utilisée.

Une fois cette opération qui peut prendre du temp est terminée  
Relancer le service postgresql

```bash
Service postgresql12 start
```

Vérifier son état

```bash
Service postgresql12 status
```

Maintenant lancer cette commande sur le nœud qui est censé être le standby

```bash
repmgr standby register --force
```

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/6j4ILzVERS8EDMr9-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/6j4ILzVERS8EDMr9-image.png)

Ensuite vérifier que les rôles sont de nouveau assignés normalement

```bash
repmgr cluster show --verbose
```

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/su4ddB9ebn4qedO8-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/su4ddB9ebn4qedO8-image.png)

Astuce si vous avez dût fermer le service Cron pensez à le redémarrer

```bash
Service crond start
```

Vérifier

```bash
Service crond status 
```

<span style="color: rgb(230, 126, 35);">  
</span>  
Et regarder si des jobs qui devaient se lancer n'ont pas été rater et dans le cas où si c'est le cas demander au client si vous pouvez les lancer ou bien vous le signaler au client pour qu'il fasse ses vérifications lui-même

# Commande Postgresql