Skip to main content

Guide d’installation de BriefCam

Réplication de la base de données PostgreSQL BriefCam

Last Updated: 9 minute read
Version2025r1
LangueFrançais

Cette section détaille comment rationaliser la réplication de la base de données PostgreSQL.

Conditions préalables, notes et conventions

Note

Utilisez Windows PowerShell et non Command Prompt (cmd) lorsque vous collez les commandes des exemples de ce document.

  1. Si l’espace du serveur primaire est suffisant, effectuez une sauvegarde complète de la base de données (en utilisant l’outil pg_dump) avant de tenter de créer la réplique.

  2. Notez l’adresse IP du serveur primaire. Plus loin dans ce document, il sera appelé <primaryIP>.

  3. Notez l’adresse IP du serveur secondaire. Plus loin dans ce document, il sera appelé <secondaryIP>.

  4. Dans le serveur PGSQL, les trois composants d’installation BriefCam suivants doivent tous être définis sur le nom d’hôte ou l’adresse IP. Assurez-vous qu’ils utilisent tous la même méthode (pour assurer la cohérence). Pour ce faire, recherchez le connectionString PostgreSQL dans les fichiers ou paramètres suivants :

    • VSServer : C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.config

    • Services Web : C:\Program Files\BriefCam\WebServices\ProWebApi\Web.config

    • Qlik (RESEARCH) : ODBC 64-bit entries (Server field)

      ODBC Driver Setup.png
  5. Il est recommandé de tester toutes les fonctionnalités des systèmes avant de créer le serveur secondaire. Assurez-vous de prendre note de toutes les valeurs d’origine des paramètres que vous modifiez.

  6. Sur tous les serveurs où les composants du serveur BriefCam sont déployés, configurez le fichier hosts pour qu’il pointe vers le serveur de base de données PostgreSQL primaire - cela remplacera le DNS.

  7. Dans le BriefCam Administrator Console, ouvrez la section Environment Settings (Paramètres d' environnement) et définissez les paramètres DB.LocalStorageAddress et VideoProductsPath pour utiliser des noms d’hôtes et non des adresses IP.

  8. La vitesse de base_backup de PostgreSQL varie considérablement en fonction de la configuration de l’environnement (vitesse du SSD/HDD/NIC). En règle générale, sur un stockage ISCSI (réseau de disques durs de 10 Gbit/s) et une NIC réseau de 1 Gbit/s (vmxnet3) dans un environnement virtuel, il faut environ 40 minutes pour effectuer une sauvegarde de base de la base de données PostgreSQL qui contient 90 Go de données BriefCam .

    Pensez à tester la vitesse sur l’environnement réel pour pouvoir estimer le temps que prendra la sauvegarde de base afin de pouvoir définir correctement le créneau horaire pour le processus de création de réplique.

  9. Utilisez le chemin réel du répertoire PostgreSQL_Data . La valeur par défaut du BriefCam est C:\PostgreSQL_Data. Cependant, cela peut varier dans différentes configurations (plus tard dans ce document, le chemin d' BriefCam par défaut sera utilisé).

  10. Utilisez le chemin d' pgsql.exe réel. La valeur par défaut BriefCam est C:\PostgreSQL\bin\psql.exe (plus tard dans cette rubrique, le chemin d' BriefCam par défaut sera utilisé).

Étapes sur le serveur primaire

  1. Connectez-vous au shell sql du serveur PostgreSQL primaire et vérifiez l’emplacement des fichiers config et hba en exécutant les commandes suivantes :

    C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;

    Voici un exemple de la sortie attendue (basée sur l’emplacement du dossier PostgreSQL_Data ) :

    C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.conf

  2. Sauvegardez les fichiers config et hba d’origine en exécutant les commandes suivantes dans PowerShell :

    copy C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/postgresql.conf.$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))

    copy C:/PostgreSQL_Data/pg_hba.conf C:/PostgreSQL_Data/pg_hba.conf.$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))

  3. Vérifiez que les fichiers de sauvegarde ont été créés en exécutant la commande suivante :

    dir C:/PostgreSQL_Data/*.conf.*

    La sortie attendue est :

    PS C:\Users\Administrator> dir C:/PostgreSQL_Data/*.conf.*

    Directory : C:\PostgreSQL_Data

    Mode LastWriteTime Length Name

    ---- ------------- ------ ----

    -a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z

    -a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z

  4. Ajoutez des paramètres au fichier postgres.conf . Pour ce faire, ouvrez le fichier dans un éditeur de texte et ajoutez les lignes suivantes à la fin du fichier (juste en dessous de la section Customized Options ) :

    wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6

  5. Créez un rôle/utilisateur pour la réplication et définissez son mot de passe (n’utilisez pas le mot de passe spécifié dans les exemples de commandes).

    1. Connectez-vous au shell SQL du serveur PostgreSQL primaire via la console PowerShell en utilisant la commande :

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

    2. Exécutez la commande suivante (dans le shell SQL ouvert à l’étape précédente) :

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. Ajoutez des paramètres au fichier pg_hba.conf . Pour ce faire, ouvrez le fichier dans un éditeur de texte et ajoutez les lignes suivantes au fichier (sous la ligne #replication privilege ) :

    # replication privilege. host replication repl_user <secondaryIP>/32 md5

  7. Redémarrez le service BriefCamPostgreSQL sur le serveur PostgreSQL primaire en ouvrant PowerShell en tant qu’administrateur et en exécutant les commandes suivantes :

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"

  8. Vérifiez que les fichiers de configuration contiennent les modifications que vous avez apportées au fichier de postgres.conf comme suit :

    1. Connectez-vous au shell SQL du serveur PostgreSQL primaire via la console PowerShell en utilisant la commande :

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

    2. Imprimez les configurations personnalisées ajoutées au fichier conf de PostgreSQL en utilisant les commandes ci-dessous via le shell SQL :

      \pset pager off SELECT pg_read_file('postgresql.conf');

    3. Vérifiez que vous pouvez maintenant voir les lignes ajoutées au fichier postgresql.conf en bas de la sortie.

      Replicating postgresql conf.png
  9. Vérifiez que les fichiers de configuration contiennent les modifications que vous avez apportées au fichier de pg_hba.conf comme suit :

    1. Connectez-vous au SQL Shell du serveur PostgreSQL primaire en exécutant les commandes suivantes :

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

      \pset pager off

      SÉLECTIONNEZ pg_read_file('pg_hba.conf');

    2. Vérifiez que vous pouvez maintenant voir les lignes ajoutées au fichier pg_hba.conf en bas de la sortie.

      Replicating pg_hba conf.png

Étapes sur le serveur secondaire

  1. Installez BriefCamPostgreSQL.

  2. Sur le serveur PostgreSQL secondaire, arrêtez le service BriefCamPostgreSQL en exécutant ce qui suit dans PowerShell en tant qu’administrateur :

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. Nettoyez le répertoire de données comme suit :

    1. Renommez le dossier PostgreSQL_Data .

    2. Créez un nouveau dossier nommé PostgreSQL_Data et, dans l'onglet Autorisations du dossier, ajoutez le contrôle total à Tout le monde.

      Replicating PostgreSQL properties.png
  4. Effectuez une basebackup PostgreSQL du serveur primaire vers le serveur secondaire comme suit :

    1. Exécutez la commande suivante dans PowerShell en tant qu’administrateur :

      c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1

    2. Il est recommandé d’arrêter tous les services BriefCam sur tous les serveurs pendant la sauvegarde potentiellement longue de la base de données. Il est possible d’effectuer cette étape sans arrêter tous les services, en fonction de la taille du groupe de données.

  5. Sur le serveur PostgreSQL secondaire, démarrez le service BriefCamPostgreSQL en exécutant les commandes suivantes dans PowerShell en tant qu’administrateur :

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

Vérifiez l’opération de réplication

  1. Connectez-vous au shell SQL du serveur PostgreSQL primaire via la console PowerShell en utilisant la commande :

    C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

  2. Vérifiez la valeur du décalage en exécutant la commande suivante dans SQL shell (la valeur du write_lag doit commencer par 00:00:00) :

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    Voici un exemple de la sortie attendue :

    postgres=# SÉLECTIONNEZ write_lag,client_addr DEPUIS pg_stat_replication ;

    write_lag | client_addr

    -----------------+-------------

    00:00:00.003972 | 10.30.30.30

    (1 ligne)

    postgres=#

Note

Cette vérification doit être effectuée au moins une fois par jour.

Activez le serveur secondaire pour agir en tant que serveur primaire

Cette section décrit la procédure d’activation du serveur secondaire en tant qu’instance primaire de la base de données PostgreSQL, dans les cas où le primaire est en panne et où une récupération/migration est nécessaire.

  1. Modifiez le fichier hosts dans tous les serveurs BC pour refléter <secondaryIP> au lieu de <primaryIP>.

  2. Vérifiez l’état et promouvez le serveur secondaire PGSQL pour qu’il devienne le serveur primaire en exécutant les commandes suivantes dans la console PowerShell (assurez-vous d’exécuter PowerShell en tant qu’administrateur et de modifier les chemins d’accès au fichier pg_ctl.exe et au dossier PostgreSQL_Data en conséquence) :

    • c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”

    Exemple de sortie :

    pg_ctl: server is running (PID: 5672) C:\PostgreSQL\bin\postgres.exe "-D" "C:\PostgreSQL_Data"

    • c:\PostgreSQL\bin\pg_ctl.exe promote -D ”C:\PostgreSQL_Data”

    Exemple de sortie :

    waiting for server to promote.... done server promoted

Créez une sauvegarde périodique sur le serveur secondaire

Scripts PG_DUMP dans le planificateur de tâches de Windows
  1. Créez le fichier %APPDATA%\postgresql\pgpass.conf contenant les identifiants de connexion de la base de données (c’est-à-dire : *:5432:*:dbadmin:Qwerty123). Pour plus de détails, consultez : https://www.postgresql.org/docs/10/libpq-pgpass.html et https://www.postgresql.org/docs/10/libpq-envars.html (liens externes).

    Si la méthode ci-dessus ne fonctionne pas, le mot de passe des scripts peut être spécifié sur la ligne d’exécution :

    $env:PGPASSWORD='Qwerty123' ;& c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).tar

  2. Créez un dossier pour les fichiers de sauvegarde, par exemple : E:\PostgresBackups\.

  3. Créez un dossier pour les fichiers du script de sauvegarde, par exemple : E:\PostgresBackupScripts\.

  4. Créez le script de sauvegarde à l’adresse : E:\PostgresBackupScripts\backup.ps1 avec les trois commandes comme indiqué ci-dessous :

    • c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$((get-date).ToUniversalTime()).ToString(« yyyyMMddTHHmmssZ »).tar

    • c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$((get-date).ToUniversalTime()).ToString(« yyyyMMddTHHmmssZ »).tar

    • #ls -file E:\PostgresBackups\db*.tar | where {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose

    *La 3ème commande ci-dessus doit être ajustée en fonction de la période de rétention des sauvegardes requise en supprimant le signe « # » au début de la ligne et en modifiant le nombre 15 car il représente le nombre de jours en amont. Par exemple, si vous souhaitez configurer le script pour supprimer tous les fichiers de plus de 7 jours, vous devrez changer le nombre 15 à 7.

  5. Testez la création de la sauvegarde et la suppression des anciens fichiers en réglant le -gt sur 0 et exécutez la commande suivante dans Windows cmd :

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    Cela supprimera tous les fichiers créés.

  6. Ajustez la période de rétention des sauvegardes comme mentionné à la fin de l’étape 4 ci-dessus.

  7. Ajoutez le script de sauvegarde au planificateur de tâches Windows comme suit :

    1. Définissez le champ Program/script sur le chemin suivant :

      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    2. Dans le champ Ajouter des arguments , définissez les éléments suivants : E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Réglez les déclencheurs et le timing en conséquence.

    Replicating set triggers.png
  9. Configurez la tâche pour qu’elle s’exécute indépendamment du fait que l’utilisateur soit connecté et enregistrez le mot de passe.

    Replicating task scheduler.png
  10. Sur un serveur de test, vérifiez si les fichiers sont restaurables. Ce test doit faire partie de votre routine permanente.

Voici un exemple de commande de restauration :

C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar

Le paramètre effectue -c des opérations de dépôt et de création. Pour des options supplémentaires, consultez :

“C:\PostgreSQL\bin\pg_restore.exe --help” 

Revenez Au Serveur Principal une Fois le Problème Résolu

Si vous utilisiez un serveur secondaire parce qu’il y avait un problème avec le serveur primaire, cette section décrit comment revenir au serveur primaire une fois le problème résolu.

Note

Les détails du processus ci-dessous peuvent varier en fonction du type de panne dont a souffert le serveur primaire. Pour considérer le cas le plus grave (une panne absolue du serveur primaire), les étapes ci-dessous incluent une nouvelle installation.

  1. Installez le système d’exploitation à partir de zéro.

  2. Effectuez les étapes de la section Étapes sur le serveur primaire sur le serveur primaire actuel.

  3. Effectuez toutes les actions décrites dans les sections ci-dessous sur les serveurs, en considérant que le serveur qui a été réinstallé est maintenant techniquement l’instance « secondaire » :

  4. Arrêtez le service PostgreSQL sur le serveur qui a été utilisé comme serveur primaire.

  5. Vérifiez que le système BriefCam fonctionne correctement.

  6. Effectuez les étapes de création d’une réplique sur le serveur qui a été utilisé comme serveur primaire.