ABS configuration file examples
For the complete documentation index see: llms.txt
All documentation pages available in markdown.
This page explains the sections of an example Aerospike Backup Service (ABS) configuration file, illustrating the basic requirements for a backup configuration.
Aerospike publishes a JSON schema for this configuration file that enables autocomplete and validation in the VSCode and IntelliJ editors.
ABS performs strict validation of the configuration file at startup. Invalid configurations prevent the service from starting.
All configuration parameters use kebab-case, including min-part-size and max-async-connections.
View full configuration file
# yaml-language-server: $schema=https://raw.githubusercontent.com/aerospike/aerospike-backup-service/refs/tags/v3.1.0/docs/config.schema.jsonaerospike-clusters:abs-cluster: # <--- Custom user-defined cluster name seed-nodes: - host-name: localhost port: 3000 credentials: user: tester password: secrets:cluster-creds:password # Secret Agent path secret-agent-name: secret-agent # <--- Refers to the secret agent name under secret-agents
secret-agents:secret-agent: # <--- Custom user-defined secret agent name address: localhost port: 5000 connection-type: tcp
storage:s3: # <--- Custom user-defined storage name s3-storage: # Storage type; can be one of "local-storage", "s3-storage", "azure-storage", "gcp-storage" path: backups bucket: as-backup-bucket s3-region: eu-central-1 min-part-size: 5_242_880 # Minimum S3 upload chunk size in bytes
backup-policies:dailyBackupPolicy: # <--- Custom user-defined policy name parallel: 8 # Parallelism level (May affect performance) file-limit: 1000 # Max backup file size in MB (May affect performance) compression: # Backup files will be compressed before uploading (May affect performance) mode: ZSTD level: 3 concurrent-incremental: false with-cluster-configuration: false retention: full: 10 # Retain 10 full backups incremental: 5 # Retain incremental backups for the 5 latest full backups
backup-routines:dailyLocalBackupRoutine: # <--- Custom routine name interval-cron: "@daily" # Full backup will be triggered daily at midnight incr-interval-cron: "0 */2 * * * *" # Incremental backups every 2 hours source-cluster: abs-cluster # <--- Refers to the cluster name under aerospike-clusters storage: s3 # <--- Refers to the storage name under storage backup-policy: dailyBackupPolicy # <--- Refers to the policy name under backup-policies namespaces: ["test"] # <--- Optional; omit or use [] to back up all namespacesConfiguration file components
aerospike-clusters
This example configuration connects to the Aerospike Database cluster named abs-cluster.
The seed-nodes parameter defines the host and port for the Aerospike cluster on the network.
The credentials parameter passes a plaintext username and a reference to a password stored in the Secret Agent.
You can also use a plaintext username and password without the Secret Agent reference for testing purposes.
If a credential value starts with secrets:, ABS treats it as a Secret Agent reference in the format secrets:RESOURCE_LABEL:KEY.
Configure Secret Agent connections for ABS in the secret-agents section.
The middle segment is a Secret Agent resource label you define when storing secrets in the agent.
max-parallel-scans
max-parallel-scans sets a per-cluster limit on the number of concurrent scans across all routines.
aerospike-clusters: abs-cluster: max-parallel-scans: 4secret-agents
The secret-agents section defines one or more connections to the Aerospike Secret Agent.
secret-agents: secret-agent: # <--- Custom user-defined secret agent name address: localhost port: 5000 connection-type: tcpTo configure TLS, use ca-file alone for server verification, or add cert-file, key-file, and name together for mutual TLS authentication:
secret-agents: secure-agent: address: secret-agent.example.com port: 3005 connection-type: tcp ca-file: /etc/ssl/certs/ca.pem # CA certificate to verify the server cert-file: /etc/ssl/certs/client-cert.pem # Client certificate for mutual TLS key-file: /etc/ssl/private/client-key.pem # Client private key for mutual TLS name: secret-agent.example.com # Required for mutual TLS (SNI)storage
The storage section sets up four different storage destinations: local, S3, Azure, and GCP.
Each one has a separate label, here storage1, storage2, and so on.
You can set up as many or as few destinations as you want in your own configuration.
Note the specific authentication requirements for the different cloud storage providers.
You can set an object storage class on S3, Azure, and GCP destinations. Use storage-class.data (and storage-class.metadata for S3 and Azure) to choose the durability and availability tier. Supported values depend on the provider, and for S3 and Azure, the allowed values differ between data and metadata:
- S3:
dataaccepts any ofSTANDARD,GLACIER,STANDARD_IA,ONEZONE_IA,INTELLIGENT_TIERING,DEEP_ARCHIVE,OUTPOSTS,GLACIER_IR,SNOW, orEXPRESS_ONEZONE.metadataonly accepts fast-retrieval classes:STANDARD,STANDARD_IA,INTELLIGENT_TIERING,EXPRESS_ONEZONE,ONEZONE_IA, orOUTPOSTS. - Azure Blob Storage:
dataacceptsHot,Cool,Cold, orArchive.metadataacceptsHot,Cool, orCold, but notArchive. - Google Cloud Storage:
dataacceptsSTANDARD,NEARLINE,COLDLINE, orARCHIVE. GCP has no configurablemetadatatier; ABS always stores metadata objects usingSTANDARD.
storage: s3: # <--- Custom user-defined storage name s3-storage: # Storage type; can be one of "local-storage", "s3-storage", "azure-storage", "gcp-storage" path: backups bucket: as-backup-bucket s3-region: eu-central-1 min-part-size: 5_242_880 # Minimum S3 upload chunk size in bytesAdditional storage examples:
storage: # Example 1: Local Storage storage1: local-storage: path: /local/backups
# Example 2: S3 Storage storage2: s3-storage: bucket: my-backup-bucket path: backups s3-profile: default s3-region: eu-central-1 storage-class: data: STANDARD metadata: STANDARD
# Example 3: Azure Storage storage3: azure-storage: account-name: my-storage-account account-key: my-secret-key container-name: my-container endpoint: 'https://my-storage-account.blob.core.windows.net' path: backups storage-class: data: Hot metadata: Hot
# Example 4: GCP Storage storage4: gcp-storage: bucket-name: my-gcp-bucket key-file-path: /path/to/service-account-key.json endpoint: 'https://storage.googleapis.com' path: backups storage-class: data: STANDARDbackup-policies
A backup policy is a set of parameters that define how to perform a backup. You can create many different policies, then schedule each to run at different times or under different circumstances.
The following example defines a policy called dailyBackupPolicy, which is later scheduled to run daily in the backup-routines section.
With parallel, it specifies the number of parallel reader threads that read Aerospike partitions.
You can also specify the size of each backup file with file-limit in MB, as well as a compression algorithm and compression level with compression.
Set concurrent-incremental: true to allow incremental backups to run alongside a full backup of the same routine. The default is false, which skips incremental backups while another backup for that routine is in progress.
Set with-cluster-configuration: true to include cluster configuration in the backup. The default is false.
In the retention section, this example specifies that the previous 10 full backups are retained in storage, in addition to any incremental backups made during the last 5 full backups.
backup-policies: dailyBackupPolicy: # <--- Custom user-defined policy name parallel: 8 # Parallelism level (May affect performance) file-limit: 1000 # Max backup file size in MB (May affect performance) compression: # Backup files will be compressed before uploading (May affect performance) mode: ZSTD level: 3 concurrent-incremental: false with-cluster-configuration: false retention: full: 10 # Retain 10 full backups incremental: 5 # Retain incremental backups for the 5 latest full backupsbackup-routines
The backup-routines section schedules one or more routines to run from specified sources at specified intervals.
In this example, the routine dailyLocalBackupRoutine backs up the test namespace from source cluster abs-cluster to the storage destination s3, following the rules defined in dailyBackupPolicy.
This routine performs full and incremental backups based on cron intervals.
It performs an incremental backup every two hours and a full backup each day at midnight (UTC+0).
backup-routines: dailyLocalBackupRoutine: # <--- Custom routine name interval-cron: "@daily" # Full backup will be triggered daily at midnight incr-interval-cron: "0 */2 * * * *" # Incremental backups every 2 hours source-cluster: abs-cluster # <--- Refers to the cluster name under aerospike-clusters storage: s3 # <--- Refers to the storage name under storage backup-policy: dailyBackupPolicy # <--- Refers to the policy name under backup-policies namespaces: ["test"] # <--- Optional; omit or use [] to back up all namespacesprefer-racks
prefer-racks takes a list of Aerospike rack IDs on a backup routine.
:::caution Not implemented in this version
ABS 3.1.0 accepts prefer-racks in a routine’s configuration, but does not act on it. Backups run identically whether or not prefer-racks is set, with no rack-based read preference applied. Rack-preferred reads were implemented starting in ABS 3.4.0, under aerospike-clusters.CLUSTER_NAME.prefer-racks rather than under the routine.
:::
For parallel backup sliced by host or partition, use node-list or partition-list on separate ABS instances instead. See Rack awareness for more information on masters, replicas, and racks.
backup-routines: dailyLocalBackupRoutine: interval-cron: "@daily" incr-interval-cron: "0 */2 * * * *" source-cluster: abs-cluster storage: s3 backup-policy: dailyBackupPolicy namespaces: ["test"] prefer-racks: [100, 101] # Accepted but has no effect in ABS 3.1.0node-list
Set node-list on a routine to back up only the listed cluster nodes.
Each node can be an IP address and port (IP:PORT), a hostname and port (HOSTNAME:PORT), or a node ID. See node-list in the configuration reference.
If you omit node-list, ABS backs up all nodes in the cluster.
node-list is mutually exclusive with partition-list.
Each routine with node-list is potentially partial: assign non-overlapping node slices across parallel ABS instances so together they cover every node you intend to back up. See Parallel backups.
:::caution Topology changes during backup When the job starts, ABS scans the listed nodes. If partition ownership changes during a long backup, scans can read from the current master for a selected partition, which may be on a different node than when the job started. If a partition’s master migrates onto a listed node after the job starts, that partition was not in the initial slice and is not included in that routine’s backup. :::
backup-routines: nodeABackup: interval-cron: "@daily" source-cluster: abs-cluster storage: s3 backup-policy: dailyBackupPolicy namespaces: ["test"] node-list: - 10.0.48.7:4333 - 10.0.48.8:4333partition-list
Set partition-list on a routine to back up only specific partitions. By default, ABS backs up all partitions (0 to 4095).
The format supports individual partitions or ranges:
- Specify a single partition as a number, such as
"0". - Specify a range as
start-count, where the first number is the starting partition (inclusive) and the second is how many partitions to include."100-50"backs up 50 partitions starting from 100. - Specify a list of partitions or ranges as a comma-separated string, such as
"0,100,200,300,400,500".
partition-list is mutually exclusive with node-list.
Use partition-list to parallelize backups across multiple ABS instances. Assign each instance a non-overlapping subset of partitions. See Parallel backups.
backup-routines: partitionABackup: interval-cron: "@daily" source-cluster: abs-cluster storage: s3 backup-policy: dailyBackupPolicy namespaces: ["test"] partition-list: "0-2048"GitHub repository example files
This section explains the two sample configuration files included in the ABS GitHub repository.
Default Docker Compose ABS Configuration:
The following sample backup service configuration supplied with the Docker Compose stack for ABS consists of four sections:
aerospike-clustersdefines the location and access credentials for ABS to communicate with Aerospike Database, calling that clusterabsCluster1. Since this is a Docker Compose stack, it uses the Aerospike Database Docker container name"aerospike-cluster"as the hostname instead of an IP address.storagedefines the location of the storage for database backups. Here, it creates a storage type calledminioStoragethat uses thes3-endpoint-overrideparameter to send backed up data to MinIO instead of Amazon S3. You can define multiple storage types that can later be used in multiple backup policies.- In
backup-policies, a new policy calledkeepFilesPolicyis defined with simple instructions to run in a single thread and keep all previous backups. A policy is a set of instructions defining how to do a specific type of backup. You can define multiple policies that can be used in various backup routines. backup-routinesspecifies a routine calledminioKeepFilesRoutinethat runs thekeepFilesPolicypolicy daily for full backups and hourly for incremental backups. Routines specify the source cluster to back up data from, a storage type as defined under thestoragesection, and a namespace from the source cluster to back up. You can define multiple routines that can be run according to different schedules or on demand.
aerospike-clusters: absCluster1: seed-nodes: - host-name: "aerospike-cluster" port: 3000 credentials: user: admin password: admin
storage: minioStorage: s3-storage: bucket: my-backup-bucket path: backups s3-profile: default s3-region: eu-central-1 s3-endpoint-override: http://minio:9000
backup-policies: keepFilesPolicy: # Run backup operations in a single thread. parallel: 1
backup-routines: minioKeepFilesRoutine: # 24 hours interval for full backups. interval-cron: "@daily" # 1 hour interval for incremental backups. incr-interval-cron: "@hourly" source-cluster: absCluster1 storage: minioStorage namespaces: ["test"] backup-policy: keepFilesPolicyDefault Linux ABS Configuration:
The default configuration file supplied with Linux distributions is smaller and simpler than the configuration in the Docker Compose setup.
By default, it sets up a connection to a namespace called "test" in an Aerospike Database cluster accessible at 127.0.0.1:3000.
It stores backup files locally at /var/lib/aerospike-backup-service.
aerospike-clusters: cluster1: use-services-alternate: false seed-nodes: - host-name: "127.0.0.1" port: 3000 credentials: user: "admin" password: "admin"
storage: local: local-storage: path: /var/lib/aerospike-backup-service
backup-policies: policy1: parallel: 1
backup-routines: routine1: interval-cron: "@weekly" incr-interval-cron: "@daily" backup-policy: "policy1" source-cluster: "cluster1" storage: "local" namespaces: ["test"]