Von Milvus 1.x
Dieser Leitfaden bietet einen umfassenden, schrittweisen Prozess für die Migration von Daten von Milvus 1.x (einschließlich 0.9.x und höher) nach Milvus 2.x. Wenn Sie diesen Leitfaden befolgen, können Sie Ihre Daten effizient übertragen und dabei die erweiterten Funktionen und die verbesserte Leistung von Milvus 2.x nutzen.
Voraussetzungen
- Software-Versionen:
- Quell-Milvus: 0.9.x bis 1.x
- Ziel-Milvus: 2.x
- Erforderliche Werkzeuge:
- Milvus-Migrationswerkzeug. Einzelheiten zur Installation finden Sie unter Migrationswerkzeug installieren.
Exportieren der Metadaten der Milvus-Quellinstallation
Um die Migrationsdaten für Milvus 0.9.x bis 1.x vorzubereiten, stoppen Sie die Quell-Milvus-Installation oder führen Sie zumindest keine DML-Operationen mehr in ihr durch.
Exportieren Sie die Metadaten der Milvus-Quellinstallation nach
meta.json
.- Für die Installationen, die MySQL als Backend verwenden, führen Sie
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
- Für Installationen, die SQLite als Backend verwenden, führen Sie aus
./milvus-migration export -s /milvus/db/meta.sqlite -o outputDir
Kopieren Sie den Ordner
tables
Ihrer Milvus-Installation und verschieben Sie dann sowohlmeta.json
als auch den Ordnertables
in einen leeren Ordner.Sobald dieser Schritt abgeschlossen ist, sollte die Struktur des leeren Ordners wie folgt aussehen:
migration_data ├── meta.json └── tables
Laden Sie den im vorangegangenen Schritt vorbereiteten Ordner in einen S3-Blockspeicher-Bucket hoch oder verwenden Sie diesen lokalen Ordner direkt im nächsten Abschnitt.
Konfigurieren Sie die Migrationsdatei
Speichern Sie die Beispiel-Migrationskonfigurationsdatei unter migration.yaml
und ändern Sie die Konfigurationen auf der Grundlage Ihrer tatsächlichen Bedingungen. Es steht Ihnen frei, die Konfigurationsdatei in einem beliebigen lokalen Verzeichnis abzulegen.
dumper:
worker:
limit: 2
workMode: milvus1x
reader:
bufferSize: 1024
writer:
bufferSize: 1024
loader:
worker:
limit: 16
meta:
mode: local
localFile: /outputDir/test/meta.json
source:
mode: local
local:
tablesDir: /db/tables/
target:
mode: remote
remote:
outputDir: "migration/test/xx"
ak: xxxx
sk: xxxx
cloud: aws
region: us-west-2
bucket: xxxxx
useIAM: true
checkBucket: false
milvus2x:
endpoint: "{yourMilvus2_xServerAddress}:{port}"
username: xxxx
password: xxxx
In der folgenden Tabelle werden die Parameter in der Beispielkonfigurationsdatei beschrieben. Eine vollständige Liste der Konfigurationsdateien finden Sie in Milvus Migration: Milvus1.x zu Milvus 2.x.
dumper
Parameter Beschreibung dumper.worker.limit
Die Gleichzeitigkeit der Dumper-Threads. dumper.worker.workMode
Der Betriebsmodus des Migrationsauftrags. Wird bei der Migration von Milvus 1.x auf milvus1x
gesetzt.dumper.worker.reader.bufferSize
Puffergröße, die in jedem Batch aus Milvus 1.x gelesen wird. Einheit: KB. dumper.worker.writer.bufferSize
Puffergröße für das Schreiben in Milvus 2.x in jedem Batch. Einheit: KB. loader
Parameter Beschreibung loader.worker.limit
Die Gleichzeitigkeit der Loader-Threads. meta
Parameter Beschreibung meta.mode
Gibt an, woher die Metadatei meta.json gelesen wird. Gültige Werte: local
,remote
,mysql
,sqlite
.meta.localFile
Lokaler Verzeichnispfad, in dem sich die Datei meta.json
befindet. Diese Konfiguration wird nur verwendet, wennmeta.mode
auflocal
gesetzt ist. Weitere Meta-Konfigurationen finden Sie in README_1X.source
Parameter Beschreibung source.mode
Gibt an, woher die Quelldateien gelesen werden. Gültige Werte:
-local
: liest Dateien von einer lokalen Festplatte.
-remote
: liest Dateien von einem entfernten Speicher.source.local.tablesDir
Der Verzeichnispfad, in dem sich die Quelldateien befinden. Zum Beispiel /db/tables/
.target
Parameter Beschreibung target.mode
Speicherort für gedumpte Dateien. Gültige Werte:
-local
: Speichern der ausgelagerten Dateien auf lokalen Festplatten.
-remote
: Speichern der ausgelagerten Dateien im Objektspeicher.target.remote.outputDir
Ausgabeverzeichnispfad im Cloud-Speicher-Bucket. target.remote.ak
Zugriffsschlüssel für Milvus 2.x-Speicher. target.remote.sk
Geheimer Schlüssel für Milvus 2.x-Speicher. target.remote.cloud
Anbieter des Cloud-Speicherdienstes. Beispielwerte: aws
,gcp
,azure
.target.remote.region
Region des Cloud-Speichers. Es kann ein beliebiger Wert sein, wenn Sie lokales MinIO verwenden. target.remote.bucket
Bucket-Name für die Speicherung von Daten. Der Wert muss derselbe sein wie die Konfiguration in Milvus 2.x. Weitere Informationen finden Sie unter Systemkonfigurationen. target.remote.useIAM
Ob eine IAM-Rolle für die Verbindung verwendet werden soll. target.remote.checkBucket
Ob geprüft werden soll, ob der angegebene Bucket im Objektspeicher existiert. target.milvus2x.endpoint
Adresse des Milvus-Zielservers. target.milvus2x.username
Benutzername für den Milvus 2.x-Server. Dieser Parameter ist erforderlich, wenn die Benutzerauthentifizierung für Ihren Milvus-Server aktiviert ist. Weitere Informationen finden Sie unter Aktivieren der Authentifizierung. target.milvus2x.password
Passwort für den Milvus 2.x-Server. Dieser Parameter ist erforderlich, wenn die Benutzerauthentifizierung für Ihren Milvus-Server aktiviert ist. Weitere Informationen finden Sie unter Aktivieren der Authentifizierung.
Starten Sie die Migrationsaufgabe
Starten Sie die Migrationsaufgabe mit dem folgenden Befehl. Ersetzen Sie
{YourConfigFilePath}
durch das lokale Verzeichnis, in dem sich die Konfigurationsdateimigration.yaml
befindet../milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Der obige Befehl konvertiert die Quelldaten in Milvus 1.x in NumPy-Dateien und verwendet dann den Vorgang bulkInsert, um die Daten in den Ziel-Bucket zu schreiben.
Sobald die NumPy-Dateien erzeugt sind, importieren Sie diese Dateien mit dem folgenden Befehl in Milvus 2.x. Ersetzen Sie
{YourConfigFilePath}
durch das lokale Verzeichnis, in dem sich die Konfigurationsdateimigration.yaml
befindet../milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Überprüfen Sie das Ergebnis
Sobald die Migrationsaufgabe ausgeführt wurde, können Sie API-Aufrufe tätigen oder Attu verwenden, um die Anzahl der migrierten Entitäten anzuzeigen. Weitere Informationen finden Sie unter Attu und get_collection_stats().