Free Trial

ナレッジベース

エキスパートから学ぶ。

Alteryx Server のバックアップ方法

Community_Admin
Alteryx
Alteryx
Created

こちらは、Alteryx Serverのバックアップとリカバリに関するシリーズのPart2です。Part1はこちらからどうぞ:

 

Alteryx Serverのバックアップとリカバリ Part1:ベストプラクティス

 

MongoDBのバックアップが利用可能であれば、Alteryx Serverをバックアップして実行することができます。幸いなことに、埋め込まれたMongoDBのバックアップは非常に簡単で、いくつかのコンソールコマンドで実行できます。プロセスを実行するためのバッチファイルまたはスクリプトを作成することをお勧めします。そうすることで、Windowsタスクスケジューラーを使用してバックアップをスケジュールすることができます。MongoDBバックアップを実行するための実際の手順は、サーバー構成セクションの下にあるオンラインヘルプまたはこの直リンクで詳しく説明されています。以下に操作手順の概要を説明します。

 

MongoDBのバックアップを作成する方法:

 

  1. AlteryxServiceを停止します。
  2. 以下のコマンドを実行して、データベースのバックアップを指定のフォルダに保存します:

 

alteryxservice emongodump=
  1. AlteryxServiceを再起動します

 

いくつかのシンプルなコンソールコマンドでこれをバッチファイルに簡単にスクリプトすることができます。サーバーによってパスが異なる可能性があるのでご注意ください。ただし、次のように表示されるはずです。

 

例:

 

 

"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

 

 

ロギングや日付/タイムスタンプなどの追加機能をバックアップに追加できます。  バックアップに含める追加の便利機能の例として、以下の情報を追加してバッチスクリプトのコード作成しました:日付/時刻スタンプ付きログ、日付/時刻スタンプ付きバックアップ、バックアップの自動アーカイブ、ネットワーク上の場所へのアーカイブのコピー、および一時ファイルのクリーンアップ。

 

バックアップを実行するためのバッチファイルまたはその他のスクリプトを作成したら、スクリプトをテストして正しく機能することを確認する必要があります。テストが完了したら、次のステップはバックアップのスケジュールです。最も簡単なのは、Windowsタスクスケジューラーを使用する方法です。Windows Server 2012でスケジュールタスクを作成するには、次のステップに従ってください:

 

スケジュールタスクを作成:

 

  1. タスクスケジューラーを開き、「タスクの作成」をクリック

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

 

  1. 一般タブで、「名前」、「説明」を入力し、「ユーザーがログオンしているかどうかにかかわらず実行する」を選択し、「最上位の特権で実行する」を選択します。

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

 

  1. トリガータブにある「新規」をクリック

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

 

  1. ダイアログボックスが表示されます。バックアップを実行するスケジュール(日単位、週単位など)を定義し、「OK」をクリックします。

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

 

  1. アクションタブで「新規」をクリック

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

 

  1. ダイアログウィンドウで、「プログラムの開始」が選択されていることを確認し、「閲覧」をクリックします。作成したバッチファイルを選択して「開く」をクリックします。そして、「OK」をクリックします。

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

 

  1. タスクの作成ウィンドウで「OK」をクリックして、バックアップタスクの作成を終了します。

 

これで、バックアップ手順を正しく実行し、バックアップを自動化するタスクのスケジュールができました。次はバックアップからのデータベースの復元について説明します。良いニュースとしては、データベースの復元はバックアップと同じくらい簡単なことです。1)サーバーが機能していること、2)Alteryx Serverがインストールされていること、3)有効なバックアップがあることを前提として、以下の簡単な手順に沿って行うことができます。

 

MongoDBのバックアップを復元する方法:

 

  1. AlteryxServiceを停止します。
  2. 以下のコマンドを実行してバックアップを復元します:

 

alteryxservice emongorestore=,

 

  1. AlteryxServiceを再起動します

 

このシンプルさに加えて、同じようにコマンドラインステートメントに焦点を合わせることは、スクリプト回復も可能であることを意味します。ただし、回復処置はそれほど頻繁ではないため、おそらく必要ではありません。代わりに、単にサーバーに接続してコマンドプロンプトを開き、上記のバックアップ例に従って次のコマンドを実行します。

 

例:

 

 

"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

 

 

Alteryx Serverの場合、コントローラートークンといくつかの設定ファイルをバックアップすることをお勧めします。サーバーはこれらのファイルなしでも回復することができますが、それらのバックアップをとっておくことで、回復プロセスを迅速化することができます。またバックアップによりデータベースのどんな機密データの解読も確実にできるでしょう。バックアップをお勧めする設定ファイルは以下の通りです:

 

C:/ProgramData/Alteryx/RuntimeSettings.xml

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

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

 

繰り返しになりますが、正確なパスはサーバー構成やバックアップの保存場所によって異なる場合があります。この例では、バックアップが圧縮/アーカイブされていないと仮定しています。バックアップをアーカイブしてネットワークストレージにコピーするバックアップスクリプトを使用している場合は、上記の回復コマンドを実行する前に、バックアップファイルをサーバーにコピーしてアーカイブを解凍する必要があります。

 

 

以下は私のサンプルバッチスクリプトのコードです:

 

::-----------------------------------------------------------------------------
::
:: AlteryxServer Backup Script v.2.0 - 10/26/18
:: Created By: Kevin Powney
::
:: Service start and stop checks adapted from example code by Eric Falsken
::
::-----------------------------------------------------------------------------

@echo off

::-----------------------------------------------------------------------------
:: Set variables for Log, Temp, Network, and Application Paths
::
:: Please update these values as appropriate for your environment. Note
:: that spaces should be avoided in the LogDir, TempDir, and NetworkDir paths.
:: The trailing slash is also required for these paths.
::-----------------------------------------------------------------------------

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 (#39;WMIC OS GET LocalDateTime ^| FIND "."#39;) DO SET DTS=%%a
SET DateTime=%DTS:~0,4%%DTS:~4,2%%DTS:~6,2%_%DTS:~8,2%%DTS:~10,2%%DTS:~12,2%

echo %date% %time%: Starting backup process > %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Stop Alteryx Service
::-----------------------------------------------------------------------------

echo %date% %time%: 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 Service State is changing, waiting for service to resolve its state before making changes >> %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 Waiting for AlteryService to stop >> %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 AlteryService is stopped >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: Backup MongoDB to local temp directory.
::-----------------------------------------------------------------------------

echo %date% %time%: Starting MongoDB Backup >> %LogDir%BackupLog%datetime%.log
echo. >> %LogDir%BackupLog%datetime%.log

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

::-----------------------------------------------------------------------------
:: Backup Config files to local temp directory.
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time%: Backing up settings, connections, and 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

::-----------------------------------------------------------------------------
:: Restart Alteryx Service
::-----------------------------------------------------------------------------

echo %date% %time%: Restarting 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 Service State is changing, waiting for service to resolve its state before making changes >> %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 Waiting for AlteryxService to start >> %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 AlteryxService is started >> %LogDir%BackupLog%datetime%.log

::-----------------------------------------------------------------------------
:: This section compresses the backup to a single zip archive
::
:: Please note the command below requires 7-Zip to be installed on the server.
:: You can download 7-Zip from http://www.7-zip.org/ or change the command to
:: use the zip utility of your choice as defined in the variable above.
::-----------------------------------------------------------------------------

echo %date% %time%: Archiving backup >> %LogDir%BackupLog%datetime%.log

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

::-----------------------------------------------------------------------------
:: Move zip archive to network storage location and cleanup local files
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time%: Moving archive to network storage >> %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

::-----------------------------------------------------------------------------
:: Done
::-----------------------------------------------------------------------------

echo. >> %LogDir%BackupLog%datetime%.log
echo %date% %time%: Backup process completed >> %LogDir%BackupLog%datetime%.log
GOTO :EOF

:SystemError
echo Error starting or stopping service. Service is not accessible, is offline, or did not respond to the start or stop request within the designated time frame. >> %LogDir%BackupLog%datetime%.log