Server configuration backup

This document describes the automatic configuration backup in PhenixID Server.

The reader of this document should have some basic knowledge about PhenixID Server.

System requirements

PhenixID Server 2.4 or later

Overview

PhenixID Server configuration is stored in config/phenix-store.json. By default this file is backed up every night at 02:00 and saved for 7 generations.

Backups are stored in directory config/backups/<timestamp>/

Actual backup is performed by a pipe started by the built-in scheduler. All configuration is created automatically on first server start and bound to the local node.

Scheduler

The scheduler is responsible for executing the backup at specified time. Scheduling requires the scheduler module to be running on the local node. Scheduler jobs are stored in configuration section SCHEDULES.

Schedule execution is configured using a cron like syntax using 6 or 7 whitespace separated fields

Field Name Mandatory Allowed Values Allowed Special Characters
Seconds YES 0-59 , - * /
Minutes YES 0-59 , - * /
Hours YES 0-23 , - * /
Day of month YES 1-31 , - * ? / L W
Month YES 1-12 or JAN-DEC , - * /
Day of week YES 1-7 or SUN-SAT , - * ? / L #
Year NO empty, 1970-2099 , - * /

For more information on the cron syntax see: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html

Example schedule for node 'demo':

{
  "id" : "demo_backup",
  "description" : "Auto generated schedule for backing up server config. Runs by default 02:00 every night.",
  "enabled" : "true",
  "boundToNode" : "demo",
  "cronSyntax" : "0 0 2 * * ? *",
  "pipeid" : "demo_backup"
}

Backup pipe

The backup pipe executes the actual file backup using the FileBackupValve.

FileBackupValve properties:

  • path: path and file name of file to backup
  • count: number of backup generations to keep

Note: A FileBackupValve can only backup one single path/file. To backup more than one path/file, add a FileBackupValve for each path/file to the pipe.

Example backup pipe for node 'demo':

{
  "id" : "demo_backup",
  "description" : "Auto generated pipe for backing up server config",
  "valves" : [ {
    "name" : "FileBackupValve",
    "config" : {
      "path" : "./config/phenix-store.json",
      "count" : "7"
    }
  } ]
}

Cluster support

Backup is compatible with clustering since each node defines its own backup configuration bound to that specific node using cluster unique ids containing the node name/id. Schedule is also bound to the node using the boundToNode property, limiting execution to the specified node.