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.
Verwendete Version | Version, auf die Sie ein Upgrade durchführen können |
---|---|
5.0.x | 5.1.x |
4.8.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:
- Aktualisieren von watsonx Assistant auf Version 5.1.x
- Upgrade von watsonx Assistant auf Version 5.0.x
- Upgrade von watsonx Assistant auf Version 4.8.x
- Upgrade von watsonx Assistant auf Version 4.7.xdurchführen
- Upgrade von watsonx Assistant auf Version 4.6.x
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.
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:
-
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. -
Suchen Sie nach Knoten, auf denen Portworx ausgeführt wird:
oc get pods -n kube-system -o wide -l name=portworx-api
-
Melden Sie sich als Hauptbenutzer bei einem der Knoten an, auf denen Portworx ausgeführt wird:
ssh core@<node hostname> sudo su -
-
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 Befehloc 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
-
Verbinden Sie das persistente Volume mit dem Host:
pxctl host attach $pv_name
-
Erstellen Sie einen Ordner, in dem Sie den Knoten einbinden möchten:
mkdir /var/lib/osd/mounts/voldir
-
Hängen Sie den Knoten an:
pxctl host mount $pv_name --path /var/lib/osd/mounts/voldir
-
Ä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
-
Trennen Sie das Volume vom Host:
pxctl host detach $pv_name
-
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:
-
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
-
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
-
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
-
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
-
Übertragen Sie die Sicherungsdateien an einen sicheren Ort:
kubectl cp wa-retrieve-backup:/watson_data/${FILENAME} ${SECURE_LOCAL_DIRECTORY}/${FILENAME}
-
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:
-
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}'`
-
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.
-
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}'`
-
Exportieren und speichern Sie die
STORE_DUMP_FILE
Variable unter dem Namen der letztenstore.dump_YYYYMMDD-TIME
Datei vonStep 2
:export STORE_DUMP_FILE=store.dump_YYYYMMDD-TIME
-
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 Befehlls
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:
-
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“. -
Melden Sie sich bei dem Red Hat OpenShift-Projektnamensbereich an, in dem Sie das Produkt installiert haben.
-
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 namensbu
.--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:
-
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.
-
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'
-
-
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'
-
-
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 namensbu
.$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
-
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
-
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.
-
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.
-
Wechseln Sie zu dem Sicherungsverzeichnis, das Sie im vorherigen Verfahren im Parameter
${BACKUP_DIR}
angegeben haben. -
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>
auf4.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
-
Erstellen Sie die folgenden zwei Konfigurationsdateien und speichern Sie sie im selben Sicherungsverzeichnis:
-
resourceController.yaml
: Die Datei "Resource Controller" enthält eine Liste aller bereitgestellten Instanzen. Weitere Informationen finden Sie unter Datei 'resourceController.yaml' erstellen. -
postgres.yaml
: Die Datei PostgreSQL enthält Details zu den Ziel-Pods PostgreSQL. Weitere Informationen finden Sie unter Datei 'postgres.yaml' erstellen.
-
-
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 Dateienpostgres.yaml
undresourceController.yaml
befinden.
- Ersetzen Sie
-
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
durchkubectl
.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.
- Ersetzen Sie
-
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
-
Starten Sie die Ausführung eines Fernbefehls im PostgreSQL-Pod:
oc exec -it ${POSTGRES_POD} /bin/bash
-
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.
- Ersetzen Sie
-
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.
-
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:
-
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. -
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 derRESOURCE_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
. -
Ü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 Port5000
verwendet. -
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:
-
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 Bezeichnungpgservice
. 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}" } } ], }
-
Kopieren Sie die Werte für die vom Benutzer bereitgestellten Anmeldeinformationen (
host
,port
,database
,username
undpassword
).Sie können dieselben Werte angeben, die für
username
undpassword
zurückgegeben wurden wie die Werte fürsu_username
undsu_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
-
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:
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
- Job für automatisches erneutes Training ausführen-alle
- Alle Jobs für automatisches erneutes Training validieren
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:
-
Setzen Sie die Umgebungsvariable
AUTO_RETRAIN
auffalse
, um vorhandene Jobs für automatisches erneutes Training zu inaktivieren:export AUTO_RETRAIN="false"
-
Zum Einrichten der Umgebungsvariablen
BATCH_RETRAIN_ALL_SIZE
multiplizieren Sie die Anzahl der verfügbaren Trainingsreplikate (CLU_TRAINING_REPLICAS
) mit2
auf der Basis der Annahme, dass jedes Modell ungefähr~30 seconds
benötigt, um ein Modell zu trainieren. Verwenden Sie den folgenden Befehl, umBATCH_RETRAIN_ALL_SIZE
einzurichten:export BATCH_RETRAIN_ALL_SIZE=$(($(oc get deploy ${INSTANCE}-clu-training --template='{{index .spec.replicas}}') * 2))
-
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}))
-
Setze
WAIT_TIME_BETWEEN_TRAININGS_FOR_RETRAIN_ALL
auf 1:export WAIT_TIME_BETWEEN_TRAININGS_FOR_RETRAIN_ALL=1
-
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.
-
Setze
AUTO_RETRAIN_ALL_ENABLED
auf "wahr":export AUTO_RETRAIN_ALL_ENABLED="true"
Job für automatisches erneutes Training ausführen
-
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:
-
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
-
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.5xDRAGONFLY_CLU_MM_REPLICAS
auf 0.3xCLU_EMBEDDING_REPLICAS
auf 0.2xCLU_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:
-
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>
-
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
-
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}