概要

  • 私運用の仕事もやっています! ということで、今日は、Tableau Server のバックアップ ファイルから復元を行った際に経験した unexpected errorの事例と対処方法を紹介します。
  • 先ず Tableau Server のバックアップについて記載します。Tableau Server のバックアップは、以下2種類のコマンドがあります。この2つは、役割が異なります。なお、今回の記事で紹介するコマンドは、tsm maintenance backup コマンドになります。
    • tsm maintenance backup コマンド (← 今回の対象)
      • Tableau Server によって管理されるデータベース (リポジトリ) のバックアップを作成します。 これには、ワークブック、ユーザーのメタデータが含まれます。構成データは含まれません。
    • tsm settings export コマンド
      • Tableau Server の構成およびトポロジ データをexport します。
  • 今回検証に使用した構成は、Tableau Server 2022.1 にてバックアップを行い、Tableau Server 2023.1 でリストアしています。異なるバージョン間のバックアップ/リストアは、サポート上は問題ないオペレーションと考えています。ドキュメントには、以下の記載がありました。

バックアップ ファイルは、バックアップが作成されたバージョンと同じか新しいバージョンの Tableau Server バージョンにのみ復元できます。Tableau の古いバージョンに復元することはできません。

 

tsm maintenance backup コマンド

  • Tableau Server によって管理されるデータベース (リポジトリ) のバックアップを作成します。 バックアップ ファイルは、インストール時に定義されたパスに格納されます。バックアップ ファイルには拡張子が付きます。(例: /var/opt/tableau/tableau_server/data/tabsvc/files/backups/xxxxxxxxxx.tsbak )
  • バックアップのコマンドには、5分程度掛かる想定です。
# tsm maintenance backup --file tableau_data_backup_20230701
Job id is '89', timeout is 1440 minutes.
7% - Starting the Active Repository instance, File Store, and Cluster Controller.
14% - Waiting for the Active Repository, File Store, and Cluster Controller to start.
21% - Installing backup services.
28% - Estimating required disk space.
35% - Gathering disk space information from all nodes.
42% - Analyzing disk space information.
50% - Checking if sufficient disk space is available on all nodes.
57% - Backing up configuration.
64% - Backing up object storage data.
71% - Backing up database.
78% - Assembling the tsbak archive.
85% - Stopping the Active Repository if necessary.
92% - Waiting for the Active Repository to stop if necessary.
100% - Uninstalling backup services.
Backup written to '/var/opt/tableau/tableau_server/data/tabsvc/files/backups/tableau_data_backup_20230701.tsbak' on the controller node.

 

restore コマンドが unexpected errorとなる事例1

  • バックアップ ファイル(.tsbak) をリストアします。unexpected error: ‘FileNotFoundException’ となりました。
# tsm maintenance restore --file tableau_data_backup_20230701.tsbak
Restoring 'tableau_data_backup_20230701.tsbak'...
Using server-side file name 'tableau_data_backup_20230701.tsbak'
The previous RestoreJob did not succeed after running for 0 minute(s).



Restoring the backup 'tableau_data_backup_20230701.tsbak' was unsuccessful.
This job failed due to unexpected error: 'FileNotFoundException'


See '/var/opt/tableau/tableau_server/data/tabsvc/logs/tabadmincontroller/tabadmincontroller_*.log' on Tableau Server nodes running the Administration Controller process for server log information.

 

  • 指定のパスにバックアップ ファイルはありますが、ファイルの所有者/グループがtableau ではありませんでした。ファイルの所有者/グループを変更し、再実行しています。
# chown tableau:tableau /var/opt/tableau/tableau_server/data/tabsvc/files/backups/tableau_data_backup_20230701.tsbak
# ls -l /var/opt/tableau/tableau_server/data/tabsvc/files/backups/
total 955752
-rw-rw---- 1 tableau tableau 978689017 Jul 01 11:46 tableau_data_backup_20230701.tsbak

 

restore コマンドが unexpected errorとなる事例2

  • バックアップ ファイル(.tsbak) をリストアします。unexpected error: ‘CheckFailedException’ となりました。
# tsm maintenance restore --file tableau_data_backup_20230701.tsbak
Restoring 'tableau_data_backup_20230701.tsbak'...
Using server-side file name 'tableau_data_backup_20230701.tsbak'
The previous RestoreJob did not succeed after running for 0 minute(s).
Job id is '6', timeout is 2880 minutes.
2% - The backup cannot be restored because Tableau Server uses the new identity service tables by default. To resolve this issue, first run the 'tsm authentication legacy-identity-mode enable' command to revert Tableau Server to the legacy identity store and then restore the backup again. After the backup is restored, you can upgrade to the more secure and immutable default identity service tables.
5% - Deleting temporary backup file.
8% - Cleaning up restore data on all nodes.
10% - Uninstalling restore services.



Restoring the backup 'tableau_data_backup_20230701.tsbak' was unsuccessful.
This job failed due to unexpected error: 'CheckFailedException'
Check failed


See '/var/opt/tableau/tableau_server/data/tabsvc/logs/tabadmincontroller/tabadmincontroller_*.log' on Tableau Server nodes running the Administration Controller process for server log information.

 

  • 上記の調査のため、ログ /var/opt/tableau/tableau_server/data/tabsvc/logs/tabadmincontroller/tabadmincontroller_*.log を確認します。
  • BackupCompatibilityResult$CheckFailedException: Check failed とあり、バックアップ ファイルの互換性が疑われます。
2023-07-12 11:55:23.849 +0000  pool-23-thread-1 : ERROR com.tableausoftware.tabadmin.webapp.asyncjobs.AsyncJobService - Error running job 6 of type RestoreJob
java.util.concurrent.ExecutionException: com.tableausoftware.tabadmin.webapp.restore.BackupCompatibilityResult$CheckFailedException: Check failed
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
        at java.util.concurrent.FutureTask.get(FutureTask.java:205) ~[?:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.AsyncJobService.runJob(AsyncJobService.java:237) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.AsyncJobService.performJobLoop(AsyncJobService.java:130) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.AsyncJobService.lambda$start$1(AsyncJobService.java:115) ~[tabadmincontroller.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: com.tableausoftware.tabadmin.webapp.restore.BackupCompatibilityResult$CheckFailedException: Check failed
        at com.tableausoftware.tabadmin.webapp.restore.BackupCompatibilityResult.failed(BackupCompatibilityResult.java:47) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.restore.BackupCompatibilityChecker.checkIdentityMatchingStrategyCompatibility(BackupCompatibilityChecker.java:266) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.restore.BackupCompatibilityChecker.checkBackupCompatibility(BackupCompatibilityChecker.java:107) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.RestoreJob.lambda$checkBackupCompatibility$1(RestoreJob.java:433) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.JobStepRunner.lambda$runStep$0(JobStepRunner.java:92) ~[tab-tabadmin-controller-latest.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.JobStepRunner.runStep(JobStepRunner.java:120) ~[tab-tabadmin-controller-latest.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.JobStepRunner.runStep(JobStepRunner.java:88) ~[tab-tabadmin-controller-latest.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.RestoreJob.checkBackupCompatibility(RestoreJob.java:429) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.RestoreJob.runRestoreSteps(RestoreJob.java:360) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.RestoreJob.run(RestoreJob.java:219) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.RestoreJob.run(RestoreJob.java:207) ~[tabadmincontroller.jar:?]
        at com.tableausoftware.tabadmin.webapp.asyncjobs.AsyncJobService.lambda$runJob$2(AsyncJobService.java:229) ~[tabadmincontroller.jar:?]
        ... 4 more
2023-07-12 11:55:23.851 +0000  pool-23-thread-1 : INFO  com.tableausoftware.tabadmin.webapp.asyncjobs.AsyncJobService - Updated status for job 6 of type RestoreJob to Failed

 

tsm maintenance restore コマンド成功例

  • バックアップ ファイル(.tsbak) をリストアします。アイデンティティ ストア の関連性は分かっていませんが、事例2 を回避するため、skip-identity-store-verification のオプション (-k) を指定した結果、リストアが成功しました。
  • リストアのコマンドには、20分程度掛かる想定です。
# tsm maintenance restore --file tableau_data_backup_20230701.tsbak -k
Restoring 'tableau_data_backup_20230701.tsbak'...
Using server-side file name 'tableau_data_backup_20230701.tsbak'
The previous RestoreJob did not succeed after running for 0 minute(s).
Job id is '7', timeout is 2880 minutes.
2% - Checking backup compatibility.
5% - Generating manifest.
8% - Disabling all services.
10% - Waiting for the services to stop.
13% - Installing restore services.
16% - Determining required files for individual nodes.
18% - Checking available disk space on all nodes.
21% - Validating that the Backup Restore Service has access to the backup file.
24% - Transferring required files to remote nodes.
27% - Disabling all services.
29% - Waiting for the services to stop.
32% - Updating the configuration version on nodes.
35% - Waiting for services to reconfigure.
37% - Enabling all services.
40% - Waiting for the services to start.
43% - Restoring key store.
45% - Restoring data for services.
48% - Restoring database.
51% - Restoring asset keys.
54% - Disabling all services.
56% - Waiting for the services to stop.
59% - Updating the configuration version on nodes.
62% - Waiting for services to reconfigure.
64% - Enabling all services.
67% - Waiting for the services to start.
70% - Restoring data to object storage.
72% - Committing data for services.
75% - Committing restored data to database.
78% - Committing asset keys.
81% - Committing data to object storage.
83% - Deleting temporary backup file.
86% - Cleaning up restore data on all nodes.
89% - Uninstalling restore services.
91% - Enabling the services required for indexing.
94% - Connecting to Vizportal Maintenance.
97% - Rebuilding the search index.
100% - Disabling the services used for indexing.

The backup 'tableau_data_backup_20230701.tsbak' was successfully restored.