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 

Alteryx Server Backup