Replicando o banco de dados BriefCam PostgreSQL
Esta seção detalha como otimizar a replicação do banco de dados PostgreSQL.
Pré-requisitos, Observações e Convenções
Nota
Use o Windows PowerShell e não o Prompt de Comando (cmd) ao colar comandos das amostras neste documento.
Se o espaço do servidor primário for suficiente, faça um backup completo do banco de dados (usando a ferramenta pg_dump) antes de tentar criar a réplica.
Anote o endereço IP do servidor primário. Mais tarde neste documento, ele será chamado de <primaryIP>.
Anote o endereço IP do servidor secundário. Mais tarde neste documento, ele será chamado de <secondaryIP>.
No servidor PGSQL, os três BriefCam componentes de instalação a seguir precisam ser definidos para o nome do host ou o endereço IP. Certifique-se de que todos estejam usando o mesmo método (para garantir consistência). Para fazer isso, procure o PostgreSQL
connectionStringnos seguintes arquivos ou configurações:Servidor VS:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configServiços da Web:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): entradas ODBC de 64 bits (campo Servidor)

Recomenda-se testar a funcionalidade completa dos sistemas antes de criar o servidor secundário. Certifique-se de anotar todos os valores originais dos parâmetros que você alterar.
Em todos os servidores onde os componentes do BriefCam Server estão implantados, defina o arquivo hosts para apontar para o servidor de banco de dados PostgreSQL primário - isso substituirá o DNS.
Em BriefCam Administrator Console, abra a seção Configurações do ambiente e defina as configurações DB.LocalStorageAddress e VideoProductsPath para usar nomes de host e não endereços IP.
A velocidade do PostgreSQL base_backup varia significativamente dependendo da configuração do ambiente (velocidade SSD/HDD/NIC). Como regra geral, no armazenamento ISCSI (array de HDD de links de 10 Gbps) e NIC de rede de 1 Gbps (vmxnet3) em um ambiente virtual, leva cerca de 40 minutos para executar um backup básico do banco de dados PostgreSQL que contém 90 GB de BriefCam dados.
Considere testar a velocidade no ambiente real para poder estimar quanto tempo o backup básico levará para poder definir corretamente o intervalo de tempo para o processo de criação da réplica.
Use o caminho real do
PostgreSQL_Datadiretório. O padrão BriefCam éC:\PostgreSQL_Data. No entanto, isso pode variar em diferentes configurações (mais tarde neste documento, o caminho padrão BriefCam será usado).Use o caminho
pgsql.exeatual. O BriefCam padrão éC:\PostgreSQL\bin\psql.exe(mais adiante neste tópico, o caminho padrão BriefCam será usado).
Etapas no servidor primário
Conecte-se à shell sql do servidor PostgreSQL primário e verifique a localização dos arquivos de configuração e hba executando os seguintes comandos:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;Aqui está um exemplo da saída esperada (com base na localização da
PostgreSQL_Datapasta):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confFaça backup dos
configarquivos originais ehbade segurança executando os seguintes comandos no 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"))Verifique se os arquivos de backup foram criados executando o seguinte comando:
dir C:/PostgreSQL_Data/*.conf.*A saída esperada é:
PS C:\Users\Administrator dir C:/PostgreSQL_Data/*.conf.*
Diretório: C:\PostgreSQL_Data
Nome do Comprimento do Último Tempo de Gravação do Modo
---- ------------- ------ ----
-a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z
-a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z
Adicionar parâmetros ao
postgres.confarquivo. Para fazer isso, abra o arquivo em um editor de texto e adicione as seguintes linhas ao final do arquivo (logo abaixo daCustomized Optionsseção):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Crie uma função/usuário para replicação e defina sua senha (não use a senha especificada nos comandos de exemplo).
Conecte-se à shell do SQL do servidor PostgreSQL primário por meio do console do PowerShell usando o comando:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresExecute o seguinte comando (na shell do SQL aberta na etapa anterior):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
Adicionar parâmetros ao
pg_hba.confarquivo. Para fazer isso, abra o arquivo em um editor de texto e adicione as seguintes linhas ao arquivo (abaixo da#replication privilegelinha):# replication privilege. host replication repl_user <secondaryIP>/32 md5Reinicie o serviço BriefCamPostgreSQL no servidor PostgreSQL primário abrindo o PowerShell como administrador e executando os seguintes comandos:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"Verifique se os arquivos de configuração contêm as alterações que você fez no
postgres.confarquivo da seguinte forma:Conecte-se à shell do SQL do servidor PostgreSQL primário por meio do console do PowerShell usando o comando:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresImprima as configurações personalizadas adicionadas ao arquivo de configuração do PostgreSQL usando os comandos abaixo via SQL shell:
\pset pager off SELECT pg_read_file('postgresql.conf');Verifique se agora você pode ver as linhas adicionadas ao
postgresql.confarquivo na parte inferior da saída.
Verifique se os arquivos de configuração contêm as alterações que você fez no
pg_hba.confarquivo da seguinte forma:Conecte-se ao SQL Shell do servidor PostgreSQL primário executando os seguintes comandos:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres
\pset pager off
SELECIONE pg_read_file('pg_hba.conf');
Verifique se agora você pode ver as linhas adicionadas ao
pg_hba.confarquivo na parte inferior da saída.
Etapas no servidor secundário
Instalar o BriefCamPostgreSQL.
No servidor PostgreSQL secundário, interrompa o serviço BriefCamPostgreSQL executando o seguinte no PowerShell como administrador:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"Limpe o diretório de dados da seguinte forma:
Renomeie a
PostgreSQL_Datapasta.Crie uma nova pasta com o nome
PostgreSQL_Datae, na guia Permissões da pasta, adicione Controle Máximo a Todos.
Execute um backup básico do PostgreSQL do servidor primário para o secundário da seguinte forma:
Execute o seguinte comando no PowerShell como administrador:
c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1Recomenda-se interromper todos os BriefCam serviços em todos os servidores durante o backup de banco de dados potencialmente longo. É possível realizar essa etapa sem interromper todos os serviços, dependendo do tamanho do conjunto de dados.
No servidor PostgreSQL secundário, inicie o serviço BriefCamPostgreSQL executando os seguintes comandos no PowerShell como administrador:
net start "BriefCamPostgreSQL - PostgreSQL Server 10"
Verificar a operação de replicação
Conecte-se à shell do SQL do servidor PostgreSQL primário por meio do console do PowerShell usando o comando:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresVerifique o valor de defasagem executando o seguinte comando no shell do SQL (o valor
write_lagdeve começar com 00:00:00):SELECT write_lag,client_addr FROM pg_stat_replication ;Este é um exemplo da saída esperada:
postgres=# SELECT write_lag, client_addr FROM pg_stat_replication ;
write_lag | client_addr
-----------------+-------------
00:00:00.003972 | 10.30.30.30
(1 linha)
postgres=#
Nota
Essa verificação precisa ser realizada pelo menos uma vez por dia.
Ativar o servidor secundário para agir como servidor primário
Esta seção descreve o procedimento de ativação do servidor secundário como a instância primária do banco de dados PostgreSQL, nos casos em que o servidor primário está com defeito e a recuperação/migração é necessária.
Altere o arquivo hosts em todos os servidores BC para refletir o <secondaryIP> em vez de <primaryIP>.
Verifique o status e promova o servidor secundário PGSQL para se tornar o servidor primário executando os seguintes comandos no console do PowerShell (certifique-se de executar o PowerShell no administrador e editar os caminhos para o arquivo pg_ctl.exe e a pasta PostgreSQL_Data adequadamente):
c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”
Exemplo de saída:
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”
Exemplo de saída:
waiting for server to promote.... done server promoted
Criar backup periódico no servidor secundário
PG_DUMP Scripts no Windows Task Scheduler
Crie o
%APPDATA%\postgresql\pgpass.confarquivo contendo as credenciais do banco de dados (ou seja:*:5432:*:dbadmin:Qwerty123). Para obter detalhes, consulte: https://www.postgresql.org/docs/10/libpq-pgpass.html e https://www.postgresql.org/docs/10/libpq-envars.html (links externos).Se o acima não funcionar, a senha dos scripts pode ser especificada na linha de execução:
$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")).tarCrie uma pasta para arquivos de backup, por exemplo:
E:\PostgresBackups\.Crie uma pasta para os arquivos de script de backup, por exemplo:
E:\PostgresBackupScripts\.Crie o script de backup em:
E:\PostgresBackupScripts\backup.ps1com os três comandos conforme mostrado abaixo: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 | onde {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose
*O 3º comando acima deve ser ajustado de acordo com o período de retenção de backup exigido, removendo o sinal "#" no início da linha e modificando o número 15, pois ele representa o número de dias para trás. Por exemplo, se você deseja configurar o script para excluir todos os arquivos com mais de 7 dias, você teria que alterar o número de 15 para 7.
Teste a criação do backup e a remoção dos arquivos antigos definindo -gt como 0 e execute o seguinte comando no Windows cmd:
powershell.exe e:\PostgresBackupScripts\backup.ps1
Isso removerá todos os arquivos criados.
Ajuste o período de retenção dos backups, conforme mencionado na parte inferior da etapa 4 acima.
Adicione o script de backup ao agendador de tarefas do Windows da seguinte forma:
Defina o campo Programa/script para o seguinte caminho:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
No campo Adicionar argumentos, defina o seguinte:
E:\PostgresBackupScripts\backup.ps1
Defina os disparos e o tempo de acordo.

Defina a tarefa para ser executada independentemente se o usuário está conectado e salve a senha.

Em um servidor de teste, verifique se os arquivos são restauráveis. Esse teste deve fazer parte da sua rotina contínua.
Aqui está um exemplo do comando de restauração:
C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar
O parâmetro -c executa a remoção e criação. Para obter opções adicionais, consulte:
“C:\PostgreSQL\bin\pg_restore.exe --help”
Reverter para O Servidor Primário Depois Que Ele For Corrigido
Se você estava usando um servidor secundário porque houve um problema com o servidor primário, esta seção descreve como reverter para o servidor primário assim que o problema for corrigido.
Nota
Os detalhes do processo abaixo podem variar dependendo do tipo de falha que o servidor primário sofreu. Para considerar o caso mais grave (uma falha absoluta do servidor primário), as etapas abaixo incluem uma nova instalação.
Instale o sistema operacional do zero.
Execute as etapas da seção Etapas no servidor primário no servidor primário atual.
Execute todas as ações descritas nas seções abaixo nos servidores, considerando que o servidor que foi reinstalado agora é tecnicamente a instância “secundária”:
Interrompa o serviço PostgreSQL no servidor que foi usado como o servidor primário.
Verifique se o sistema BriefCam funciona corretamente.
Execute as etapas para criar uma réplica no servidor que foi usado como o servidor primário.