Backup/restore account data

Account data (cubes, reports / published reports, workspaces) may be downloaded as an XML file in this way:

  1. Open "Manage Account" view (top-right menu)
  2. Click on "Backup Account Data" button
  3. XML file is a human-readable and it can be stored under the version control like git; you can easily track changes with a diffs between commits.

This XML file can be restored on self-hosted SeekTable instance with an active "System/users admin" subscription:

  1. Login as a user with an installation "admin" rights
  2. Go to "Admin" → "User accounts"
  3. Choose an user account (where you want to restore the backup) and open account's form with a click on "Edit" button
  4. Click on "Restore Account Data":
    Account: restore from XML backup
  5. Choose a file to upload and the restore mode:
    • Keep record IDs, do not restore if IDs already exist: use this option to restore only removed cubes/reports.
    • Keep record IDs, overwrite existing records with same IDs: use this option to transfer/update account data between SeekTable instances.
    • Generate new record IDs: use this option to 'clone' cubes with reports.

With a backup/restore functionality it's easy to organize a typical development flow:

Account data restore API

Deployment may be automated with the restore API endpoint:

POST {SeekTable_BaseUrl}/api/account/{account_id}/restore?mode={mode}
Header: Authorization (required) API key of the user account with "admin" role + login email of this user should be specified in SeekTable_ST:Api:AccountRestoreAllowedForEmail app setting. It is strongly recommended to create a dedicated "admin" user (without cubes/reports) and use its API key ONLY for restore API calls.
account_id (required) ID of the account where cubes/reports are restored.
mode (optional) restore mode:
(empty)
corresponds to "Keep record IDs, do not restore if IDs already exist" mode in UI
allowUpdate
corresponds to "Keep record IDs, overwrite existing records with same IDs"
newIds
corresponds to "Generate new record IDs" mode in UI
Response HTTP/200 (OK) if restore operation executed successfully.
curl -k -H "Content-Type: text/xml" -H "Authorization: SEEKTABLE_ADMIN_ACCOUNT_API_KEY" --data-binary "@seektable_backup_YYYYMMDD.xml" SEEKTABLE_BASE_URL/api/account/ACCOUNT_ID/restore?mode=allowUpdate

Full backup of SeekTable instance

To backup self-hosted SeekTable installation it is enough to make a copy of files in the docker volumes db-volume and csv-files-volume + docker-compose configuration files.