Skip to main content

Guía de instalación de BriefCam

Replicar la base de datos PostgreSQL BriefCam

Last Updated: 9 minute read
Versión2025r1
IdiomaEspañol

Esta sección detalla cómo optimizar la replicación de la base de datos PostgreSQL.

Requisitos previos, notas y convenciones

Nota

Use Windows PowerShell y no el símbolo del sistema (cmd) mientras pega comandos de los ejemplos de este documento.

  1. Si el espacio del servidor primario es suficiente, realice una copia de seguridad completa de la base de datos (utilizando la herramienta pg_dump) antes de intentar crear la réplica.

  2. Anote la dirección IP del servidor primario. Más adelante en este documento se hará referencia a él como <primaryIP>.

  3. Anote la dirección IP del servidor secundario. Más adelante en este documento se hará referencia a él como <secondaryIP>.

  4. En el servidor PGSQL, los siguientes tres componentes de instalación BriefCam deben establecerse en el nombre de host o la dirección IP. Asegúrese de que todos utilizan el mismo método (para garantizar la coherencia). Para ello, busque el connectionString PostgreSQL en los siguientes archivos o ajustes:

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

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

    • Qlik (RESEARCH): entradas ODBC de 64 bits (campo Servidor)

      ODBC Driver Setup.png
  5. Se recomienda probar la funcionalidad completa de los sistemas antes de crear el servidor secundario. Asegúrese de tomar nota de todos los valores originales de los parámetros que cambie.

  6. En todos los servidores en los que se implementen los componentes de BriefCam Server, establezca el archivo hosts para que apunte al servidor de base de datos PostgreSQL primario; esto anulará el DNS.

  7. En la BriefCam Administrator Console, abra la sección Configuración de entorno y establezca los ajustes DB.LocalStorageAddress y VideoProductsPath para utilizar nombres de host y no direcciones IP.

  8. La velocidad de PostgreSQL base_backup varía significativamente dependiendo de la configuración del entorno (velocidad de SSD/HDD/NIC). Como regla general, en el almacenamiento ISCSI (matriz de discos duros de enlaces de 10 Gbps) y NIC de red de 1 Gbps (vmxnet3) en un entorno virtual, se tarda unos 40 minutos en realizar una copia de seguridad básica de la base de datos PostgreSQL que contiene 90 GB de datos BriefCam .

    Considere la posibilidad de probar la velocidad en el entorno real para poder estimar cuánto tiempo tardará la copia de seguridad básica en poder establecer correctamente el intervalo de tiempo para el proceso de creación de réplicas.

  9. Utilice la ruta real del directorio PostgreSQL_Data . El valor predeterminado BriefCam es C:\PostgreSQL_Data. Sin embargo, esto puede variar en diferentes configuraciones (más adelante en este documento se utilizará la ruta de BriefCam predeterminada).

  10. Utilice la ruta de pgsql.exe real. El valor predeterminado BriefCam es C:\PostgreSQL\bin\psql.exe (más adelante en este tema, se utilizará la ruta de acceso predeterminada BriefCam ).

Pasos en el servidor primario

  1. Conéctese a la consola SQL del servidor PostgreSQL primario y verifique la ubicación de los archivos config y hba ejecutando los siguientes comandos:

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

    Aquí hay un ejemplo de la salida esperada (basada en la ubicación de la carpeta PostgreSQL_Data ):

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

  2. Haga una copia de seguridad de los archivos de config y hba originales ejecutando los siguientes comandos en 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. Verifique que los archivos de copia de seguridad se crearon ejecutando el siguiente comando:

    dir C:/PostgreSQL_Data/*.conf.*

    La salida esperada es:

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

    Directorio: C:\PostgreSQL_Data

    Nombre de longitud de LastWriteTime de modo

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

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

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

  4. Añadir parámetros al archivo de postgres.conf . Para ello, abra el archivo en un editor de texto y añada las siguientes líneas al final del archivo (justo debajo de la sección 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. Cree un cometido/usuario para la replicación y establezca su contraseña (no utilice la contraseña especificada en los comandos de ejemplo).

    1. Conectarse a la consola de SQL del servidor PostgreSQL primario a través de la consola PowerShell mediante el comando:

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

    2. Ejecute el siguiente comando (en la consola de SQL abierta en el paso anterior):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. Añadir parámetros al archivo de pg_hba.conf . Para ello, abra el archivo en un editor de texto y añada las siguientes líneas al archivo (debajo de la línea #replication privilege ):

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

  7. Reinicie el servicio BriefCamPostgreSQL en el servidor PostgreSQL principal abriendo PowerShell como administrador y ejecutando los siguientes comandos:

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

  8. Verifique que los archivos config contengan los cambios que hizo en el archivo postgres.conf de la siguiente manera:

    1. Conectarse a la consola de SQL del servidor PostgreSQL primario a través de la consola PowerShell mediante el comando:

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

    2. Imprima las configuraciones personalizadas añadidas al archivo conf de PostgreSQL utilizando los siguientes comandos a través de la consola de SQL:

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

    3. Verifique que ahora puede ver las líneas añadidas al archivo de postgresql.conf en la parte inferior de la salida.

      Replicating postgresql conf.png
  9. Verifique que los archivos config contengan los cambios que hizo en el archivo pg_hba.conf de la siguiente manera:

    1. Conectarse a la consola de SQL del servidor PostgreSQL primario ejecutando los siguientes comandos:

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

      \pset buscapersonas desactivado

      SELECCIONAR archivo_lectura_pg ('pg_hba.conf');

    2. Verifique que ahora puede ver las líneas añadidas al archivo de pg_hba.conf en la parte inferior de la salida.

      Replicating pg_hba conf.png

Pasos en el servidor secundario

  1. Instale BriefCamPostgreSQL.

  2. En el servidor PostgreSQL secundario, detenga el servicio BriefCamPostgreSQL ejecutando lo siguiente en PowerShell como administrador:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. Limpie el directorio de datos de la siguiente manera:

    1. Cambie el nombre de la carpeta PostgreSQL_Data .

    2. Cree una nueva carpeta llamada PostgreSQL_Data y, en la pestaña Permisos de la carpeta, añada Control total a Todos.

      Replicating PostgreSQL properties.png
  4. Realice una copia de seguridad de base PostgreSQL desde el servidor primario al secundario de la siguiente manera:

    1. Ejecute el siguiente comando en PowerShell como administrador:

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

    2. Se recomienda detener todos los servicios de BriefCam en todos los servidores durante la copia de seguridad de la base de datos potencialmente larga. Es posible realizar este paso sin detener todos los servicios, dependiendo del tamaño del conjunto de datos.

  5. En el servidor PostgreSQL secundario, inicie el servicio BriefCamPostgreSQL ejecutando los siguientes comandos en PowerShell como administrador:

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

Verificar la operación de replicación

  1. Conectarse a la consola de SQL del servidor PostgreSQL primario a través de la consola PowerShell mediante el comando:

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

  2. Compruebe el valor de retraso ejecutando el siguiente comando en la consola de SQL (el valor de write_lag debe comenzar por 00:00:00):

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    Este es un ejemplo de la salida esperada:

    postgres# SELECT write_lag, client_addr FROM pg_stat_replication ;

    write_lag | client_addr

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

    00:00:00.003972 | 10.30.30.30

    (1 fila)

    Postgres=#

Nota

Esta comprobación debe realizarse al menos una vez al día.

Activar el servidor secundario para que actúe como servidor primario

Esta sección describe el procedimiento de activación del servidor secundario como instancia primaria de la base de datos PostgreSQL, en los casos en los que el servidor primario tiene un fallo y es necesaria la recuperación/migración.

  1. Cambie el archivo de hosts en todos los servidores BC para reflejar el <secondaryIP> en lugar de <primaryIP>.

  2. Compruebe el estado y promueva el servidor secundario PGSQL para que se convierta en el servidor principal ejecutando los siguientes comandos en la consola de PowerShell (asegúrese de ejecutar PowerShell en Administrator y de editar las rutas de acceso al archivo pg_ctl.exe y a la carpeta PostgreSQL_Data en consecuencia):

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

    Salida de ejemplo:

    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”

    Salida de ejemplo:

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

Crear una copia de seguridad periódica en el servidor secundario

Secuencias PG_DUMP en el Programador de tareas de Windows
  1. Cree el archivo de %APPDATA%\postgresql\pgpass.conf que contenga las credenciales de la base de datos (es decir: *:5432:*:dbadmin:Qwerty123). Para obtener más detalles, consulte: https://www.postgresql.org/docs/10/libpq-pgpass.html y https://www.postgresql.org/docs/10/libpq-envars.html (enlaces externos).

    Si lo anterior no funciona, la contraseña de los scripts se puede especificar en la línea de ejecución:

    $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. Cree una carpeta para los archivos de copia de seguridad, por ejemplo: E:\PostgresBackups\.

  3. Cree una carpeta para los archivos de secuencia de comandos de copia de seguridad, por ejemplo: E:\PostgresBackupScripts\.

  4. Cree la secuencia de comandos de copia de seguridad en: E:\PostgresBackupScripts\backup.ps1 con los tres comandos que se muestran a continuación:

    • c:\PostgreSQL\bin\pg_dump.exe -Ft -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString("aaaaMMddTHHmmssZ").tar

    • c:\PostgreSQL\bin\pg_dump.exe -Ft -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

    * El tercer comando anterior debe ajustarse de acuerdo con el período de retención de copia de seguridad requerido eliminando el signo "#" al comienzo de la línea y modificando el número 15, ya que representa el número de días hacia atrás. Por ejemplo, si desea configurar la secuencia de comandos para eliminar todos los archivos de más de 7 días, tendría que cambiar el número 15 a 7.

  5. Pruebe la creación de la copia de seguridad y la eliminación de los archivos antiguos estableciendo -gt en 0 y ejecute el siguiente comando en Windows cmd:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    Esto eliminará todos los archivos creados.

  6. Ajuste el periodo de retención de las copias de seguridad como se menciona en la parte inferior del paso 4 anterior.

  7. Añada la secuencia de comandos de copia de seguridad al programador de tareas de Windows de la siguiente manera:

    1. Establezca el campo Programa/script en la siguiente ruta:

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

    2. En el campo Añadir argumentos establezca lo siguiente: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Ajuste los gatillos y la sincronización en consecuencia.

    Replicating set triggers.png
  9. Configure la tarea para que se ejecute independientemente de si el usuario ha iniciado sesión y guarde la contraseña.

    Replicating task scheduler.png
  10. En un servidor de prueba, compruebe si los archivos son restaurables. Esta prueba debe ser parte de su rutina diaria.

Aquí hay un ejemplo del comando de restauración:

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

El -c de parámetros realiza la eliminación y la creación. Para opciones adicionales, consulte:

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

Volver Al Servidor Primario Una Vez Reparado

Si estaba utilizando un servidor secundario porque había un problema con el servidor primario, esta sección describe cómo volver al servidor primario una vez que se soluciona el problema.

Nota

Los detalles del proceso a continuación pueden variar dependiendo del tipo de fallo que haya sufrido el servidor primario. Para considerar el caso más grave (un bloqueo absoluto del servidor primario), los siguientes pasos incluyen una instalación nueva.

  1. Instale el sistema operativo desde cero.

  2. Realice los pasos de la sección Pasos en el Servidor Primario en el servidor primario actual.

  3. Realice todas las acciones descritas en las siguientes secciones en los servidores, teniendo en cuenta que el servidor que se reinstaló es ahora técnicamente la instancia "secundaria":

  4. Detenga el servicio PostgreSQL en el servidor que se utilizó como servidor primario.

  5. Verifique que el sistema de BriefCam funciona correctamente.

  6. Realice los pasos para crear una réplica en el servidor que se utilizó como servidor primario.