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:
Pare o serviço Alteryx (AlteryxService).
Execute o seguinte comando para salvar um backup da base de dados na pasta especificada:
alteryxservice emongodump=
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:
Abra o Agendador de tarefas e clique em "Criar tarefa"
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"
Na guia Gatilhos, clique em "Novo"
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"
Na guia Ações, clique em "Novo"
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".
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:
Pare o serviço Alteryx (AlteryxService)
Execute o seguinte comando para restaurar o backup:
alteryxservice emongorestore=,
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
Ver artigo completo