Skip to main content

REST - /v1/backups

LICENSEย Weaviate on Stackoverflow badgeย Weaviate issues on GitHub badgeย Weaviate version badgeย Weaviate total Docker pulls badgeย Go Report Card

Introductionโ€‹

See the Backups page for a general introduction, configuration, and tech background of Backups.

APIโ€‹

Create Backupโ€‹

Once the modules are enabled and the configuration is provided, you can start a backup on any running instance with a single HTTP request.

Method and URLโ€‹

POST /v1/backups/{backend}

Parametersโ€‹

URL Parametersโ€‹
nametyperequireddescription
backendstringyesThe name of the backup provider module without the backup- prefix, for example s3, gcs, azure, or filesystem.
Request Bodyโ€‹

The request takes a json object with the following properties:

nametyperequireddescription
idstring (lowercase letters, numbers, underscore, minus)yesThe id of the backup. This string must be provided on all future requests, such as status checking or restoration.
includelist of stringsnoAn optional list of class names to be included in the backup. If not set, all classes are included.
excludelist of stringsnoAn optional list of class names to be excluded from the backup. If not set, no classes are excluded.

Note: You cannot set include and exclude at the same time. Set none or exactly one of those.

import weaviate

client = weaviate.Client("http://localhost:8080")

result = client.backup.create(
backup_id="my-very-first-backup",
backend="filesystem",
include_classes=["Article", "Publication"],
wait_for_completion=True,
)

print(result)

While you are waiting for a backup to complete, Weaviate stays fully usable.

Asynchronous Status Checkingโ€‹

All client implementations have a "wait for completion" option which will poll the backup status in the background and only return once the backup has completed (successfully or unsuccessfully).

If you set the "wait for completion" option to false, you can also check the status yourself using the Backup Creation Status API.

GET /v1/backups/{backend}/{backup_id}
Parametersโ€‹
URL Parametersโ€‹
nametyperequireddescription
backendstringyesThe name of the backup provider module without the backup- prefix, for example s3, gcs, azure, or filesystem.
backup_idstringyesThe user-provided backup identifier that was used when sending the request to create the backup.

The response contains a "status" field. If the status is SUCCESS, the backup is complete. If the status is FAILED, an additional error is provided.

import weaviate

client = weaviate.Client("http://localhost:8080")

result = client.backup.get_create_status(
backup_id="my-very-first-backup",
backend="filesystem",
)

print(result)

Restore Backupโ€‹

You can restore any backup to any machine as long as the number of nodes between source and target are identical. The backup does not need to be created on the same instance. Once a backup backend is configured, you can restore a backup with a single HTTP request.

There are two important conditions to note, which can cause a restore to fail:

  • If any of the classes already exist on the target restoration node(s).
  • If the node names of the backed-up class' node(s) do not match those of the target restoration node(s).

Method and URLโ€‹

POST /v1/backups/{backend}/{backup_id}/restore

Parametersโ€‹

URL Parametersโ€‹
nametyperequireddescription
backendstringyesThe name of the backup provider module without the backup- prefix, for example s3, gcs, azure, or filesystem.
backup_idstringyesThe user-provided backup identifier that was used when sending the request to create the backup.
Request Bodyโ€‹

The request takes a json object with the following properties:

nametyperequireddescription
includelist of stringsnoAn optional list of class names to be included in the backup. If not set, all classes are included.
excludelist of stringsnoAn optional list of class names to be excluded from the backup. If not set, no classes are excluded.

Note 1: You cannot set include and exclude at the same time. Set none or exactly one of those.

Note 2: include and exclude is relative to the classes contained in the backup. The restore process does not know which classes existed on the source machine if they were not part of the backup.

import weaviate

client = weaviate.Client("http://localhost:8080")

result = client.backup.restore(
backup_id="my-very-first-backup",
backend="filesystem",
exclude_classes="Article",
wait_for_completion=True,
)

print(result)

Asynchronous Status Checkingโ€‹

All client implementations have a "wait for completion" option which will poll the backup status in the background and only return once the backup has completed (successfully or unsuccessfully).

If you set the "wait for completion" option to false, you can also check the status yourself using the Backup Restore Status API.

GET /v1/backups/{backend}/{backup_id}/restore

Parametersโ€‹

URL Parametersโ€‹
nametyperequireddescription
backendstringyesThe name of the backup provider module without the backup- prefix, for example s3, gcs, azure, or filesystem.
backup_idstringyesThe user-provided backup identifier that was used when sending the requests to create and restore the backup.

The response contains a "status" field. If the status is SUCCESS, the restore is complete. If the status is FAILED, an additional error is provided.

import weaviate

client = weaviate.Client("http://localhost:8080")

result = client.backup.get_restore_status(
backup_id="my-very-first-backup",
backend="filesystem",
)

print(result)

Learn more about Backupsโ€‹

Discover more about Backups Configuration, including Backups to S3, GCS, or Azure, Technical Considerations of Backups, as well as additional use cases.