この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
2014年アドベントカレンダー『Tableau Software Tips&Viz(全部俺) Advent Calendar 2014』17日目です。Tableau Softwareに関する機能紹介、便利ネタや可視化ネタ等を毎日1本ずつ計25本、『1人(全部俺)』で担当してお届けしています。
昨日16日目の投稿ネタは『ブレットグラフ(Bullet Graph)の作成』でした。
- ブレットグラフ(Bullet Graph)の作成|Tableau Software Tips&Viz Advent Calendar 2014 #16 #tableau | Developers.IO
本日17日目は『Tableau Serverバックアップ作業の自動化』に関する御紹介です。
目次
はじめに
Tableau Serverに於いて『定期的なバックアップの取得』は障害復旧とビジネス継続の必要性の観点から実践するようにTableauからも奨励しています。バックアップ処理Tableau Serverの過去ログを掃除する役目も持っており、ストレージ容量とログファイルを扱うメモリ量を減らすと言う意味でもメリットがあります。以降では、自動化スクリプトの中で使える各種メンテナンス用コマンドについて見て行きたいと思います。
もし、Tableau Serverを分散インストール環境で構築している場合は、バックアップタスクは『プライマリ』マシンで取るようにしてください。これはデータがワーカーマシンにあった場合でも同様です。
tabadminユーティリティへのアクセス方法
Tableau Serverでの各種メンテナンス処理はtabadminコマンドを使います。Tableau Server導入時に併せてインストールされるコマンドです。デフォルトパスでインストールした場合、tabadminへのアクセスパスは以下となります。
## 64bit環境の場合
C:\Program Files\Tableau\Tableau Server\<version>\bin
## 32bit環境の場合
C:\Program Files(x86)\Tableau\Tableau Server\<version>\bin
その他tabadminに関する詳細情報は以下を御参照ください。
バックアップ処理スクリプト
スクリプト実行の際のユーザは以下条件を満たす権限を持っている必要があります。詳細は以下を御参照ください。
重要:Tableau Serverのバージョン8.1より前の環境では、バックアップやクリーンアッププロセスを実行する際はtabadmin stopコマンドで一度サーバーを止める必要がありましたが、8.1からは止めなくても処理を実行出来るようになっています。
バックアップコマンド実行例
以下はバックアップ処理の実行例です。tabadminコマンドのbackupオプションを用いてバックアップファイルを作成し、コマンドプロンプトのCOPYコマンドで任意のフォルダパスに退避させる流れです。
D:\Tableau\Tableau Server\8.2\bin>tabadmin backup <backupfilename> -d
D:\Tableau\Tableau Server\8.2\bin>copy <original_backup_path_and_filename> <network_drive_or_other_location_path_and_name>
バックアップコマンドTips
- コマンドに『-d』オプションを付けると、ファイル名に日付情報を含む事が出来ます。
- バックアップファイル名はパスとファイル名を併せて指定する事が出来ます。ファイル名のみの指定の場合、ファイルはTableau Server配下の bin/ディレクトリに生成されます。
- バックアップファイルの拡張子は『.tsbak』です。
- Tableauではバックアップファイルを別の場所にコピーする事をお勧めしています。バックアップファイル格納フォルダを用意してそこに退避させましょう。
以下は実環境での実行例です。事前にD:\tableau_backup_files\tsbakというフォルダを用意し、そのフォルダに対して日付情報入りでバックアップファイルを作成しています。
D:\Tableau\Tableau Server\8.2\bin>tabadmin backup D:\tableau_backup_files\tsbak\TableauServerBackup -d
===== Using as backup tmp directory: D:/Tableau/Tableau Server/data/tabsvc/temp (free space: 103.77 GB)
===== Setting inheritance on D:/Tableau/Tableau Server/data/tabsvc/pgsql/data
===== Cleaning entries from http_requests log older than 7 days
-- Deleted 8 rows
===== Backing up database data
===== Backing up dataengine extracts
===== Backup of database data done
===== Backup of dataengine extracts done
===== Backup written to D:/tableau_backup_files/tsbak/TableauServerBackup-2014-12-09.tsbak
D:\Tableau\Tableau Server\8.2\bin>
メンテナンス処理スクリプト
クリーンアップ実行前のログファイル退避
クリーンアップ前にログを退避させておきたい場合、以下のコマンドを実行する事で実現出来ます。
tabadmin ziplogs -l -n -f
tabadmin ziplogsコマンドの詳細については以下ドキュメントを御参照ください。
クリーンアップ
以下コマンドを実行する事でログファイルの削除も併せて行えます。※Tableau Server停止を行わない場合、1週間以上前のログファイルが削除対象となるようです。
tabadmin cleanup
フルクリーンアップ
Tableau Serverの全ての実行ログを削除する場合は以下のように一旦サーバを止めた後にcleanupコマンドを実行します。
tabadmin stop
tabadmin cleanup
tabadmin start
追加オプション
Tableau Serverの稼働状況を確認する場合、以下の様にコマンド実行結果を比較する事でその内容を検証する事も出来ます。もし稼働していなかった場合、アラートメールを送るような処理をする事も考えられるでしょう。
tsStatusCheck.ps1
sleep 90
$ret = &".\tabadmin.bat" "status"
echo "tab1"
echo $ret
if ( $ret -eq 'Status: RUNNING') {
echo "Tableau Server is Running."
} else {
echo "Tableau Server is Stopped." ## ここでメールを送るなど
}
echo "tab2"
以下は手動でのステータス確認・遷移と、その後に上記プログラムを実行し、ステータスが取れている事を確認した結果となります。
PS D:\Tableau\Tableau Server\8.2\bin> .\tabadmin.bat status
Status: RUNNING
PS D:\Tableau\Tableau Server\8.2\bin> .\tsStatusCheck.ps1
tab1
Status: RUNNING
Tableau Server is Running.
tab2
PS D:\Tableau\Tableau Server\8.2\bin> .\tabadmin.bat stop
===== Stopping service...
-- Service stopped successfully
PS D:\Tableau\Tableau Server\8.2\bin> .\tabadmin.bat status
Status: STOPPED
PS D:\Tableau\Tableau Server\8.2\bin> .\tsStatusCheck.ps1
tab1
Status: STOPPED
Tableau Server is Stopped.
tab2
PS D:\Tableau\Tableau Server\8.2\bin>
スケジューリング
所定のルールに基づいたファイル(PowerShell/拡張子:*.ps1)はタスクスケジューラで管理する事で、自動化機構に組み込む事が可能となります。組み込み方の詳細については以下エントリ等を御参照ください。
- Task Scheduler How To...
- タスク スケジューラを起動する
- タスクスケジューラーでPowerShellスクリプトを実行する方法 | Windowsインフラ管理者への道
- 【PowerShell】タスクスケジューラでスクリプトファイルを実行する - Muni Bus
S3へのアップロード
スケジューリングの過程では、生成したファイルをS3にアップロードさせておきたいというような要望も挙がってくるかも知れません。その際はPowerShell経由でアップロードを実行してみるのも良いでしょう。以下の辺りの情報が参考になると思います。
- [AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
- Upload Objects to an Amazon S3 Bucket - AWS Tools for Windows PowerShell
- amazon web services - uploading all files of a specific type to S3 with Powershell - Stack Overflow
- powershell - power shell moving Files to Amazon s3 - Stack Overflow
まとめ
以上、Tableau Serverに於けるバックアップ自動化の際の実施手順についての御紹介でした。
では、明日もお楽しみに!