IBM Cloud Docs
Sichern und Wiederherstellen von Daten für IBM Vor Ort

Sichern und Wiederherstellen von Daten für IBM Vor Ort

IBM Cloud Pak for Data IBM Software Hub

Sie können die mit Ihrer Installation verbundenen Daten in IBM On-premises sichern und wiederherstellen.

In der folgenden Tabelle sind die Upgradepfade aufgelistet, die von den Scripts unterstützt werden.

Von Scripts unterstützte Upgradepfade
Verwendete Version Version, auf die Sie ein Upgrade durchführen können
5.0.x 5.1.x
4.8.x
  1. 5.0.x oder 5.1.x
4.7.x 4.8.x oder 5.0.x
4.6.x 4.7.x oder 4.8.x
4.5.x 4.6.x oder 4.7.x
4.0.x 4.5.x oder 4.6.x

Einfachere Möglichkeiten, das Upgrade durchzuführen, werden in den folgenden Themen beschrieben:

Wenn Sie ein Upgrade von 4.6.4 oder einer früheren Version auf die neueste Version durchführen, müssen Sie ein Upgrade auf 4.6.5 durchführen, bevor Sie ein Upgrade auf das neueste Release durchführen können.

Der primäre Datenspeicher ist eine PostgreSQL-Datenbank.

Wählen Sie eine der folgenden Methoden zum Verwalten der Datensicherung aus:

  • Kubernetes Cron-Job: Verwenden Sie die $INSTANCE-store-cronjob Cron-Job, der für Sie bereitgestellt wird.
  • ScriptbackupPG.sh: Verwenden Sie das Bash-Script backupPG.sh.
  • Tool pg_dump: Führen Sie das Tool pg_dump direkt auf jedem Cluster aus. Dies ist eine manuelle Option, mit der Sie den Prozess steuern können.

Wenn Sie eine dieser Prozeduren für die Datensicherung verwenden, bevor Sie ein Upgrade auf eine andere Version durchführen, bleiben die Arbeitsbereichs-IDs für Ihre Skills erhalten, aber die Serviceinstanz-IDs und Berechtigungsnachweise werden geändert.

Vorbereitende Schritte

  • Eine mithilfe dieser Prozedur erstellte Sicherung enthält alle Assistenten und Skills aus allen Serviceinstanzen. Es kann Fähigkeiten und Assistenten umfassen, auf die Sie keinen Zugriff haben.
  • Die Zugriffsberechtigungsdaten der ursprünglichen Serviceinstanzen werden nicht in der Sicherung gespeichert. Mit anderen Worten: Die ursprünglichen Zugriffsberechtigungen, die festlegen, welche Benutzer eine Serviceinstanz anzeigen bzw. nicht anzeigen dürfen, werden nicht beibehalten.
  • Sie können dieses Verfahren nicht verwenden, um die von der Suchintegration zurückgegebenen Daten zu sichern. Daten, die durch die Suchintegration abgerufen werden, stammen aus einer Datensammlung in einer Discovery-Instanz. Informationen zum Sichern der Daten finden Sie in der Dokumentation zuDiscovery.
  • Wenn Sie den Discovery-Dienst, mit dem Ihre Suchintegration verbunden ist, sichern und wiederherstellen oder anderweitig ändern, können Sie die Suchintegration nicht wiederherstellen, sondern müssen sie neu erstellen. Wenn Sie eine Suchintegration einrichten, ordnen Sie Abschnitte der Antwort des Assistenten Feldern in einer Datensammlung zu, die von einer Instanz von Discovery auf demselben Cluster gehostet wird. Durch Änderungen an der Discovery-Instanz wird diese Zuordnung unbrauchbar. Wenn sich Ihr Discovery-Dienst nicht ändert, kann die Suchintegration weiterhin eine Verbindung zur Datensammlung herstellen.
  • Das Tool zum Wiederherstellen der Daten löscht die aktuelle Datenbank, bevor die Sicherung wiederhergestellt wird. Daher wird empfohlen, vorher eine Sicherung der aktuellen Datenbank zu erstellen.
  • Der Ziel-Cluster IBM Cloud Pak for Data, in dem Sie die Daten wiederherstellen, muss über dieselbe Anzahl bereitgestellter Dienstinstanzen verfügen wie die Umgebung, aus der Sie die Datenbank sichern. Zur Überprüfung im IBM Cloud Pak for Data-Web-Client wählen Sie im Hauptnavigationsmenü Services aus, wählen Instanzen aus und öffnen dann die Registerkarte Bereitgestellte Instanzen. Wenn mehrere Benutzer Instanzen erstellt haben, bitten Sie die anderen Benutzer, die Instanzen erstellt haben, sich anzumelden und die Anzahl der erstellten Instanzen zu überprüfen. Anschließend können Sie die Gesamtsumme der Instanzen für Ihre Bereitstellung addieren. Nicht einmal ein Benutzer mit Verwaltungsaufgaben kann Instanzen anzeigen, die von anderen Benutzern über die Web-Client-Benutzerschnittstelle erstellt wurden.

Daten unter Verwendung des Cron-Jobs sichern

Es wird ein Cron-Job namens $INSTANCE-store-cronjob erstellt und automatisch für Sie aktiviert, wenn Sie den Service bereitstellen. Ein Cron-Job ist eine Art Kubernetes-Controller. Ein Cron-Job erstellt Jobs nach einem sich wiederholenden Zeitplan. Weitere Informationen finden Sie CronJob in der Kubernetes-Dokumentation.

Das Geschäft CronJob erstellt die $INSTANCE-backup-job-$TIMESTAMP-Jobs. Jeder $INSTANCE-backup-job-$TIMESTAMP-Job löscht alte Protokolle und führt eine Sicherung der Datenbank des Geschäfts PostgreSQL aus. PostgreSQL stellt ein pg_dump-Tool bereit, das eine Sicherung erstellt. Um eine Sicherung zu erstellen, sendet das Tool pg_dump den Datenbankinhalt an stdout, die Sie anschließend in eine Datei schreiben können. Das pg_dump erstellt die Backups mit dem Befehl pg_dump und speichert sie in einem persistenten Volume Claim (PVC) namens $INSTANCE-store-db-backup-pvc.

Sie sind dafür verantwortlich, die Sicherung nach ihrer ursprünglichen Erstellung an eine sicherere Position zu verschieben, vorzugsweise an eine Position außerhalb des Clusters, an der die Sicherungen nicht ohne Weiteres gelöscht werden können. Stellen Sie sicher, dass dies für alle Umgebungen geschieht, insbesondere für Produktionscluster.

In der folgenden Tabelle sind die Konfigurationswerte zum Steuern des Cron-Jobs für die Datensicherung aufgelistet. Sie können diese Einstellungen bearbeiten, indem Sie den Cron-Job nach der Bereitstellung des Dienstes mit dem Befehl oc edit cronjob $INSTANCE-store-cronjob bearbeiten.

Variablen für Cron-Jobs
Variabel Beschreibung Standardwert
store.backup.suspend Bei 'True' werden vom Cron-Job keine Sicherungsjobs erstellt. False
store.backup.schedule Gibt die Tageszeit zum Ausführen der Sicherungsjobs an. Geben Sie den Zeitplan mithilfe eines CRON-Ausdrucks an. Zum Beispiel {minute} {hour} {day} {month} {day-of-week}, wobei {day-of-week} als 0 = Sonntag, 1 = Montag usw. angegeben wird. Nach dem Standardzeitplan wird der Sicherungsjob jeden Tag um 23:00 Uhr ausgeführt. 0 23 * * *
store.backup.history.jobs.success Gibt an, wie viele erfolgreiche Jobs aufbewahrt werden sollen. 30
store.backup.history.jobs.failed Gibt an, wie viele fehlgeschlagene Jobs in den Jobprotokollen aufbewahrt werden sollen. 10
store.backup.history.files.weekly_backup_day Ein Wochentag wird als wöchentlicher Sicherungstag bezeichnet. 0=Sunday, 1=Mondayusw. 0
store.backup.history.files.keep_weekly Die Anzahl der für den wöchentlichen Sicherungstag erstellten Sicherungen, die beibehalten werden sollen. 4
store.backup.history.files.keep_daily Die Anzahl der Backups, die an allen anderen Tagen der Woche erstellt wurden und aufbewahrt werden müssen. 6

Auf Sicherungsdateien in Portworx zugreifen

Führen Sie die folgenden Schritte aus, um auf die Sicherungsdateien in Portworx zuzugreifen:

  1. Ermitteln Sie den Namen des persistenten Volumes, das für die PostgreSQL-Sicherung verwendet wird:

    oc get pv |grep $INSTANCE-store
    

    Dieser Befehl gibt den Namen des Persistent Volume Claims zurück, in dem sich die Speichersicherung befindet (z. B. pvc-d2b7aa93-3602-4617-acea-e05baba94de3). Der Name wird im weiteren Verlauf dieser Prozedur als $pv_name bezeichnet.

  2. Suchen Sie nach Knoten, auf denen Portworx ausgeführt wird:

    oc get pods -n kube-system -o wide -l name=portworx-api
    
  3. Melden Sie sich als Hauptbenutzer bei einem der Knoten an, auf denen Portworx ausgeführt wird:

    ssh core@<node hostname>
    sudo su -
    
  4. Stellen Sie sicher, dass die persistente Volume in einem getrennten Zustand ist und dass keine Speicher-Backups für den Zeitraum geplant sind, in dem Sie die Backup-Dateien übertragen möchten.

    Denken Sie daran, dass die Sicherungen täglich um 23:00 Uhr (in der für die Knoten konfigurierten Zeitzone) erfolgen, es sei denn, Sie ändern den Zeitplan, indem Sie den Wert des Konfigurationsparameters postgres.backup.schedule bearbeiten. Sie können den Befehl oc get cronjobs ausführen, um den aktuellen Zeitplan für den Job $RELEASE-backup-cronjob zu überprüfen. Im folgenden Befehl ist $pvc_node der Name des Knotens, den Sie im ersten Schritt dieser Aufgabe erkannt haben:

    pxctl volume inspect $pv_name |head -40
    
  5. Verbinden Sie das persistente Volume mit dem Host:

    pxctl host attach $pv_name
    
  6. Erstellen Sie einen Ordner, in dem Sie den Knoten einbinden möchten:

    mkdir /var/lib/osd/mounts/voldir
    
  7. Hängen Sie den Knoten an:

    pxctl host mount $pv_name --path /var/lib/osd/mounts/voldir
    
  8. Ändern Sie das Verzeichnis zu /var/lib/osd/mounts/voldir. Übertragen Sie die Sicherungsdateien an eine sichere Position. Beenden Sie anschließend das Verzeichnis. Hängen Sie den Datenträger ab:

    pxctl host unmount --path /var/lib/osd/mounts/voldir $pv_name
    
  9. Trennen Sie das Volume vom Host:

    pxctl host detach $pv_name
    
  10. Vergewissern Sie sich, dass die Lautstärke auf "aus" gestellt ist. Andernfalls schlagen nachfolgende Sicherungen fehl:

    pxctl volume inspect $pv_name |head -40
    

Über Red Hat OpenShift Container Storage auf gesicherte Dateien zugreifen

Führen Sie die folgenden Schritte aus, um über Red Hat OpenShift Container Storage (OCS) auf die Sicherungsdateien zuzugreifen:

  1. Erstellen Sie eine Datenträgermomentaufnahme der Anforderung eines persistenten Datenträgers, die für die PostgreSQL-Sicherung verwendet wird:

    cat <<EOF | oc apply -f -
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: wa-backup-snapshot
    spec:
      source:
    
    
        persistentVolumeClaimName: ${INSTANCE_NAME}-store-db-backup-pvc
    
    
      volumeSnapshotClassName: ocs-storagecluster-rbdplugin-snapclass
    EOF
    
  2. Erstellen Sie einen Persistent Volume Claim aus der Datenträgermomentaufnahme:

    cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: wa-backup-snapshot-pvc
    spec:
      storageClassName: ocs-storagecluster-ceph-rbd
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem
      dataSource:
        apiGroup: snapshot.storage.k8s.io
        kind: VolumeSnapshot
        name: wa-backup-snapshot
      resources:
        requests:
          storage: 1Gi     
    EOF
    
  3. Erstellen Sie einen Pod für den Zugriff auf den Persistent Volume Claim:

    cat <<EOF | oc apply -f -
    kind: Pod
    apiVersion: v1
    metadata:
      name: wa-retrieve-backup
    spec:
      volumes:
        - name: backup-snapshot-pvc
          persistentVolumeClaim:
           claimName: wa-backup-snapshot-pvc
      containers:
        - name: retrieve-backup-container
          image: cp.icr.io/cp/watson-assistant/conan-tools:20210630-0901-signed@sha256:e6bee20736bd88116f8dac96d3417afdfad477af21702217f8e6321a99190278
          command: ['sh', '-c', 'echo The pod is running && sleep 360000']
          volumeMounts:
            - mountPath: "/watson_data"
              name: backup-snapshot-pvc
    EOF
    
  4. Wenn Sie den Namen der Sicherungsdatei, die Sie extrahieren möchten, nicht kennen und den neuesten Cron-Sicherungsjob nicht überprüfen können, führen Sie den folgenden Befehl aus:

    oc exec -it wa-retrieve-backup -- ls /watson_data
    
  5. Übertragen Sie die Sicherungsdateien an einen sicheren Ort:

    kubectl cp wa-retrieve-backup:/watson_data/${FILENAME} ${SECURE_LOCAL_DIRECTORY}/${FILENAME}
    
  6. Führen Sie die folgenden Befehle aus, um die Ressourcen zu bereinigen, die Sie zum Abrufen der Dateien erstellt haben:

    oc delete pod wa-retrieve-backup
    oc delete pvc wa-backup-snapshot-pvc
    oc delete volumesnapshot wa-backup-snapshot
    

PostgreSQL-Sicherung mithilfe eines Debug-Pods extrahieren

Führen Sie die folgenden Schritte aus, um die PostgreSQL-Sicherung mithilfe eines Debug-Pods zu extrahieren:

  1. Ermitteln Sie den Namen des Store-Cronjob-Pods:

    export STORE_CRONJOB_POD=`oc get pods -l component=store-cronjob --no-headers | awk 'NR==1{print $1}'`
    
  2. Zeigen Sie die Liste der verfügbaren Speichersicherungen an, um die neueste Sicherung zu identifizieren:

    oc debug ${STORE_CRONJOB_POD}
    ls /store-backups/
    

In der Liste der Speichersicherungen finden Sie die neueste Sicherung mithilfe der Zeitmarken.

  1. Während der in Schritt 2 aufgelistete Debug-Pod aktiv bleibt, legen Sie in einer separaten Terminalsitzung die Variable STORE_CRONJOB_POD so fest, dass sie dem Namen des in Schritt 1 zurückgegebenen Store-Cronjob-Pods entspricht:

    export STORE_CRONJOB_POD=`oc get pods -l component=store-cronjob --no-headers | awk 'NR==1{print $1}'`
    
  2. Exportieren und speichern Sie die STORE_DUMP_FILE Variable unter dem Namen der letzten store.dump_YYYYMMDD-TIME Datei von Step 2:

    export STORE_DUMP_FILE=store.dump_YYYYMMDD-TIME
    
  3. Kopieren Sie die store.dump_YYYYMMDD-TIME in ein Verzeichnis an einem sicheren Ort auf Ihrem System:

    `oc cp ${STORE_CRONJOB_POD}-debug:/store-backups/${STORE_DUMP_FILE} ${STORE_DUMP_FILE}`
    

    Sie müssen prüfen, ob Sie die Datei store.dump_YYYYMMDD-TIME in das richtige Verzeichnis kopiert haben, indem Sie den Befehl ls ausführen.

Datensicherung mithilfe des Skripts

Sie können keine Daten mithilfe eines Scripts in watsonx Assistant für IBM Cloud Pak® for Data 4.6.3 oder höher sichern.{ .note}

Das Script backupPG.sh stellt den Podnamen und die Berechtigungsnachweise für einen Ihrer PostgreSQL-Pods zusammen. Anschließend verwendet das Script backupPG.sh den Pod PostgreSQL, um den Befehl pg_dump auszuführen.

Führen Sie die folgenden Schritte aus, um Daten mithilfe des bereitgestellten Scripts zu sichern:

  1. Laden Sie das Skript backupPG.sh herunter.

    Gehe zu GitHub, und suchen Sie das Verzeichnis für Ihre Version, um die Datei zu finden.

    Wenn das backupPG.sh Skript nicht im Verzeichnis Ihrer Version vorhanden ist, sichern Sie Ihre Daten mit KubernetesCronJob oder Werkzeug „pg_dump“.

  2. Melden Sie sich bei dem Red Hat OpenShift-Projektnamensbereich an, in dem Sie das Produkt installiert haben.

  3. Führen Sie das Script aus:

    ./backupPG.sh --instance ${INSTANCE} > ${BACKUP_DIR}
    

    Ersetzen Sie die folgenden Werte im Befehl:

    • ${BACKUP_DIR}: Geben Sie eine Datei an, in die die heruntergeladenen Daten geschrieben werden sollen. Geben Sie unbedingt ein Sicherungsverzeichnis an, in dem die Datei gespeichert werden soll. Beispiel: /bu/backup-file-name.dump erstellt ein Sicherungsverzeichnis namens bu.
    • --instance ${INSTANCE}: Wählen Sie die zu sichernde Instanz aus.

Wenn Sie Ihre Daten lieber direkt über das Tool PostgreSQL sichern möchten, können Sie das Verfahren zur manuellen Sicherung von Daten abschließen.

Daten manuell sichern

Führen Sie die Schritte in diesem Verfahren aus, um Ihre Daten direkt mit dem Tool PostgreSQL zu sichern.

Führen Sie die folgenden Schritte aus, um Ihre Daten zu sichern:

  1. Aktiven PostgreSQL-Pod abrufen:

    Nur für Version 4.8.8, 5.1.0 und alle zukünftigen Versionen:

       oc get pods -l app=${INSTANCE}-postgres-16 -o jsonpath="{.items[0].metadata.name}"
    

    Für andere Versionen verwenden Sie:

     oc get pods -l app=${INSTANCE}-postgres -o jsonpath="{.items[0].metadata.name}"
    

    Ersetzen Sie $ {INSTANCE} durch die Instanz der Bereitstellung, die Sie sichern möchten.

  2. Führen Sie die folgenden zwei Schritte nur aus, wenn Sie Version 5.0.0 oder 4.8.5 und früher haben:

    a. Laden Sie den geheimen VCAP-Namen des Geschäfts herunter:

     oc get secrets -l component=store,app.kubernetes.io/instance=${INSTANCE} -o=custom-columns=NAME:.metadata.name | grep store-vcap
    

    b. Rufen Sie die Verbindungswerte von PostgreSQL ab. Diese Werte werden an den Befehl übergeben, den Sie im nächsten Schritt ausführen. Sie müssen jq installiert haben.

    • So rufen Sie die Datenbank ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.database'
      
    • So rufen Sie den Hostnamen ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.host'
      
    • So rufen Sie den Benutzernamen ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.username'
      
    • So rufen Sie das Kennwort ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.password'
      
  3. Führen Sie die folgenden beiden Schritte nur aus, wenn Sie die Version 4.8.6 oder 5.0.1 und höher haben:

    a. Holen Sie sich den geheimen Namen für die Verbindung zum Geschäft:

    oc get secrets -l component=store-subsystem,app.kubernetes.io/instance=${INSTANCE} -o=custom-columns=NAME:.metadata.name | grep store-datastore-connection
    

    b. Rufen Sie die Verbindungswerte von PostgreSQL ab. Diese Werte werden an den Befehl übergeben, den Sie im nächsten Schritt ausführen. Sie müssen jq installiert haben.

    • So rufen Sie die Datenbank ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.store_vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.database'
      
    • So rufen Sie den Hostnamen ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.store_vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.host'
      
    • So rufen Sie den Benutzernamen ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.store_vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.username'
      
    • So rufen Sie das Kennwort ab:

      oc get secret $VCAP_SECRET_NAME -o jsonpath="{.data.store_vcap_services}" | base64 --decode | jq --raw-output '.["user-provided"][]|.credentials|.password'
      
  4. Führen Sie den folgenden Befehl aus:

    oc exec $KEEPER_POD -- bash -c "export PGPASSWORD='$PASSWORD' && pg_dump -Fc -h $HOSTNAME -d $DATABASE -U $USERNAME" > ${BACKUP_DIR}
    

    Die folgenden Listen beschreiben die Argumente. (die Werte für einige dieser Parameter wurden im vorherigen Schritt abgerufen):

    Nur für Version 4.8.8, 5.1.0 und alle zukünftigen Versionen:

    Verwenden Sie $KEEPER_POD : Jeder PostgreSQL 16-Pod in Ihrer Instanz.

    Für andere Versionen:

    Verwenden Sie $KEEPER_POD : Einen beliebigen PostgreSQL in Ihrer Instanz.

    Für alle Versionen:

    • ${BACKUP_DIR}: Geben Sie eine Datei an, in die die heruntergeladenen Daten geschrieben werden sollen. Geben Sie unbedingt ein Sicherungsverzeichnis an, in dem die Datei gespeichert werden soll. Beispiel: /bu/backup-file-name.dump erstellt ein Sicherungsverzeichnis namens bu.
    • $DATABASE: Der Name der Geschäftsdatenbank, der aus dem geheimen VCAP-Schlüssel des Geschäfts in Schritt 3 abgerufen wurde.
    • $HOSTNAME: Der Hostname, der aus dem geheimen VCAP-Schlüssel des Geschäfts in Schritt 3 abgerufen wurde.
    • $USERNAME: Der Benutzername, der in Schritt 3 aus dem geheimen VCAP-Schlüssel des Geschäfts abgerufen wurde
    • $PASSWORD: Das Kennwort, das in Schritt 3 aus dem geheimen VCAP-Schlüssel des Geschäfts abgerufen wurde

    Führen Sie den folgenden Befehl aus, um weitere Informationen zum Befehl pg_dump anzuzeigen:

    oc exec -it ${KEEPER_POD} -- pg_dump --help
    
  5. Erstellen Sie eine Sicherungskopie des Geheimnisses, das den Verschlüsselungscode enthält. Ignorieren Sie diesen Schritt, wenn das unten erwähnte Geheimnis in dieser Version nicht verfügbar ist.

    oc get secret -l service=conversation,app=$INSTANCE-auth-encryption
    oc get secret $INSTANCE-auth-encryption -o yaml > auth-encryption-secret.yaml
    

Daten wiederherstellen

Von IBM wird ein Wiederherstellungstool mit dem Namen pgmig zur Verfügung gestellt. Das Tool stellt Ihre Datenbank-Sicherung wieder her, indem es sie zu einer von Ihnen ausgewählten Datenbank hinzufügt. Außerdem wird das Schema an das Schema der Produktversion angepasst, in der Sie die Daten wiederherstellen. Bevor das Tool die gesicherten Daten hinzufügt, entfernt es die Daten für alle Instanzen in der aktuellen Dienstbereitstellung, sodass auch alle Ersatzdaten entfernt werden.

Voraussetzungen:

Setup auth-encryption-secret, das Sie zuvor gesichert haben.

oc apply -f auth-encryption-secret.yaml
oc get secret -l service=conversation,app=$INSTANCE-auth-encryption
  1. Installieren Sie den IBM Cloud Pak for Data-Zielcluster, in dem die Daten wiederhergestellt werden sollen.

    Erstellen Sie über den Webclient für den Zielcluster eine Serviceinstanz für jede Serviceinstanz, die auf dem alten Cluster gesichert wurde. Der IBM Cloud Pak for Data-Zielcluster muss die gleiche Anzahl von Instanzen enthalten wie die Umgebung, in der die Datenbank gesichert wurde.

  2. Sichern Sie die aktuelle Datenbank, bevor sie durch die gesicherte Datenbank ersetzt wird.

    Das Tool löscht die aktuelle Datenbank, bevor die Sicherung wiederhergestellt wird. Falls es später erforderlich werden sollte, die aktuelle Datenbank wiederherzustellen, erstellen Sie zunächst unbedingt eine Sicherung der Datenbank.

  3. Wechseln Sie zu dem Sicherungsverzeichnis, das Sie im vorherigen Verfahren im Parameter ${BACKUP_DIR} angegeben haben.

  4. Führen Sie den folgenden Befehl aus, um das Tool pgmig aus dem Repository GitHub Watson Developer Cloud Community herunterzuladen.

    Aktualisieren Sie im ersten Befehl <WA_VERSION> auf die Version, die Sie wiederherstellen möchten. Aktualisieren Sie beispielsweise <WA_VERSION> auf 4.6.0, wenn Sie 4.6.0wiederherstellen möchten.

    wget https://github.com/watson-developer-cloud/community/raw/master/watson-assistant/data/<WA_VERSION>/pgmig
    chmod 755 pgmig
    
  5. Erstellen Sie die folgenden zwei Konfigurationsdateien und speichern Sie sie im selben Sicherungsverzeichnis:

  6. Rufen Sie den geheimen Schlüssel ab:

    Nur für Version 4.8.8, 5.1.0 und alle zukünftigen Versionen:

    oc get secret ${INSTANCE}-postgres-16-ca -o jsonpath='{.data.ca\.crt}' | base64 -d | tee ${BACKUP_DIR}/ca.crt | openssl x509 -noout -text
    

    Für andere Versionen:

    oc get secret ${INSTANCE}-postgres-ca -o jsonpath='{.data.ca\.crt}' | base64 -d | tee ${BACKUP_DIR}/ca.crt | openssl x509 -noout -text
    
    • Ersetzen Sie ${INSTANCE} durch den Namen der Instanz, die Sie sichern möchten.
    • Ersetzen Sie ${BACKUP_DIR} durch das Verzeichnis, in dem sich die Dateien postgres.yaml und resourceController.yaml befinden.
  7. Kopieren Sie die Dateien, die Sie in den vorherigen Schritten heruntergeladen und erstellt haben, in ein beliebiges vorhandenes Verzeichnis auf einem Pod PostgreSQL.

    a. Nur für Version 4.8.8, 5.1.0 und alle zukünftigen Versionen:

    Führen Sie den folgenden Befehl aus, um PostgreSQL-Pods zu finden:

    oc get pods | grep ${INSTANCE}-postgres-16
    

    b. Für andere Versionen:

    Führen Sie den folgenden Befehl aus, um PostgreSQL-Pods zu finden:

    oc get pods | grep ${INSTANCE}-postgres
    

    c. Sie müssen die Dateien pgmig, postgres.yaml, resourceController.yaml, ca.crt (die in Schritt 6 generierte geheime Datei) und die Datei, die Sie für Ihre heruntergeladenen Daten erstellt haben, kopieren. Führen Sie die folgenden Befehle aus, um die Dateien zu kopieren.

    Wenn Sie Daten in einem eigenständigen IBM Cloud Pak for Data-Cluster wiederherstellen möchten, ersetzen Sie in den folgenden Beispielbefehlen alle Vorkommen von oc durch kubectl.

     oc exec -it ${POSTGRES_POD} -- mkdir /controller/tmp
     oc exec -it ${POSTGRES_POD} -- mkdir /controller/tmp/bu
     oc rsync ${BACKUP_DIR}/ ${POSTGRES_POD}:/controller/tmp/bu/
    
    • Ersetzen Sie ${POSTGRES_POD} durch den Namen eines der PostgreSQL-Pods aus dem vorherigen Schritt.
  8. Stoppen Sie die Bereitstellung des Geschäfts, indem Sie die Anzahl der Replikate auf 0 reduzieren:

    oc scale deploy ibm-watson-assistant-operator -n ${OPERATOR_NS} --replicas=0
    oc get deployments -l component=store
    

    Notieren Sie sich, wie viele Replikate in der Geschäftsimplementierung vorhanden sind:

     oc scale deployment ${STORE_DEPLOYMENT} --replicas=0
    
  9. Starten Sie die Ausführung eines Fernbefehls im PostgreSQL-Pod:

    oc exec -it ${POSTGRES_POD} /bin/bash
    
  10. Führen Sie das Tool pgmig aus:

    Nur für Version 4.8.8, 5.1.0 und alle zukünftigen Versionen:

    cd /controller/tmp/bu
    export PG_CA_FILE=/controller/tmp/bu/ca.crt
    ./pgmig --resourceController resourceController.yaml --target postgres.yaml --source <backup-file-name.dump>
    export ENABLE_ICP=true
    

    Für andere Versionen:

    cd /controller/tmp/bu
    export PG_CA_FILE=/controller/tmp/bu/ca.crt
    ./pgmig --resourceController resourceController.yaml --target postgres.yaml --source <backup-file-name.dump>
    
    • Ersetzen Sie <backup-file-name.dump> durch den Namen der Datei, die Sie für Ihre heruntergeladenen Daten erstellt haben.

    Weitere Befehlsoptionen finden Sie unter PostgreSQL. Einzelheiten zum Migrationstool.

    Währen der Ausführung des Scripts werden Sie zur Eingabe von Informationen aufgefordert. Zu diesen Informationen gehört die Instanz in dem Zielcluster, in dem Sie die gesicherten Daten hinzufügen. Die Daten in der von Ihnen angegebenen Instanz werden entfernt und ersetzt. Wenn die Sicherung mehrere Instanzen enthält, werden Sie mehrmals aufgefordert, Angaben zur Zielinstanz anzugeben.

  11. Skalieren Sie den Einsatz im Geschäft wieder hoch:

    oc scale deployment ${STORE_DEPLOYMENT} --replicas=${ORIGINAL_NUMBER_OF_REPLICAS}
    oc scale deploy ibm-watson-assistant-operator -n ${OPERATOR_NS} --replicas=1
    

    Es kann einige Minuten dauern, bis die wiederhergestellten Daten auf der Weboberfläche angezeigt werden.

  12. Nach der Wiederherstellung der Daten muss das Back-End-Modell trainiert werden. Weitere Informationen zum erneuten Training Ihres Back-End-Modells finden Sie unter Back-End-Modell erneut trainieren.

Datei 'resourceController.yaml' erstellen

Die Datei resourceController.yaml enthält Details zu der neuen Umgebung, in der Sie die Sicherungsdaten hinzufügen. Fügen Sie die folgenden Informationen in der Datei hinzu:

accessTokens:
  - value
  - value2
host: localhost
port: 5000

Führen Sie die folgenden Schritte aus, um in der Datei die fehlenden erforderlichen Werte hinzuzufügen:

  1. Zum Abrufen der Werteliste für 'accessTokens' müssen Sie eine Liste der Trägertokens für die Serviceinstanzen abrufen.

    • Melden Sie sich beim IBM Cloud Pak for Data-Web-Client an.
    • Wählen Sie im Hauptnavigationsmenü des IBM Cloud Pak for Data-Web-Clients die Option Meine Instanzen aus.
    • Klicken Sie auf der Registerkarte "Bereitgestellte Instanzen " auf Ihre Instanz.
    • Suchen Sie in den Zugriffsinformationen der Instanz nach dem Bearer-Token. Kopieren Sie das Token, und fügen Sie es in die Liste 'accessTokens' ein.

    Ein Trägertoken für eine Instanz kann auf alle Instanzen zugreifen, deren Eigner der Benutzer ist. Wenn ein bestimmter Benutzer der Eigner aller Instanzen ist, ist nur ein einziges Trägertoken erforderlich.

    Wenn mehrere Instanzen des Service vorhanden sind, deren Eigner jeweils ein anderer Benutzer ist, müssen Sie die Trägertoken aller Benutzer sammeln, die Eigner einer Instanz sind. Im Abschnitt accessTokens können mehrere Trägertokenwerte aufgelistet werden.

  2. Um die Host-Informationen zu erhalten, benötigen Sie Details für den Pod, der die UI-Komponente hostet:

    oc describe pod -l component=ui
    

    Suchen Sie nach dem Abschnitt, in dem RESOURCE_CONTROLLER_URL: https://${release-name}-addon-assistant-gateway-svc.zen:5000/api/ibmcloud/resource-controller steht.

    Zu diesem Zweck können Sie beispielsweise den folgenden Befehl verwenden:

    oc describe pod -l component=ui | grep RESOURCE_CONTROLLER_URL
    

    Kopieren Sie den Host, der in RESOURCE_CONTROLLER_URL angegeben ist. Der Hostwert ist der RESOURCE_CONTROLLER_URL-Wert, der das Protokoll am Anfang und alles vom Port bis zum Ende des Werts ausschließt. Für das vorherige Beispiel lautet der Host beispielsweise ${release-name}-addon-assistant-gateway-svc.zen.

  3. Überprüfen Sie erneut den Eintrag RESOURCE_CONTROLLER_URL, um die Portinformationen abzurufen. Der Port wird nach <host>: in URL angegeben. In dieser Beispiel-URL wird der Port 5000 verwendet.

  4. Fügen Sie die abgerufenen Werte in die YAML-Datei ein und speichern Sie die Datei.

Datei 'postgres.yaml' erstellen

Die Datei postgres.yaml enthält Details zu den PostgreSQL-Pods in Ihrer Zielumgebung (die Umgebung, in der Sie die Daten wiederherstellen). Fügen Sie die folgenden Informationen in der Datei hinzu:

host: localhost
port: 5432
database: store
username: user
su_username: admin
su_password: password

Führen Sie die folgenden Schritte aus, um in der Datei die fehlenden erforderlichen Werte hinzuzufügen:

  1. Für Version 4.8.6 oder 5.0.1 und später:

    Um Informationen über host zu erhalten, müssen Sie die geheimen Store-Datastore-Verbindungszeichenfolgen erhalten.

    oc get secret ${INSTANCE}-store-datastore-connection-strings -o jsonpath='{.data.store_vcap_services}' | base64 -d
    
    

    Für Version 5.0.0 oder 4.8.5 und früher:

    Um Informationen zum host abzurufen, müssen Sie den geheimen Schlüssel für 'store-vcap' abrufen.

    oc get secret ${INSTANCE}-store-vcap -o jsonpath='{.data.vcap_services}' | base64 -d
    

    Der Befehl get liefert Informationen über die Datenbanken Redis und PostgreSQL. Suchen Sie das Segment des JSON-Codes für die Datenbank PostgreSQL mit der Bezeichnung pgservice. Sie sieht wie folgt aus:

    {
      "user-provided":[
        {
          "name": "pgservice",
          "label": "user-provided",
          "credentials":
          {
            "host": "${INSTANCE}-rw",
            "port": 5432,
            "database": "conversation_pprd_${INSTANCE}",
            "username": "${dbadmin}",
            "password": "${password}"
          }
        }
      ],
    }
    
  2. Kopieren Sie die Werte für die vom Benutzer bereitgestellten Anmeldeinformationen ( host, port, database, username und password ).

    Sie können dieselben Werte angeben, die für username und password zurückgegeben wurden wie die Werte für su_username und su_password.

    Die aktualisierte Datei sieht ungefähr wie folgt aus:

    Nur für Version 4.8.8, 5.1.0 und alle zukünftigen Versionen:

    host: wa_inst-postgres-16-rw
    port: 5432
    database: conversation_pprd_wa_inst
    username: dbadmin
    su_username: dbadmin
    su_password: mypassword
    

    Für andere Versionen:

    host: wa_inst-postgres-rw
    port: 5432
    database: conversation_pprd_wa_inst
    username: dbadmin
    su_username: dbadmin
    su_password: mypassword
    
  3. Speichern Sie die Datei postgres.yaml.

PostgreSQL details zum Migrationswerkzeug

In der folgenden Tabelle sind die Argumente aufgelistet, die vom Tool pgmig unterstützt werden:

Argumente für das Tool 'pgmig'
Argument Beschreibung
-h, --help Verwendung der Befehle
-f, --force Daten löschen, falls vorhanden, im Zielspeicher
-s, --source string Name der Sicherungsdatei
-r, --resourceController string Name der Ressourcencontrollerkonfigurationsdatei
-t, --target string Ziel PostgreSQL Server-Konfigurationsdateiname
-m, --mapping string Name der Zuordnungskonfigurationsdatei für die Serviceinstanz (optional)
--testRCConnection Testen Sie die Verbindung für Resource Controller und beenden Sie dann das Programm
--testPGConnection Testen Sie die Verbindung zum PostgreSQL-Server und beenden Sie dann das Programm
-v, --version Buildversion abrufen

Zuordnungskonfigurationsdatei

Wenn Sie das Script ausgeführt und nach entsprechender Aufforderung die Zuordnungen angegeben haben, generiert das Tool im aktuellen Verzeichnis eine Datei mit dem Namen enteredMapping.yaml. Diese Datei gibt die Zuordnung der Details des Quellenclusters zu den Details des neuen Clusters (basierend auf den interaktiven Eingaben während der Scriptausführung) an.

Die YAML-Datei enthält beispielsweise Werte wie die folgenden:

instance-mappings:
  00000000-0000-0000-0000-001570184978: 00000000-0000-0000-0000-001570194490

Dabei ist der erste Wert ( 00000000-0000-0000-0000-001570184978 ) die Instanz-ID in der Datenbank-Sicherung und der zweite Wert ( 00000000-0000-0000-0000-001570194490 ) die ID einer bereitgestellten Instanz im Dienst auf dem System.

Sie können diese Datei für nachfolgende Scriptausführungen in derselben Umgebung an das Script übergeben. Alternativ können Sie die Datei bearbeiten, um sie in anderen Sicherungs- und Wiederherstellungsoperationen zu verwenden. Die Zuordnungsdatei kann optional angegeben werden. Wenn Sie nicht angegeben wird, werden Sie vom Tool aufgefordert, entsprechende Details aus den Informationen in Ihrer YAML-Datei anzugeben.

Back-End-Modell erneut trainieren

Je nach Anzahl der Modelle im Assistenten können Sie eine der folgenden Optionen verwenden, um Ihr Back-End-Modell erneut zu trainieren:

Back-End-Modell manuell erneut trainieren

Wenn Sie einen Dialogskill nach einer Änderung in den Trainingsdaten öffnen, wird das Training automatisch eingeleitet. Warten Sie, bis der Skill anhand der wiederhergestellten Daten neu trainiert wurde. Es dauert in der Regel weniger als 10 Minuten, um trainiert zu werden. Für das Training eines Modells für maschinelles Lernen muss mindestens ein Knoten über 4 CPUs verfügen, die für das Training verwendet werden können. Aus diesem Grund sollten Sie wiederhergestellte Assistenten und Skills nur einzeln und in Zeiten mit geringem Datenverkehr öffnen. Wenn der Assistent oder Dialogskill nicht antwortet, ändern Sie den Arbeitsbereich (fügen Sie beispielsweise eine Absicht hinzu und entfernen Sie sie anschließend). Überprüfen und bestätigen.

Automatisches erneutes Trainieren des Back-End-Modells

Wenn Sie eine große Anzahl von Modellen für das erneute Training haben, können Sie den Job für das automatische erneute Training verwenden, um das Back-End-Modell zu trainieren. Weitere Informationen zum Job "auto-retrain-all" und seiner Implementierung finden Sie in den folgenden Abschnitten:

Vorbereitende Schritte

Bevor Sie mit dem Job für das automatische erneute Training beginnen, müssen Sie sicherstellen, dass die PostgreSQL-Datenbank und Cloud Object Storage (Cloud Object Storage), in der Ihre Aktions-und Dialogskills zusammen mit ihren Snapshots gespeichert werden, aktiv und nicht beschädigt sind. Außerdem müssen Sie sicherstellen, dass Ihre Assistenten während des Jobs für das automatische erneute Training keine Daten empfangen oder senden.

Planung

Um eine gute Schätzung der Dauer zu erhalten, die für die Ausführung des Jobs für das automatische erneute Training aller erforderlich ist, können Sie das Script calculate_autoretrain_all_job_duration.sh verwenden:

Nur für Version 5.1.0, 5.0.3, 4.8.8 und alle zukünftigen Versionen:

Geben Sie im folgenden Skript im Schlüssel PROJECT_CPD_INST_OPERANDS den Namespace an, in dem der Assistent installiert ist.

#!/bin/bash

calculate_duration() {
 local input_variable="$1"
 DURATION=$(("$NUM_OF_WORKSPACES_TO_TRAIN"*60 / (input_variable * 2) + "$NUM_OF_WORKSPACES_TO_TRAIN" * 2))
}

export PROJECT_CPD_INST_OPERANDS=<namespace where Assistant is installed>

ETCD_ENDPOINTS=$(oc get secret wa-cluruntime-datastore-connection-strings -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath="{.data.etcd}" | base64 --decode | jq -r '.endpoints')

NUM_OF_WORKSPACES_TO_TRAIN=$(oc exec wa-etcd-0 -n ${PROJECT_CPD_INST_OPERANDS} -- bash -c "
 password=\"\$( cat /var/run/credentials/pass.key)\"
 etcdctl_user=\"root:\$password\"
 export ETCDCTL_USER=\"\$etcdctl_user\"

 ETCDCTL_API=3 etcdctl --cert=/etc/etcdtls/operator/etcd-tls/etcd-client.crt --key=/etc/etcdtls/operator/etcd-tls/etcd-client.key --cacert=/etc/etcdtls/operator/etcd-tls/etcd-client-ca.crt --endpoints=${ETCD_ENDPOINTS} get  --prefix  /bluegoat/voyager-nlu/voyager-nlu-slot-wa/workspaces/ --keys-only | sed '/^$/d' | wc -l")

echo "Number of workspaces to train $NUM_OF_WORKSPACES_TO_TRAIN"

calculate_duration 5
DURATION_5=$DURATION

calculate_duration 10
DURATION_10=$DURATION

calculate_duration 15
DURATION_15=$DURATION

echo "Approximate duration of the auto retrain all job if you have 5 Training pods: $DURATION_5 seconds"
echo "Approximate duration of the auto retrain all job if you have 10 Training pods: $DURATION_10 seconds"
echo "Approximate duration of the auto retrain all job if you have 15 Training pods: $DURATION_15 seconds"

Für andere Versionen:

#!/bin/bash
calculate_duration() {
    local input_variable="$1"
    DURATION=$(("$NUM_OF_WORKSPACES_TO_TRAIN"*60 / (input_variable * 2) + "$NUM_OF_WORKSPACES_TO_TRAIN" * 2))
  }

export PROJECT_CPD_INST_OPERANDS=<namespace where Assistant is installed>

NUM_OF_WORKSPACES_TO_TRAIN=$(oc exec wa-etcd-0 -n ${PROJECT_CPD_INST_OPERANDS} -- bash -c '
  password="$( cat /var/run/credentials/pass.key )"
  etcdctl_user="root:$password"
  export ETCDCTL_USER="$etcdctl_user"

  ETCDCTL_API=3 etcdctl --cert=/etc/etcdtls/operator/etcd-tls/etcd-client.crt --key=/etc/etcdtls/operator/etcd-tls/etcd-client.key --cacert=/etc/etcdtls/operator/etcd-tls/etcd-client-ca.crt --endpoints=https://$(hostname).${CLUSTER_NAME}.cpd.svc.cluster.local:2379 get  --prefix  /bluegoat/voyager-nlu/voyager-nlu-slot-wa/workspaces/ --keys-only | sed '/^$/d' | wc -l')

echo "Number of workspaces to train $NUM_OF_WORKSPACES_TO_TRAIN"

calculate_duration 5
DURATION_5=$DURATION

calculate_duration 10
DURATION_10=$DURATION

calculate_duration 15
DURATION_15=$DURATION
echo "Approximate duration of the auto retrain all job if you have 5 Training pods: $DURATION_5 seconds"
echo "Approximate duration of the auto retrain all job if you have 10 Training pods: $DURATION_10 seconds"
echo "Approximate duration of the auto retrain all job if you have 15 Training pods: $DURATION_15 seconds"

Darüber hinaus können Sie das automatische erneute Training für alle Jobs beschleunigen, nachdem Sie die Schätzung der Dauer erhalten haben. Weitere Informationen zur Beschleunigung des Jobs für automatisches erneutes Training für alle finden Sie im Abschnitt Job für automatisches erneutes Training für alle beschleunigen.

Vorgehensweise

Führen Sie die folgenden Schritte aus, um Ihr Back-End-Modell mithilfe des Jobs für das automatische erneute Training erneut zu trainieren:

Umgebungsvariablen für den Job für automatisches erneutes Training einrichten

Konfigurieren Sie die folgende Umgebungsvariable, bevor Sie den Job für das automatische erneute Training ausführen:

  1. Setzen Sie die Umgebungsvariable AUTO_RETRAIN auf false, um vorhandene Jobs für automatisches erneutes Training zu inaktivieren:

      export AUTO_RETRAIN="false"
    
  2. Zum Einrichten der Umgebungsvariablen BATCH_RETRAIN_ALL_SIZE multiplizieren Sie die Anzahl der verfügbaren Trainingsreplikate ( CLU_TRAINING_REPLICAS) mit 2 auf der Basis der Annahme, dass jedes Modell ungefähr ~30 seconds benötigt, um ein Modell zu trainieren. Verwenden Sie den folgenden Befehl, um BATCH_RETRAIN_ALL_SIZE einzurichten:

      export BATCH_RETRAIN_ALL_SIZE=$(($(oc get deploy ${INSTANCE}-clu-training --template='{{index .spec.replicas}}') * 2))
    
  3. Setzen Sie WAIT_TIME_BETWEEN_BATCH_RETRAIN_IN_SECONDS_FOR_RETRAIN_ALL auf (60-${BATCH_RETRAIN_ALL_SIZE}):

      export WAIT_TIME_BETWEEN_BATCH_RETRAIN_IN_SECONDS_FOR_RETRAIN_ALL=$((60-${BATCH_RETRAIN_ALL_SIZE}))
    
  4. Setze WAIT_TIME_BETWEEN_TRAININGS_FOR_RETRAIN_ALL auf 1:

      export WAIT_TIME_BETWEEN_TRAININGS_FOR_RETRAIN_ALL=1
    
  5. Setzen Sie AUTO_RETRAIN_ALL_CRON_SCHEDULE auf die Zeit, zu der der Job für das automatische erneute Training ausgeführt werden soll:

      export AUTO_RETRAIN_ALL_CRON_SCHEDULE=<value of cron schedule>
    

    Sie können beispielsweise einen Wert wie "0 40 19 11 3 ? 2024" angeben, der das folgende Format hat:

    (Seconds) (Minutes) (Hours) (Day of Month) (Month) (Day of Week) (Year)

    Sie müssen die Zeit in UTC-Zeitzone festlegen.

  6. Setze AUTO_RETRAIN_ALL_ENABLED auf "wahr":

      export AUTO_RETRAIN_ALL_ENABLED="true"
    
Job für automatisches erneutes Training ausführen
  1. Verwenden Sie den folgenden Befehl, um den Job für das automatische erneute Training auszuführen:

        export PROJECT_CPD_INST_OPERANDS=<namespace where Assistant is installed>
        export INSTANCE=`oc get wa -n ${PROJECT_CPD_INST_OPERANDS} |grep -v NAME| awk '{print $1}'`
    
        cat <<EOF | oc apply -f -
        apiVersion: assistant.watson.ibm.com/v1
        kind: TemporaryPatch
        metadata:
          name: ${INSTANCE}-store-admin-env-vars
          namespace: ${PROJECT_CPD_INST_OPERANDS}
        spec:
          apiVersion: assistant.watson.ibm.com/v1
          kind: WatsonAssistantStore
          name: ${INSTANCE}
          patchType: patchStrategicMerge
          patch:
            store-admin:
              deployment:
                spec:
                  template:
                    spec:
                      containers:
                      - name: store-admin
                        env:
                        - name: AUTO_RETRAIN
                          value: "${AUTO_RETRAIN}"
                        - name: AUTO_RETRAIN_ALL_CRON_SCHEDULE
                          value: "${AUTO_RETRAIN_ALL_CRON_SCHEDULE}"
                        - name: AUTO_RETRAIN_ALL_ENABLED
                          value: "${AUTO_RETRAIN_ALL_ENABLED}"
                        - name: BATCH_RETRAIN_ALL_SIZE
                          value: "${BATCH_RETRAIN_ALL_SIZE}"
                        - name: WAIT_TIME_BETWEEN_BATCH_RETRAIN_IN_SECONDS_FOR_RETRAIN_ALL
                          value: "${WAIT_TIME_BETWEEN_BATCH_RETRAIN_IN_SECONDS_FOR_RETRAIN_ALL}"
                        - name: WAIT_TIME_BETWEEN_TRAININGS_FOR_RETRAIN_ALL
                          value: "${WAIT_TIME_BETWEEN_TRAININGS_FOR_RETRAIN_ALL}"
        EOF
    

Nur für Version 5.1.0, 5.0.3, 4.8.8 und alle zukünftigen Versionen:

  1. Rufen Sie den Endpunkt etcd auf, indem Sie Folgendes ausführen:

    oc get secret wa-cluruntime-datastore-connection-strings -o jsonpath="{.data.etcd}" | base64 --decode | jq -r '.endpoints
    
  2. Nachdem Sie den Job "auto-retrain-all" abgeschlossen haben, müssen Sie das Flag "auto-retrain-all" inaktivieren und das Flag "auto-retrain" aktivieren, indem Sie die folgenden Befehle verwenden:

       oc patch temporarypatch ${INSTANCE}-store-admin-env-vars -p '{"metadata":{"finalizers":[]}}' --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
       oc delete temporarypatch ${INSTANCE}-store-admin-env-vars -n ${PROJECT_CPD_INST_OPERANDS}
       oc patch watsonassistantstore/${INSTANCE} -p "{\"metadata\":{\"annotations\":{\"oppy.ibm.com/temporary-patches\":null}}}" --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
    
Job für automatisches erneutes Training validieren

Sie können den erfolgreichen Abschluss des Jobs für das automatische erneute Training aller Jobs überprüfen, indem Sie die Anzahl von Affected workspaces found mit der Anzahl von Retrained Total im Protokoll des Geschäftsverwaltungsservice vergleichen. Führen Sie den folgenden Befehl aus, um die Anzahl der Affected workspaces found und der Retrained Total abzurufen:

oc logs $(oc get pod -l component=store-admin --no-headers -n ${PROJECT_CPD_INST_OPERANDS}  |awk '{print $1}') | grep "\[RETRAIN-ALL-SUMMARY\] Affected workspaces found"

Wenn der Job für das automatische erneute Training erfolgreich ist, entspricht der Zähler Retrained Total der Anzahl von Affected workspaces found. Wenn die Differenz zwischen den Zählungen von Retrained Total und Affected workspaces found gering ist, wird der Job für automatisches erneutes Training außerdem erfolgreich abgeschlossen, indem die verbleibenden Modelle im Hintergrund trainiert werden. Wenn es jedoch einen großen Unterschied zwischen Retrained Total und Affected workspaces found gibt, müssen Sie die Protokolle des Geschäftsadministrators prüfen, um das Problem zu analysieren, und den Job für das automatische erneute Training beschleunigen in Betracht ziehen.

Job für automatisches erneutes Training beschleunigen

Die Dauer für das automatische erneute Training hängt von der Anzahl der Modelle ab, die trainiert werden sollen. Um den Trainingsprozess zu beschleunigen, müssen Sie daher scale die Anzahl CLU_TRAINING_REPLICAS und die zugehörigen Abhängigkeiten angeben. Wenn Sie beispielsweise scale die Anzahl CLU_TRAINING_REPLICAS auf x setzen, müssen scale Sie die Anzahl der abhängigen Replikate anhand der folgenden Berechnung berechnen:

  • TFMM_REPLICAS auf 0.5x
  • DRAGONFLY_CLU_MM_REPLICAS auf 0.3x
  • CLU_EMBEDDING_REPLICAS auf 0.2x
  • CLU_TRITON_SERVING_REPLICAS auf 0.2x.

Wenn das Berechnungsergebnis für die Anzahl der Modelle eine Dezimalzahl ist, müssen Sie das Ergebnis auf die nächste ganze Zahl aufrunden. Wenn die Anzahl von TFMM_REPLICAS beispielsweise 2.4ist, wird der Wert auf 3 aufrunden.

Führen Sie die folgenden Schritte aus, um scale die Anzahl der Modelle zu definieren:

  1. Registrieren Sie die Werte für die Anzahl der Replikate gemäß Ihrer Berechnung:

      export CLU_TRAINING_REPLICAS=<value from calculation>
      export TFMM_REPLICAS=<value from calculation>
      export DRAGONFLY_CLU_MM_REPLICAS=<value from calculation>
      export CLU_EMBEDDING_REPLICAS=<value from calculation>
      export CLU_TRITON_SERVING_REPLICAS=<value from calculation>
    
  2. Erhöhen Sie die Anzahl der REPLICAS mit dem folgenden Befehl:

      export PROJECT_CPD_INST_OPERANDS=<namespace where Assistant is installed>
      export INSTANCE=`oc get wa -n ${PROJECT_CPD_INST_OPERANDS} |grep -v NAME| awk '{print $1}'`
    
      cat <<EOF | oc apply -f -
      apiVersion: assistant.watson.ibm.com/v1
      kind: TemporaryPatch
      metadata:
        name: ${INSTANCE}-clu-training-replicas
        namespace: ${PROJECT_CPD_INST_OPERANDS}
      spec:
        apiVersion: assistant.watson.ibm.com/v1
        kind: WatsonAssistantCluTraining
        name: $INSTANCE
        patchType: patchStrategicMerge
        patch:
          clu-training:
            deployment:
              training:
                spec:
                  replicas: ${CLU_TRAINING_REPLICAS}
      EOF
    
      cat <<EOF | oc apply -f -
      apiVersion: assistant.watson.ibm.com/v1
      kind: TemporaryPatch
      metadata:
        name: ${INSTANCE}-clu-runtime-replicas
        namespace: ${PROJECT_CPD_INST_OPERANDS}
      spec:
        apiVersion: assistant.watson.ibm.com/v1
        kind: WatsonAssistantCluRuntime
        name: ${INSTANCE}
        patchType: patchStrategicMerge
        patch:
          tfmm:
            deployment:
              spec:
                replicas: ${TFMM_REPLICAS}
          dragonfly-clu-mm:
            deployment:
              spec:
                replicas: ${DRAGONFLY_CLU_MM_REPLICAS}
      EOF
    
      cat <<EOF | oc apply -f -
      apiVersion: assistant.watson.ibm.com/v1
      kind: TemporaryPatch
      metadata:
        name: ${INSTANCE}-clu-replicas
        namespace: ${PROJECT_CPD_INST_OPERANDS}
      spec:
        apiVersion: assistant.watson.ibm.com/v1
        kind: WatsonAssistantClu
        name: ${INSTANCE}
        patchType: patchStrategicMerge
        patch:
          clu-embedding:
            deployment:
              spec:
                replicas: ${CLU_EMBEDDING_REPLICAS}
          clu-triton-serving:
            deployment:
              spec:
                replicas: ${CLU_TRITON_SERVING_REPLICAS}
      EOF
    
  3. Nachdem Sie den Job für das automatische erneute Training abgeschlossen haben, müssen Sie die Anzahl der REPLICAS auf die ursprünglichen Nummern zurücksetzen:

     oc patch temporarypatch ${INSTANCE}-clu-training-replicas -p '{"metadata":{"finalizers":[]}}' --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
     oc patch temporarypatch ${INSTANCE}-clu-runtime-replicas -p '{"metadata":{"finalizers":[]}}' --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
     oc patch temporarypatch ${INSTANCE}-clu-replicas -p '{"metadata":{"finalizers":[]}}' --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
    
     oc delete temporarypatch ${INSTANCE}-clu-training-replicas -n ${PROJECT_CPD_INST_OPERANDS}
     oc delete temporarypatch ${INSTANCE}-clu-runtime-replicas -n ${PROJECT_CPD_INST_OPERANDS}
     oc delete temporarypatch ${INSTANCE}-clu-replicas -n ${PROJECT_CPD_INST_OPERANDS}
    
     oc patch watsonassistantclutraining/${INSTANCE} -p "{\"metadata\":{\"annotations\":{\"oppy.ibm.com/temporary-patches\":null}}}" --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
     oc patch watsonassistantcluruntime/${INSTANCE} -p "{\"metadata\":{\"annotations\":{\"oppy.ibm.com/temporary-patches\":null}}}" --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
     oc patch watsonassistantclu/${INSTANCE} -p "{\"metadata\":{\"annotations\":{\"oppy.ibm.com/temporary-patches\":null}}}" --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
     oc patch watsonassistantclutraining/${INSTANCE} -p "{\"metadata\":{\"annotations\":{\"oper8.org/temporary-patches\":null}}}" --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
     oc patch watsonassistantcluruntime/${INSTANCE} -p "{\"metadata\":{\"annotations\":{\"oper8.org/temporary-patches\":null}}}" --type=merge -n ${PROJECT_CPD_INST_OPERANDS}
     oc patch watsonassistantclu/${INSTANCE} -p "{\"metadata\":{\"annotations\":{\"oper8.org/temporary-patches\":null}}}" --type=merge -n ${PROJECT_CPD_INST_OPERANDS}