Weaviate

Weaviate-Collections mit dem backup-s3-Modul in einem RustFS-Bucket sichern.

In dieser Anleitung verbinden Sie Weaviate — die Open-Source-Vektordatenbank für KI-Suche und RAG — über sein backup-s3-Modul mit RustFS. Sie aktivieren das Modul, erstellen eine Collection mit Vektoren, erzeugen ein Backup im Bucket und stellen es wieder her. Der Ablauf wurde mit semitechnologies/weaviate:1.31.0 gegen einen RustFS-Bucket verifiziert.

Sie benötigen Docker. Dieses Setup ist für lokale Integrationstests gedacht, nicht für den Produktivbetrieb.

Architektur

Ein Backup schreibt backup_config.json, je Klasse eine backup.json und Daten-Chunks in das Bucket-Präfix <backup-id>/. Die Wiederherstellung liest sie unter denselben Collection-Namen zurück.

Das backup-s3-Modul aktivieren

Starten Sie Weaviate mit dem Modul und seinen S3-Einstellungen. Die Zugangsdaten laufen über die Standard-AWS-Variablen — in Weaviate 1.31 liest das Modul AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY, nicht BACKUP_S3_ACCESS_KEY_ID:

docker run -d --name weaviate -p 8080:8080 \
  -e QUERY_DEFAULTS_LIMIT=20 \
  -e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true \
  -e PERSISTENCE_DATA_PATH=/var/lib/weaviate \
  -e ENABLE_MODULES=backup-s3 \
  -e BACKUP_S3_BUCKET=my-bucket \
  -e AWS_REGION=us-east-1 \
  -e AWS_ACCESS_KEY_ID=<your-access-key> \
  -e AWS_SECRET_ACCESS_KEY=<your-secret-key> \
  -e BACKUP_S3_ENDPOINT=<your-rustfs-endpoint>:9000 \
  -e BACKUP_S3_USE_SSL=false \
  -e CLUSTER_HOSTNAME=weaviate-demo \
  semitechnologies/weaviate:1.31.0

Endpunktformat und Zugangsdaten

BACKUP_S3_ENDPOINT erwartet Host und Port ohne Schema — der AWS SDK Go v1-Client hinter dem Modul weist http://... mit Endpoint url cannot have fully qualified paths zurück. TLS steuert BACKUP_S3_USE_SSL=false, die Anfragen erfolgen im Path-Style. Setzen Sie nur BACKUP_S3_ACCESS_KEY_ID statt AWS_ACCESS_KEY_ID, bleibt der Client anonym, und jeder Backup-Aufruf schlägt mit Access Denied fehl.

Prüfen Sie, dass das Modul aktiv ist:

curl -s http://localhost:8080/v1/meta | grep -o "backup-s3"

Collection anlegen und sichern

In Weaviate 1.31 wird das Schema per POST /v1/schema erzeugt. Zwei Objekte einfügen, dann das Backup starten:

curl -s -X POST http://localhost:8080/v1/schema \
  -H "Content-Type: application/json" \
  -d '{"class":"Doc","vectorizer":"none","properties":[{"name":"title","dataType":["text"]}]}'

curl -s -X POST http://localhost:8080/v1/objects -H "Content-Type: application/json" \
  -d '{"class":"Doc","properties":{"title":"RustFS vector backup"},"vector":[0.11,0.22,0.33,0.44]}'

curl -s -X POST http://localhost:8080/v1/objects -H "Content-Type: application/json" \
  -d '{"class":"Doc","properties":{"title":"Weaviate on object storage"},"vector":[0.11,0.22,0.33,0.44]}'

curl -s -X POST http://localhost:8080/v1/backups/s3 -H "Content-Type: application/json" \
  -d '{"id":"rustfs-demo"}'
{"backend":"s3","classes":["Doc"],"id":"rustfs-demo","path":"s3://my-bucket/rustfs-demo","status":"STARTED"}

Warten Sie auf SUCCESS und bestätigen Sie die Objekte in RustFS. Ersetzen Sie alle Verbindungsplatzhalter:

curl -s http://localhost:8080/v1/backups/s3/rustfs-demo
aws s3 ls s3://my-bucket/rustfs-demo/ --recursive \
  --endpoint-url http://<your-rustfs-endpoint>:9000
2026-11-01 13:46:10        304 rustfs-demo/backup_config.json
2026-11-01 13:46:08       1406 rustfs-demo/weaviate-demo/Doc/chunk-1
2026-11-01 13:46:08      27666 rustfs-demo/weaviate-demo/backup.json

Weaviate-Backup-Objekte in der RustFS-Konsole

Wiederherstellen

Das Backup in Weaviate zurückspielen (für eine saubere Wiederherstellung vorher die Live-Collection löschen):

curl -s -X POST http://localhost:8080/v1/backups/s3/rustfs-demo/restore \
  -H "Content-Type: application/json" -d '{}'

Abfrage der wiederhergestellten Daten:

curl -s -X POST http://localhost:8080/v1/graphql -H "Content-Type: application/json" \
  -d '{"query":"{Get{Doc(limit:2){title}}}"}'
{"data":{"Get":{"Doc":[{"title":"RustFS vector backup"},{"title":"Weaviate on object storage"}]}}}

Anhalten oder Zurücksetzen

Demo-Umgebung entfernen und die Bucket-Objekte behalten:

docker rm -f weaviate

Gespeichertes Backup löschen:

aws s3 rm s3://my-bucket/rustfs-demo --recursive \
  --endpoint-url http://<your-rustfs-endpoint>:9000

Fehlerbehebung

Endpoint url cannot have fully qualified paths beim Start

BACKUP_S3_ENDPOINT enthält ein Schema. Verwenden Sie die nackte host:port-Form und setzen Sie BACKUP_S3_USE_SSL=false.

Access Denied beim Erzeugen eines Backups

Das Modul hat keine Zugangsdaten gefunden. In Weaviate 1.31 liest der S3-Client AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY (oder AWS_ACCESS_KEY/AWS_SECRET_KEY) aus der Umgebung — die Variable BACKUP_S3_ACCESS_KEY_ID allein genügt nicht.

In der Fehlermeldung erscheint s3://my-bucket/s3Path/...

BACKUP_S3_PATH ist in dieser Version ein Bucket-Unterpräfix, kein Path-Style-Schalter — setzen Sie es nicht auf s3Path. Der Weaviate-S3-Client verwendet für eigene Endpunkte automatisch Path-Style.

check if backup ... exists schlägt mit unerwartetem Fehler fehl

Der Container erreicht RustFS nicht. Prüfen Sie, ob der Endpunkt-Host auflöst und der Bucket existiert.

Nächste Schritte

Auf dieser Seite