Free Trial

Base de conhecimento

Backup e recuperação do Alteryx Server - Parte 2: procedimentos

Community_Admin
Alteryx
Alteryx
Created

Este é o segundo artigo de uma série sobre backup e recuperação do Alteryx Server. Você pode encontrar a Parte 1 em:

 

Backup e recuperação do Alteryx Server - Parte 1: melhores práticas

 

Desde que um backup do banco de dados do MongoDB esteja disponível, você poderá restaurar o Alteryx Server e colocá-lo em funcionamento. Felizmente, fazer backup do MongoDB integrado é bastante simples e pode ser feito com alguns comandos do console. Eu recomendo criar um script ou arquivo em lotes para realizar o processo. Isso permitirá que você agende o backup utilizando o Agendador de tarefas do Windows. Os passos para executar um backup do MongoDB são descritos em detalhes na ajuda online, na seção de configuração do servidor ou diretamente neste link. Também vou descrever o passo a passo abaixo, para que fique completo.

 

Para criar um backup do MongoDB:

 

  1. Pare o serviço Alteryx (AlteryxService).
  2. Execute o seguinte comando para salvar um backup da base de dados na pasta especificada:

 

alteryxservice emongodump=
  1. Reinicie o serviço Alteryx (AlteryxService)

 

Você pode facilmente fazer o script para um arquivo em lotes com alguns comandos de console simples. Veja abaixo um exemplo, tendo em mente que os caminhos podem variar no seu servidor.

 

Exemplo:

 

 

"C:/Program Files/Alteryx/bin/AlteryxService.exe" stop
"C:/Program Files/Alteryx/bin/AlteryxService.exe" emongodump=Z:/Path/MongoBackup
"C:/Program Files/Alteryx/bin/AlteryxService.exe" start

 

 

É possível adicionar mais recursos aos backups, como registro em log e carimbos de data/hora.  Como uma amostra de recursos úteis adicionais para incluir em seus backups, anexei o código para um script em lote que criei, que adiciona as seguintes informações: registro em log com carimbo de data/hora, um backup que também tem carimbo de data/hora, arquivamento automático do backup, cópia do arquivo morto para um local de rede e limpeza dos arquivos temporários.

 

Quando você tiver um arquivo em lote ou outro script para realizar seus backups, é necessário testar o script para certificar-se de que ele funciona corretamente. Após fazer o teste, o próximo passo é agendar o backup. A maneira mais fácil de fazer isso é usar o Agendador de tarefas do Windows. Para criar uma tarefa agendada no servidor do Windows 2012, siga estes passos:

 

Crie uma tarefa agendada:

 

  1. Abra o Agendador de tarefas e clique em "Criar tarefa"

2016-05-11_8-50-15.png

 

  1. Na guia Geral, insira "Nome", "Descrição", selecione "Executar estando o usuário conectado ou não" e selecione "Executar com privilégios mais altos"

2018-07-27_8-54-52.png

 

  1. Na guia Gatilhos, clique em "Novo"

2016-05-11_9-01-50.png

 

  1. Uma caixa de diálogo será exibida. Defina a programação (diária, semanal etc.) com a qual você deseja que o backup seja executado e clique em "OK"

2016-05-11_9-05-10.png

 

  1. Na guia Ações, clique em "Novo"

2016-05-11_8-55-03.png

 

  1. Na janela de diálogo, certifique-se de que “Iniciar um programa” está selecionado e clique em “Navegar”. Selecione o arquivo em lote que você criou e clique em "Abrir". Em seguida, clique em "OK".

2016-05-11_8-57-49.png

 

  1. Clique em "OK" na janela Criar tarefa para finalizar a criação da tarefa de backup.

 

Agora que você já implementou os procedimentos de backup e agendou uma tarefa para automatizar os backups com sucesso, é hora de discutir a restauração da base de dados a partir de um backup. A boa notícia é que restaurar a base de dados é tão simples quanto fazer o backup. Supondo que 1) o servidor esteja funcionando, 2) o Alteryx Server esteja instalado e 3) exista um backup válido disponível, é possível seguir estes passos simples descritos abaixo.

 

Para restaurar um backup do MongoDB:

 

  1. Pare o serviço Alteryx (AlteryxService)
  2. Execute o seguinte comando para restaurar o backup:

 

alteryxservice emongorestore=, 

 

  1. Reinicie o serviço Alteryx (AlteryxService)

 

Essa simplicidade e o mesmo foco nas instruções de linha de comando sugerem que também podemos fazer um script da recuperação. Contudo, como as ações de recuperação são muito menos frequentes, isso provavelmente não é necessário. Em vez disso, basta se conectar ao servidor, abrir um prompt de comando e, seguindo nosso exemplo de backup acima, executar os seguintes comandos:

 

Exemplo:

 

 

"C:/Program Files/Alteryx/bin/AlteryxService.exe" stop
"C:/Program Files/Alteryx/bin/AlteryxService.exe" emongorestore=Z:/Path/MongoBackup,C:/ProgramData/Alteryx/Service/Persistence/MongoDB
"C:/Program Files/Alteryx/bin/AlteryxService.exe" start

 

 

Para o Alteryx Server, também recomendamos fazer backup do token do controlador e de alguns arquivos de configuração. Embora o Server possa ser recuperado sem esses arquivos, ter um backup deles pode agilizar o processo de recuperação, e eles também garantem que você poderá descriptografar quaisquer dados confidenciais na base de dados. Recomendamos fazer backup dos seguintes arquivos de recuperação:

 

C:/ProgramData/Alteryx/RuntimeSettings.xml

C:/ProgramData/Alteryx/Engine/SystemAlias.xml

C:/ProgramData/Alteryx/Engine/SystemConnections.xml

 

Novamente, tenha em mente que os caminhos exatos podem variar dependendo da configuração do Server e de onde o backup está localizado. Esse exemplo também supõe que o backup não está compactado/arquivado. Se estiver usando um script de backup que arquive o backup e o copie para o armazenamento de rede, será necessário copiar o arquivo de backup para o servidor e descompactar o arquivo antes de executar os comandos de recuperação acima.

 

 

Veja abaixo o código para meu script em lote de exemplo:

 

::-----------------------------------------------------------------------------
::
:: Script de Backup do AlteryxServer v.2.0.2 - 04/01/19
:: Criado por: Kevin Powney
::
:: Verificações de início e parada do Service adaptadas do código de exemplo criado por Eric Falsken
::
::-----------------------------------------------------------------------------

@echo off

::-----------------------------------------------------------------------------
:: Defina variáveis para caminhos aplicativos, log, temp e rede
::
:: Atualize esses valores conforme o que for apropriado para o seu ambiente. Observação
:: esses espaços devem ser evitados nos caminhos de LogDir, TempDir e NetworkDir.
:: A barra à direita também é necessária para esses caminhos.
::-----------------------------------------------------------------------------

SET LogDir=C:/ProgramData/Alteryx/BackupLog/
SET TempDir=C:/Temp/
SET NetworkDir=//ServerName/SharePath/
SET AlteryxService="C:/Program Files/Alteryx/bin/AlteryxService.exe"
SET ZipUtil="C:/Program Files/7-Zip/7z.exe"

:: Set the maximium time to wait for the service to start or stop in whole seconds. Default value is 2 hours.
SET MaxServiceWait=7200

::-----------------------------------------------------------------------------
:: Set Date/Time to a usable format and create log
::-----------------------------------------------------------------------------

FOR /f %%a IN ('WMIC OS GET LocalDateTime ^| FIND "."') DO SET DTS=%%a
SET DateTime=%DTS:~0,4%%DTS:~4,2%%DTS:~6,2%_%DTS:~8,2%%DTS:~10,2%%DTS:~12,2%
SET /a tztemp=%DTS:~21%/60
SET tzone=UTC%tztemp%

echo %date% %time% %tzone%: Starting backup process... > %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Parar o AlteryxService
::-----------------------------------------------------------------------------

echo %date% %time% %tzone%: Parando o AlteryxService... >> %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

SET COUNT=0

:StopInitState
SC query AlteryxService | FIND "STATE" | FIND "RUNNING" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 0 IF NOT errorlevel 1 GOTO StopService
SC query AlteryxService | FIND "STATE" | FIND "STOPPED" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 0 IF NOT errorlevel 1 GOTO StopedService
SC query AlteryxService | FIND "STATE" | FIND "PAUSED" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 0 IF NOT errorlevel 1 GOTO SystemError
echo %date% %time% %tzone%: O estado do serviço está mudando, aguardando que o serviço resolva seu estado antes de fazer alterações >> %LogDir%BackupLog%datetime%.log
SC query AlteryxService | Find "STATE"
timeout /t 1 /nobreak >NUL
SET /A COUNT=%COUNT%+1
IF "%COUNT%" == "%MaxServiceWait%" GOTO SystemError
GOTO StopInitState

:StopService
SET COUNT=0
SC stop AlteryxService >> %LogDir%BackupLog%datetime%.log
GOTO StoppingService

:StopServiceDelay
echo %date% %time% %tzone%: Aguardando que o AlteryService pare >> %LogDir%BackupLog%datetime%.log
timeout /t 1 /nobreak >NUL
SET /A COUNT=%COUNT%+1
IF "%COUNT%" == "%MaxServiceWait%" GOTO SystemError

:StoppingService
SC query AlteryxService | FIND "STATE" | FIND "STOPPED" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 1 GOTO StopServiceDelay

:StopedService
echo %date% %time% %tzone%: O AlteryService foi parado >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Faça backup do MongoDB no diretório temporário local.
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Iniciando o backup do MongoDB... >> %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

%AlteryxService% emongodump=%TempDir%ServerBackup_%datetime%/Mongo >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Faça backup dos arquivos de configuração no diretório temporário local.
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Fazendo backup de configurações, conexões e aliases... >> %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

copy %ProgramData%/Alteryx/RuntimeSettings.xml %TempDir%ServerBackup_%datetime%/RuntimeSettings.xml >> %LogDir%BackupLog%datetime%.log
copy %ProgramData%/Alteryx/Engine/SystemAlias.xml %TempDir%ServerBackup_%datetime%/SystemAlias.xml
copy %ProgramData%/Alteryx/Engine/SystemConnections.xml %TempDir%ServerBackup_%datetime%/SystemConnections.xml
%AlteryxService% getserversecret > %TempDir%ServerBackup_%datetime%/ControllerToken.txt

::-----------------------------------------------------------------------------
:: Reiniciar o Alteryx Service
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Reiniciando o Alteryx Service... >> %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

SET COUNT=0

:StartInitState
SC query AlteryxService | FIND "STATE" | FIND "STOPPED" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 0 IF NOT errorlevel 1 GOTO StartService
SC query AlteryxService | FIND "STATE" | FIND "RUNNING" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 0 IF NOT errorlevel 1 GOTO StartedService
SC query AlteryxService | FIND "STATE" | FIND "PAUSED" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 0 IF NOT errorlevel 1 GOTO SystemError
echo %date% %time% %tzone%: O estado do serviço está mudando, aguardando que o serviço resolva seu estado antes de fazer alterações >> %LogDir%BackupLog%datetime%.log
SC query AlteryxService | Find "STATE"
timeout /t 1 /nobreak >NUL
SET /A COUNT=%COUNT%+1
IF "%COUNT%" == "%MaxServiceWait%" GOTO SystemError
GOTO StartInitState

:StartService
SET COUNT=0
SC start AlteryxService >> %LogDir%BackupLog%datetime%.log
GOTO StartingService

:StartServiceDelay
echo %date% %time% %tzone%: Aguardando o Alteryx Service iniciar >> %LogDir%BackupLog%datetime%.log
timeout /t 1 /nobreak >NUL
SET /A COUNT=%COUNT%+1
IF "%COUNT%" == "%MaxServiceWait%" GOTO SystemError

:StartingService
SC query AlteryxService | FIND "STATE" | FIND "RUNNING" >> %LogDir%BackupLog%datetime%.log
IF errorlevel 1 GOTO StartServiceDelay

:StartedService
echo %date% %time% %tzone%: O Alteryx Service foi iniciado >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Esta seção compacta o backup em um único arquivo zip
::
:: Observe que o comando abaixo requer o 7-Zip instalado no servidor.
:: Você pode baixar o 7-Zip em http://www.7-zip.org/ ou alterar o comando para
:: usar o utilitário zip de sua escolha, conforme definido na variável acima.
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Arquivando o backup... >> %LogDir%BackupLog%datetime%.log

%ZipUtil% a %TempDir%ServerBackup_%datetime%.7z %TempDir%ServerBackup_%datetime% >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Mover o arquivo morto zip para o local de armazenamento de rede e limpar arquivos locais
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Movendo arquivo morto para armazenamento de rede >> %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

copy %TempDir%ServerBackup_%datetime%.7z %NetworkDir%ServerBackup_%datetime%.7z >> %LogDir%BackupLog%datetime%.log

del %TempDir%ServerBackup_%datetime%.7z >> %LogDir%BackupLog%datetime%.log
rmdir /S /Q %TempDir%ServerBackup_%datetime% >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Concluído
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Processo de backup concluído >> %LogDir%BackupLog%datetime%.log
GOTO :EOF

:SystemError
echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Erro ao iniciar ou parar o Service. O Service não está acessível, está offline ou não respondeu à solicitação de início ou parada dentro do período designado. >> %LogDir%BackupLog%datetime%.log
Contribudores
Rótulos