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:
Detén AlteryxService.
Ejecuta el siguiente comando para guardar una copia de respaldo de la base de datos en la carpeta especificada:
alteryxservice emongodump=
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:
Abre Programador de tareas y haz clic en "Crear tarea"
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"
En la pestaña Desencadenadores, haz clic en “Nuevo”
Aparecerá un cuadro de diálogo. Define el cronograma (diariamente, semanalmente, etc...) sobre el que quieres ejecutar y haz clic en “Aceptar”
En la pestaña Acciones, haz clic en “Nueva”
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”.
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:
Detén AlteryxService.
Ejecuta el siguiente comando para restituir la copia de respaldo:
alteryxservice emongorestore=,
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
Ver artículo completo