DESCRIÇÃO
Realização do Backup via Script e agendador do Windows
CENÁRIO
Alteryx 2021.1 ou superior
Microsoft Windows Server 2012 64-bit ou posterior
CAUSA
Evitar a perda de dados em caso de queda do sistema e ter um backup para restauração rápida do ambiente.
SOLUÇÃO
1) Copie o Script abaixo em um bloco de notas e salve com a extensão ".bat", edite os diretórios indicados em negrito no script conforme o exemplo abaixo:
_____________________________________________________________________________________________________________________________________
::-----------------------------------------------------------------------------
::
:: 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 on
::-----------------------------------------------------------------------------
:: 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.
::-----------------------------------------------------------------------------
:: Neste diretório ficará configurado os logs do Backup
SET LogDir=C:\ProgramData\Alteryx\Gallery\Logs\
:: Neste diretório ficará configurado onde será armazenado o arquivo de backup do Alteryx temporariamente
SET TempDir=C:\Temp\
:: Neste diretório ficará configurado o diretório onde ficará salvo o backup final
SET NetworkDir=\\SUPWS2019ST03\Teste\
:: Neste diretório ficará configurado o local de instalação do AlteryxService
SET AlteryxService="C:\Program Files\Alteryx\bin\AlteryxService.exe"
:: Neste diretório ficará configurado o compactador de arquivos, neste exemplo o 7zip
SET ZipUtil="C:\Program Files\7-Zip\7z.exe"
:: Define o tempo máximo de espera para o serviço iniciar ou parar em segundos inteiros. O valor padrão é 2 horas.
SET MaxServiceWait=7200
::-----------------------------------------------------------------------------
:: Define a data/hora para um formato utilizável e cria o 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
mkdir = %TempDir%ServerBackup_%datetime%
%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
_____________________________________________________________________________________________________________________________________
2) Após salvar a edição do Script vamos adicioná-lo no agendador do Windows, digite no Iniciar "Task Scheduler" e clique em "Create Task"
3) Na aba General, digite o Nome da tarefa, Descrição , selecionar a opção "Run whether user is logged on or not" e selecione a caixa "Run with highest privileges"
4)Na aba Triggers, clique em "New"
5) Nesta tela abrirá a configuração do cronograma se será executado conforme deseja, após isso clique em "Ok":
6)Na aba Actions, clique em "New"
7) Nesta janela selecione a opção "Start a program" e em "Browse" selecione o Script criado no passo 1 e clique em "Ok"
8) Clique em "OK" na janela "Create Task" para finalizar a criação da tarefa de backup.
DOCUMENTAÇÃO DO FABRICANTE
Backup do Alteryx Server & Recuperação Parte 1: Práticas recomendadas