blog-image

Déplacer la base de données Matrix vers un autre serveur postgresql

  • dHENRY
  • 25/04/2020
  • (Durée de lecture : 4 mn)

AVERTISSEMENT

Cette page comporte un formulaire permettant de créer de manière interactive vos configurations. (*) Les données saisies restent sur votre navigateur et ne sont envoyées nulle part. Vous pouvez le vérifier en ouvrant la console de votre navigateur (onglet réseau). Code source attaché aux élements de formulaire de type input :

//onload add listeners on input
document.addEventListener("DOMContentLoaded", function () {
  $(".replicator").each(function () {
    let id = $(this).attr("id");
    $("#" + id).on("keyup", function () {
      $(".s" + id).html($(this).val());
    });
  });
});
//reset form and call trigger to reset all spans
function resetForm(id) {
  $("#" + id)
    .find("input")
    .each(function () {
      $(this).val("").trigger("keyup");
    });
}

Ce programme est simplement chargé de réaliser une opération de réplication des données saisies dans les éléments de type span" intégrés au code représentant les éléments de configuration nécessaires à la bonne exécution de cette prodédure.

Configurations

graph TB subgraph Situation actuelle A[Serveur Matrix Ex : 192.168.25.1 ]-->B[Serveur Postgresql A Ex : 192.168.25.2] end subgraph Nouvelle situation C[Serveur Matrix Ex : 192.168.25.1 ]-->D[Serveur Postgresql B Ex : 192.168.25.100] end B-->|Déplacement base de données Matrix|D

Dans cet exemple, je déplace les données de Matrix, situées sur le serveur Postgresql A (192.168.25.2) vers l’autre serveur Postgresql B (192.168.25.100).

Préparation de la migration

Arrêt du service Matrix

Se connecter “root” à la console du serveur Matrix, puis exécutez :

systemctl stop synapse-matrix

Afficher les données de configuration du service Matrix (/opt/synapse/homeserver.yaml) et rechercher les éléments liés à la propriété “database”, puis complétez le formulaire des paramètres. Exemple :

database:
  name: psycopg2
  args:
    user: 
    password: 
    database: 
    host: 
    port: 
    cp_min: 5
    cp_max: 10

Formulaire des paramètres

Paramètres Complétez le formulaire (sécurité - voir ci-avant)
nom de la base
compte d’accès la base
mot de passe d’accès à la base
addresse IP du serveur Postgresql actuel A
port IP du service Postgresql actuel A
addresse IP du nouveau serveur Postgresql B
port IP du service Postgresql actuel A
addresse IP du serveur Matrix

Sauvegarde de la base de données

Sur le serveur Matrix, et connecté “root” exécuter ces commandes :

# Installation client Postgresql si non installé
apt-get update
apt-get -y install postgresql-client
cd 
#Sauvegarde de la base de données dans /root/backupmatrixdb.sql
export PGPASSWORD=""
pg_dump -d "" -h "" -p "" -U ""  > "root/backupmatrixdb.sql"
unset PGPASSWORD

Préparer le nouveau serveur postgresql B

NB Le serveur Postgresql B doit, pour poursuivre cette opération autoriser les connexions ssh pour le compte “root” (ssd_config).

Se connecter “root” sur le serveur Postgresql B () et installer le service postgresql :

apt-get upate
apt-get -y install postgresql

Copier la sauvegarde des données Matrix

Connecté “root” sur le serveur Postgresql A (), copier le fichier de sauvegarde sur le nouveau serveur Postgresql B () :

scp /root/backupmatrixdb.sql root@:/var/lib/postgresql/.
# Indiquer le mot de passe root du serveur Postgresql B

Restauration de la sauvegarde

Connecté “root” sur le serveur Postgresql B (), exécuter ces commandes :

su - postgres
su - postgres  
# Création de l'utilisateur  et de la base   
createuser   
psql  
ALTER USER synapse WITH ENCRYPTED password '';   
CREATE DATABASE  ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER ;
\q  
export PGPASSWORD=""
psql -U "" "" < "/var/lib/postgresql/backupmatrixdb.sql"
unset PGPASSWORD
exit

Fichiers de configuration finaux

Sur le server postgresql B ()

  • Fichier /etc/postgresql/[Postgresql version]/main/postgresql.conf

Chercher la ligne listen_addresses = 'localhost' et commenter comme suit :

#listen_addresses = 'localhost'

Ajoutez la ligne

listen_addresses = ''   

  • Fichier /etc/postgresql/[cluster version]/pg_hba.conf

Ajouter à la fin du fichier :

host                            /32            md5  

Redémarrer le service :

systemctl restart postgresql

Sur le Serveur Matrix ()

  • Fichier /opt/synapse/homeserver.yaml, modifiez ce fichier comme suit :
database:
  name: psycopg2
  args:
    user: 
    password: 
    database: 
    host: 
    port: 
    cp_min: 5
    cp_max: 10

Redémarrage de Matrix

Sur le serveur Matrix () et connecté “root”, exécutez la commande :

systemctl start synapse-matrix

Un peu de nettoyage

Supprimer les fichiers de sauvegarde sur les serveurs :

  • Postgresql A () : /root/backupmatrixdb.sql
  • Postgresql B () : /var/lib/postgresql/backupmatrixdb.sql

Enjoy +++

Licence de ce document : Creative Commons (CC BY-NC-ND 4.0)

CETTE DOCUMENTATION EST LIVRÉE “EN L’ÉTAT”, SANS GARANTIE D’AUCUNE SORTE ET DISTRIBUÉE DANS UN BUT ÉDUCATIF EXCLUSIVEMENT. L’AUTEUR, CONTRIBUTEURS DE CETTE DOCUMENTATION OU ©MYTINYDC.COM NE SAURAIENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES DES DOMMAGES DIRECTS OU INDIRECTS POUVANT RÉSULTER DE L’APPLICATION DES PROCÉDURES MISES EN ŒUVRE DANS CETTE DOCUMENTATION, OU DE LA MAUVAISE INTERPRÉTATION DE CE DOCUMENT.