Free Trial

Base de conocimiento

Copia de respaldo y recuperación de Alteryx Server, Parte 2: Procedimientos

Community_Admin
Alteryx
Alteryx
Created

Este es el segundo artículo de una serie sobre las copias de respaldo y recuperación de Alteryx Server. Puedes encontrar la Parte 1 en:

 

Copia de respaldo y recuperación de Alteryx Server, Parte 1: Prácticas recomendadas

 

Siempre que haya disponible una copia de respaldo de la base de datos Mongo, puedes recuperar y hacer funcionar Alteryx Server. Por suerte, hacer copias de respaldo de la MongoDB incrustada es muy simple y puede hacerse con unos pocos comandos de consola. Yo recomendaría crear un archivo en lote o script para realizar el proceso. Si lo haces, te permitirá programar la copia de respaldo mediante el uso de Windows Task Scheduler. Los pasos para realizar una copia de respaldo de MongoDB se cubren en la ayuda en línea debajo de la sección de configuración del servidor o en este enlace directo. También resumiré los pasos a continuación para que sea más completo.

 

Para crear una copia de respaldo de MongoDB:

 

  1. Detén AlteryxService.
  2. Ejecuta el siguiente comando para guardar una copia de respaldo de la base de datos en la carpeta especificada:

 

alteryxservice emongodump=
  1. Reinicia AlteryxService

 

Puedes crear un script de esto en un archivo de lote con unos cuantos comandos simples. Ten en cuenta que es posible que las rutas cambien en tu servidor, pero debería verse algo así:

 

Ejemplo:

 

 

"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

 

 

Puedes agregar funciones adicionales, como inicio de sesión y marcas de fecha y hora, a las copias de respaldo.  Como ejemplo de las funciones útiles adicionales que puedes incluir con tus copias de respaldo, he incluido el código de un script de lote que creé y que agrega la siguiente información: inicio de sesión con marcas de fecha y hora, una copia de respaldo que también tiene marcas de fecha y hora, archivo automatizado de la copia de respaldo, copia del archivo a una ubicación de la red y una limpieza de los archivos temporales.

 

Una vez que tengas el archivo de lote u otro script para realizar tus copias de respaldo, debes probar el script para asegurarte de que funcione correctamente. Una vez que termines la prueba, el próximo paso es programar la copia de respaldo. La manera más fácil de hacerlo es usar Windows Task Scheduler. Para crear una tarea programada en Windows 2012 Server, sigue estos pasos:

 

Crear una tarea programada:

 

  1. Abre Programador de tareas y haz clic en "Crear tarea"

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

 

  1. En la pestaña General, ingresa “Nombre”, “Descripción”, selecciona “Ejecutar tanto si el usuario inició sesión como si o no" y selecciona "Ejecutar con los privilegios más altos"

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

 

  1. En la pestaña Desencadenadores, haz clic en “Nuevo”

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

 

  1. Aparecerá un cuadro de diálogo. Define el cronograma (diariamente, semanalmente, etc...) sobre el que quieres ejecutar y haz clic en “Aceptar”

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

 

  1. En la pestaña Acciones, haz clic en “Nueva”

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

 

  1. En la ventana de diálogo, asegúrate de que esté seleccionado “Iniciar un programa” y haz clic en “Examinar”. Selecciona el archivo en lote que creaste y haz clic en “Abrir”. Luego, haz clic en “Aceptar”.

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

 

  1. Haz clic en “Aceptar” en la ventana Crear tarea para finalizar la creación de la tarea de copia de respaldo.

 

Ahora que has implementado procedimientos de copia de respaldo y programado una tarea para automatizar copias de respaldo con éxito, es momento de discutir sobre la restitución de una base de datos desde una copia de respaldo. Lo bueno es que restituir la base de datos es tan simple como hacer copias de respaldo de ella. Asumiendo que 1) el servidor está funcionando, 2) Alteryx Server está instalado y 3) tienes una copia de respaldo válida disponible, puedes seguir estos simples pasos explicados a continuación.

 

Para restituir una copia de respaldo de MongoDB:

 

  1. Detén AlteryxService.
  2. Ejecuta el siguiente comando para restituir la copia de respaldo:

 

alteryxservice emongorestore=,

 

  1. Reinicia AlteryxService.

 

Esta simplicidad de instrucciones de línea de comandos quiere decir que podemos también recuperar script. Sin embargo, como las acciones de recuperación son mucho menos frecuentes, probablemente no sea necesario. En lugar de eso, podrías solo conectarte al servidor, abrir una solicitud de comando y, siguiendo nuestro ejemplo de copia de respaldo anterior, ejecutar los siguientes comandos:

 

Ejemplo:

 

 

"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 Alteryx Server, también recomendamos hacer copias de respaldo del token controlador y de algunos archivos de configuración. Aunque el servidor puede recuperarse sin esos archivos, tener una copia de respaldo de ellos puede acelerar el proceso de recuperación, y también te asegurarán que podrás desencriptar cualquier dato sensible en la base de datos. Recomendamos hacer copia de respaldo de los siguientes archivos de configuración:

 

C:/ProgramData/Alteryx/RuntimeSettings.xml

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

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

 

De nuevo, ten en cuenta que las rutas exactas pueden cambiar dependiendo de la configuración del servidor y de dónde esté ubicada la copia de respaldo. Este ejemplo también asume que la copia de respaldo no está comprimida o archivada. Si estás usando un script de copia de respaldo que archive la copia de respaldo y la copia al almacenamiento de red, deberás copiar el archivo de copia de respaldo en el servidor y descomprimir el archivo antes de ejecutar los comandos de recuperación anteriormente mencionados.

 

 

A continuación te presento mi código de muestra de script de lote:

 

::-----------------------------------------------------------------------------
::
:: Script de copia de respaldo de AlteryxServer v.2.0.2 - 01/04/19
:: Creado por: Kevin Powney
::
:: Verificaciones de comienzo y detención adaptadas desde el código del ejemplo por Eric Falsken
::
::-----------------------------------------------------------------------------

@echo off

::-----------------------------------------------------------------------------
:: Configura las variables de Registro, Temporal, Red y Rutas de aplicación
::
:: Actualiza estos valores según corresponda para tu entorno. Nota
:: los espacios deben evitarse en las rutas de Directorio de registro, Directorio de temporal y Directorio de red.
:: La barra al final también es obligatoria para estas rutas.
::-----------------------------------------------------------------------------

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

::-----------------------------------------------------------------------------
:: Detén Alteryx Service
::-----------------------------------------------------------------------------

echo %date% %time% %tzone%: Stopping Alteryx Service... >> %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%: Estado de servicio está cambiando, esperando a que el servicio resuelva su estado antes de realizar cambios >> %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%: Esperando a que AlteryService se detenga >> %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%: AlteryService se detuvo >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Hacer copia de respaldo de MongoDB en directorio temporal local.
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Iniciando copia de respaldo de MongoDB... >> %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

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

::-----------------------------------------------------------------------------
:: Hacer copia de respaldo de archivos de configuración en directorio temporal local.
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Haciendo copias de respaldo de configuraciones, conexiones y alias... >> %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

::-----------------------------------------------------------------------------
:: Reinicia Alteryx Service
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Reiniciando 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%: Estado de servicio está cambiando, esperando que el servicio resuelva su estado antes de hacer cambios >> %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%: Esperando que AlteryxService se inicie >> %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%: AlteryxService se inició >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Esta sección comprime la copia de respaldo en un solo archivo comprimido
::
:: Ten en cuenta que el comando a continuación requiere instalar 7-Zip en el servidor.
:: Puedes descargar 7-Zip desde http://www.7-zip.org/ o cambiar el comando a
:: utiliza la utilidad de compresión que elijas como se define en la variable anterior.
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Archivando la copia de respaldo... >> %LogDir%BackupLog%datetime%.log

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

::-----------------------------------------------------------------------------
:: Mover archivo comprimido a la ubicación de almacenamiento de red y limpiar archivos locales
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Moviendo archivo a almacenamiento de red >> %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

::-----------------------------------------------------------------------------
:: Listo
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Se completó el proceso de copia de respaldo >> %LogDir%BackupLog%datetime%.log
GOTO :EOF

:SystemError
echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time% %tzone%: Error al iniciar o detener el servicio. No se puede acceder al servicio, está fuera de línea o no respondió a la solicitud de inicio o detención en el periodo de tiempo designado. >> %LogDir%BackupLog%datetime%.log