Auf dieser Seite wird gezeigt, wie Sie einen verwalteten Import für Daten einrichten und anwenden, wenn Sie von einem externen Server zu Cloud SQL replizieren.
Es müssen dafür alle Schritte auf dieser Seite ausgeführt werden. Nach Abschluss können Sie die Quelldarstellungsinstanz auf die gleiche Weise verwalten und überwachen wie jede andere Cloud SQL-Instanz.
Vorbereitung
Führen Sie zuerst die folgenden Schritte aus:
Erstellen Sie die Quelldarstellungsinstanz.
Replikationseinstellungen prüfen
Prüfen Sie nach Abschluss der Einrichtung, ob das Cloud SQL-Replikat aus Daten vom externen Server erstellt werden kann.
Die folgenden Einstellungen für die externe Synchronisierung müssen korrekt sein.
- Verbindung zwischen dem Cloud SQL-Replikat und dem externen Server
- Berechtigungen für den Replikationsnutzer
- Versionskompatibilität
- Das Cloud SQL-Replikat wurde noch nicht repliziert
Öffnen Sie zum Prüfen dieser Einstellungen ein Cloud Shell-Terminal und geben Sie die folgenden Befehle ein:
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/verifyExternalSyncSettings
Beispiel
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
"syncParallelLevel": "optimal"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Diese Aufrufe geben eine Liste vom Typ sql#externalSyncSettingErrorList
zurück.
Wenn die Liste leer ist, gibt es keine Fehler. Eine Antwort ohne Fehler wird so angezeigt:
{ "kind": "sql#externalSyncSettingErrorList" }
Attribut | Beschreibung |
---|---|
SYNC_MODE | Stellen Sie sicher, dass Sie das Cloud SQL-Replikat und den externen Server nach der Einrichtung der Replikation synchron halten können. Zu den möglichen Synchronisierungsmodi gehören EXTERNAL_SYNC_MODE_UNSPECIFIED , ONLINE und OFFLINE . |
SYNC_PARALLEL_LEVEL | Prüfen Sie die Einstellung, über die die Geschwindigkeit der Übertragung von Daten aus Tabellen einer Datenbank gesteuert wird. Folgende Werte sind verfügbar:
Hinweis:Der Standardwert für diesen Parameter ist |
PROJECT_ID | Die ID Ihres Google Cloud-Projekts. |
REPLICA_INSTANCE_ID | Die ID des Cloud SQL-Replikats. |
Replikation auf dem externen Server starten
Nachdem Sie geprüft haben, ob es möglich ist, Daten vom externen Server zu replizieren, starten Sie die Replikation. Die Replikationsgeschwindigkeit beträgt für den ersten Importvorgang bis zu 500 GB pro Stunde. Diese Geschwindigkeit kann jedoch je nach Maschinenebene, Datenlaufwerkgröße, Netzwerkdurchsatz und Art der Datenbank variieren.
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"skipVerification": "SKIP_VERIFICATION",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/startExternalSync
Beispiel
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
"syncParallelLevel": "optimal"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Attribut | Beschreibung |
---|---|
SYNC_MODE | Bestätigen Sie, dass Sie das Cloud SQL-Replikat und den externen Server nach der Einrichtung der Replikation synchron halten können. |
SKIP_VERIFICATION | Gibt an, ob der integrierte Bestätigungsschritt vor der Synchronisierung der Daten übersprungen wird. Dieser Parameter wird nur empfohlen, wenn Sie Ihre Replikationseinstellungen bereits geprüft haben. |
SYNC_PARALLEL_LEVEL | Geben Sie eine Einstellung an, mit der die Geschwindigkeit der Übertragung von Daten aus Tabellen einer Datenbank gesteuert wird. Folgende Werte sind verfügbar:
Hinweis:Der Standardwert für diesen Parameter ist |
PROJECT_ID | Die ID Ihres Google Cloud-Projekts. |
REPLICA_INSTANCE_ID | Die ID des Cloud SQL-Replikats. |
Migration überwachen
Nachdem Sie die Replikation vom externen Server gestartet haben, müssen Sie die Replikation überwachen. Weitere Informationen finden Sie unter Replikation überwachen. Sie können dann die Migration abschließen.
Fehlerbehebung
Optionen zur Fehlerbehebung:
Problem | Fehlerbehebung |
---|---|
Beim Erstellen hat das Lesereplikat nicht repliziert. | Möglicherweise finden Sie in den Logdateien einen spezifischen Fehler. Prüfen Sie die Logs in Cloud Logging, um den tatsächlichen Fehler zu finden. |
Lesereplikat kann nicht erstellt werden – invalidFlagValue-Fehler | Eines der Flags in der Anfrage ist ungültig. Dies kann ein Flag sein, das Sie explizit angegeben haben, oder ein Flag, für das ein Standardwert festgelegt wurde.
Prüfen Sie als Erstes, ob der Wert des Flags Wenn das Flag |
Lesereplikat kann nicht erstellt werden – unbekannter Fehler. | Möglicherweise finden Sie in den Logdateien einen spezifischen Fehler.
Prüfen Sie die Logs in Cloud Logging, um den tatsächlichen Fehler zu finden.
Lautet der Fehler |
Laufwerk ist voll. | Das Laufwerk der primären Instanz kann während der Replikaterstellung zu voll werden. Bearbeiten Sie die primäre Instanz, um sie auf ein größeres Laufwerk zu aktualisieren. |
Der Speicherplatz wird erheblich erhöht. | Ein Slot, der nicht aktiv zum Erfassen von Daten verwendet wird, führt dazu, dass PostgreSQL unbegrenzt auf WAL-Segmente hält. Dadurch wird der Speicherplatz auf unbestimmte Zeit größer. Wenn Sie die Funktionen zur logischen Replikation und Decodierung in Cloud SQL verwenden, werden Replikationsslots automatisch erstellt und gelöscht. Nicht verwendete Replikationsslots können durch Abfrage der Systemansicht pg_replication_slots und Filterung der Spalte active erkannt werden. Nicht verwendete Slots können verworfen werden, um WAL-Segmente mit dem pg_drop_replication_slot -Befehl zu entfernen.
|
Die Replikatinstanz verwendet zu viel Arbeitsspeicher. | Das Replikat verwendet temporären Speicher zum Speichern häufig angeforderter Lesevorgänge im Cache, was dazu führen kann, dass es mehr Speicher als die primäre Instanz verwendet.
Starten Sie die Replikatinstanz neu, um den temporären Speicherplatz freizugeben. |
Replikation gestoppt. | Das maximale Speicherlimit wurde erreicht und die automatische Speichererweiterung ist nicht aktiviert.
Bearbeiten Sie die Instanz, um |
Replikationsverzögerung ist durchgehend hoch. | Die Schreiblast ist für das Replikat zu hoch. Die Replikationsverzögerung tritt auf, wenn der SQL-Thread auf einem Replikat nicht mit dem E/A-Thread Schritt halten kann. Einige Arten von Abfragen oder Arbeitslasten können vorübergehend oder dauerhaft zu einer hohen Replikationsverzögerung für ein bestimmtes Schema führen. Typische Ursachen für Replikationsverzögerungen sind:
Hier einige mögliche Lösungen:
|
Fehler beim Neuerstellen von Indexen in PostgreSQL 9.6. | Sie erhalten von PostgreSQL einen Fehler, der Sie darüber informiert, dass Sie einen bestimmten Index neu erstellen müssen. Dies kann nur auf der primären Instanz durchgeführt werden. Wenn Sie eine neue Replikatinstanz erstellen, erhalten Sie bald wieder denselben Fehler.
Hashindexe werden in PostgreSQL-Versionen unter 10 nicht an Replikate weitergegeben.
Wenn Sie Hashindexe verwenden müssen, führen Sie ein Upgrade auf PostgreSQL 10 oder höher durch. Wenn Sie allerdings ebenfalls Replikate verwenden möchten, verwenden Sie in PostgreSQL 9.6 keine Hashindexe. |
Die Abfrage auf der primären Instanz wird immer ausgeführt. | Nach dem Erstellen eines Replikats wird davon ausgegangen, dass die Abfrage SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' kontinuierlich auf Ihrer primären Instanz ausgeführt wird.
|
Die Replikaterstellung schlägt bei Zeitüberschreitung fehl. | Langlaufende Transaktionen ohne Commit auf der primären Instanz können dazu führen, dass die Lesereplikaterstellung fehlschlägt.
Erstellen Sie das Replikat neu, nachdem alle laufenden Abfragen beendet sind. |
Wenn die primäre Instanz und das Replikat unterschiedliche vCPU-Größen haben, kann es zu Problemen bei der Abfrageleistung kommen, da die Abfrageoptimierung die vCPU-Größen berücksichtigt. |
So beheben Sie das Problem:
Wenn dies eine bestimmte Abfrage ist, ändern Sie diese. Sie können beispielsweise die Reihenfolge der Joins ändern, um zu sehen, ob Sie eine bessere Leistung erzielen. |
Replikationslogs prüfen
Beim Prüfen der Replikationseinstellungen werden Logs erstellt.
So können Sie diese Logs abrufen:
Rufen Sie in der Google Cloud Console die Loganzeige auf.
- Wählen Sie aus dem Drop-down-Menü Instanz das Cloud SQL-Replikat aus.
- Wählen Sie die Logdatei
replication-setup.log
aus.
Prüfen Sie, ob Folgendes zutrifft, wenn das Cloud SQL-Replikat keine Verbindung zum externen Server herstellen kann.
- Jede Firewall auf dem externen Server ist so konfiguriert, dass Verbindungen von der ausgehenden IP-Adresse des Cloud SQL-Replikats zugelassen sind.
- Ihre SSL/TLS-Konfiguration ist korrekt.
- Nutzername, Host und Passwort des Nutzerkontos für die Replikation sind korrekt.
Nächste Schritte
- Aktualisieren einer Instanzvorlage
- Verwalten von Replikaten
- Überwachen von Instanzen
- Cloud SQL-Replikat hochstufen