POSTGRES

TimescaleDB Update

image.png

Ajouter le proxy avec la commande export

Yum update

image.png


Installation à la mano:
yum update timescaledb-2-postgresql-12
systemctl restart postgresql-12
timescaledb-tune --pg-config=/usr/pgsql-12/bin/pg_config

image.png

sudo -u "user" -i psql
\c database
\dx
ALTER EXTENSION timescaledb UPDATE;

image.png\q


Infos supplémentaire:
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.

image.png

image.png

Il faudrait donc mettre à jour la version de timescaledb sur la BDD MASS.
Exemple :
- ALTER EXTENSION timescaledb  UPDATE TO '2.11.2';
https://www.postgresql.org/docs/12/sql-alterextension.html
- Ou si ça ne fonctionne pas, désinstaller puis réinstaller : 
DROP EXTENSION timescaledb CASCADE; 
CREATE EXTENSION IF NOT EXISTS timescaledb;

Création user en lecture seul

 

sudo -u postgres -i

 

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;

 

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


sudo -u postgres -i psql

postgres=# \c "nom_de_la_bdd"

nom_de_la_bdd=#  VACUUM VERBOSE ANALYZE;

nom_de_la_bdd=# \q

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

Service postgres12 stop

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

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 /production/pgsql 

/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


Astuce : utilisez watch -n1 df -h 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

Service postgresql12 start

Vérifier son état

Service postgresql12 status

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

repmgr standby register --force

image.png

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

repmgr cluster show --verbose

image.png

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

Service crond start

Vérifier

Service crond status 



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