Auf dieser Seite wird beschrieben, wie Lesereplikate verwaltet werden. Diese Vorgänge umfassen das Deaktivieren und Aktivieren der Replikation, das Hochstufen eines Replikats, das Konfigurieren der parallelen Replikation und das Prüfen des Replikationsstatus.
Weitere Informationen zur Funktionsweise von Replikaten finden Sie unter Replikation in Cloud SQL.
Replikation deaktivieren
Standardmäßig beginnt ein Replikat mit aktivierter Replikation. Sie können die Replikation jedoch deaktivieren, zum Beispiel zur Fehlerbehebung oder um den Instanzstatus zu analysieren. Wenn Sie bereit sind, können Sie die Replikation ausdrücklich wieder aktivieren. Durch das Deaktivieren oder erneute Aktivieren der Replikation wird die Replikatinstanz nicht neu gestartet.
Durch das Deaktivieren der Replikation wird die Replikatinstanz nicht gestoppt. Sie wird zu einer schreibgeschützten Instanz, die sich nicht mehr von ihrer primären Instanz repliziert. Für die Instanz fallen weiterhin Kosten an. Auf dem deaktivierten Replikat können Sie die Replikation wieder aktivieren, das Replikat löschen oder es zu einer eigenständigen Instanz hochstufen.
So deaktivieren Sie die Replikation:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Wählen Sie eine Replikatinstanz, indem Sie auf den Namen klicken.
- Klicken Sie in der Schaltflächenleiste auf Replikation deaktivieren.
- Klicken Sie auf OK.
gcloud
gcloud sql instances patch REPLICA_NAME \ --no-enable-database-replication
REST Version 1
Um diesen cURL-Befehl über die Befehlszeile auszuführen, rufen Sie mit dem Befehl gcloud auth print-access-token ein Zugriffstoken ab. Sie können auch den APIs Explorer auf der Seite "Instanzen:patch" verwenden, um die REST API-Anfrage zu senden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- replica-name: der Name der Replikatinstanz
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
JSON-Text anfordern:
{ "settings": { "databaseReplicationEnabled": "False" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Um diesen cURL-Befehl über die Befehlszeile auszuführen, rufen Sie mit dem Befehl gcloud auth print-access-token ein Zugriffstoken ab. Sie können auch den APIs Explorer auf der Seite "Instanzen:patch" verwenden, um die REST API-Anfrage zu senden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- replica-name: der Name der Replikatinstanz
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
JSON-Text anfordern:
{ "settings": { "databaseReplicationEnabled": "False" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Replikation aktivieren
Wenn ein Replikat lange nicht mehr repliziert wurde, braucht es einige Zeit, um auf den aktuellen Stand der primären Instanz zu gelangen. Löschen Sie in diesem Fall das Replikat und erstellen Sie ein neues.
So aktivieren Sie die Replikation:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Wählen Sie eine Replikatinstanz, indem Sie auf den Namen klicken.
- Klicken Sie auf Replikation aktivieren.
- Klicken Sie auf OK.
gcloud
gcloud sql instances patch REPLICA_NAME \ --enable-database-replication
REST Version 1
Um diesen cURL-Befehl über die Befehlszeile auszuführen, rufen Sie mit dem Befehl gcloud auth print-access-token ein Zugriffstoken ab. Sie können auch den APIs Explorer auf der Seite "Instanzen:patch" verwenden, um die REST API-Anfrage zu senden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- replica-name: der Name der Replikatinstanz
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
JSON-Text anfordern:
{ "settings": { "databaseReplicationEnabled": "True" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
Um diesen cURL-Befehl über die Befehlszeile auszuführen, rufen Sie mit dem Befehl gcloud auth print-access-token ein Zugriffstoken ab. Sie können auch den APIs Explorer auf der Seite "Instanzen:patch" verwenden, um die REST API-Anfrage zu senden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- replica-name: der Name der Replikatinstanz
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
JSON-Text anfordern:
{ "settings": { "databaseReplicationEnabled": "True" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Replikat hochstufen
Wenn Sie ein Lesereplikat hochstufen, wird die Replikation beendet und die Instanz in eine eigenständige primäre Cloud SQL-Instanz mit Lese- und Schreibfunktionen umgewandelt.
Beim Hochstufen werden Lesereplikate automatisch mit Sicherungen konfiguriert. Sie werden jedoch nicht automatisch als Hochverfügbarkeitsinstanzen konfiguriert. Allerdings können Sie Hochverfügbarkeit nach dem Hochstufen des Replikats wie bei jeder Nicht-Replikatinstanz aktivieren. Die Konfiguration eines Lesereplikats für Hochverfügbarkeit erfolgt auf die gleiche Weise wie für eine primäre Instanz. Mehr über das Konfigurieren von Instanzen für Hochverfügbarkeit erfahren
Bevor Sie ein Lesereplikat hochstufen, sofern die primäre Instanz noch verfügbar ist und für Clients ausgeführt wird, sollten Sie Folgendes tun:
- Beenden Sie alle Schreibvorgänge an die primäre Instanz.
- Prüfen Sie den Replikationsstatus des Replikats. Folgen Sie dazu der Anleitung auf dem Tab MySQL-Client.
- Sie sollten kontrollieren, dass das Replikat die Replikation ausführt, und dann warten, bis die vom Messwert
Seconds_Behind_Master
gemeldete Replikationsverzögerung 0 ist.
Andernfalls fehlen in einer neu hochgestuften Instanz möglicherweise einige Transaktionen, für die in der Primärinstanz ein Commit durchgeführt wurde.
So stufen Sie ein Replikat zu einer eigenständigen Instanz hoch:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Wählen Sie eine Replikatinstanz, indem Sie auf den Namen klicken.
- Klicken Sie auf Replikat heraufstufen.
- Klicken Sie auf OK.
gcloud
gcloud sql instances promote-replica REPLICA_NAME
REST Version 1
Um diesen cURL-Befehl über die Befehlszeile auszuführen, rufen Sie mit dem Befehl gcloud auth print-access-token ein Zugriffstoken ab. Sie können auch den APIs Explorer auf der Seite "Instanzen:promoteReplica" verwenden, um die REST API-Anfrage zu senden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- replica-name: der Name der Replikatinstanz
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
REST v1beta4
Um diesen cURL-Befehl über die Befehlszeile auszuführen, rufen Sie mit dem Befehl gcloud auth print-access-token ein Zugriffstoken ab. Sie können auch den APIs Explorer auf der Seite "Instanzen:promoteReplica" verwenden, um die REST API-Anfrage zu senden.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- replica-name: der Name der Replikatinstanz
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Prüfen Sie, ob die hochgestufte Instanz korrekt konfiguriert ist. Insbesondere sollten Sie bei Bedarf die Instanz für Hochverfügbarkeit konfigurieren.
Parallele Replikation konfigurieren
Die Replikationsverzögerung ist wichtig für die Verwaltung der Replikationsleistung. Eine Replikationsverzögerung tritt auf, wenn die Aktualisierungen eines Lesereplikats hinter den Aktualisierungen der primären Instanz liegen. In diesem Abschnitt wird beschrieben, wie Nutzer die parallele Replikation aktivieren können, wodurch die Replikationsverzögerung reduziert werden kann.
In der MySQL-Replikation wird ein SQL-Replikations-Thread verwendet, um die Transaktionen auszuführen, die im Relay-Log auf dem Lesereplikat erfasst werden. Parallele Replikation reduziert die Replikationsverzögerung, indem die Anzahl der SQL-Threads erhöht wird, die diese Transaktionen ausführen. Lesereplikate mit aktivierter paralleler Replikation werden manchmal als Multi-Thread-Replikate bezeichnet.
Die parallele Replikation ist in den folgenden drei Szenarien in Cloud SQL for MySQL verfügbar:
Der Einfachheit halber werden auf dieser Seite die Begriffe „primäre Instanz” und „Lesereplikat” verwendet.
Grundlegende Schritte zum Ändern der Flags für die parallele Replikation
Gehen Sie so vor, um die parallele Replikation zu aktivieren:
- Deaktivieren Sie die Replikation in einem Lesereplikat.
- Legen Sie im Lesereplikat die Flags für die parallele Replikation fest. Geben Sie das Flag mit dem Befehl
gcloud
an. Die Option „Google Cloud Console“ ist deaktiviert, wenn die Replikation deaktiviert ist. - Aktivieren Sie die Replikation im Lesereplikat.
- Legen Sie optional auf der primäre Instanz die Flags fest, um die Leistung für die parallele Replikation zu optimieren.
Lesereplikate: Flags für parallele Replikation
Cloud SQL for MySQL unterstützt mehrere Flags für die parallele Replikation auf Lesereplikaten. Informationen zu den Flags erhalten Sie, wenn Sie auf die folgenden Links zur MySQL 8.0-Dokumentation klicken:
- replica_parallel_workers
- replica_parallel_type
- replica_preserve_commit_order
- replica_pending_jobs_size_max
Durch das Ändern dieser Flags wird das Lesereplikat nicht neu gestartet.
Die folgende Tabelle enthält die zulässigen Bereiche und Standardwerte für diese Flags:
Replikat-Flag lesen | Zulässige Werte | MySQL 5.7 (Standardwert) | Standardwert für MySQL 8.0 und höher |
---|---|---|---|
replica_parallel_workers |
0-1024 | 0 | 0 (MySQL 8.0.26 und früher) 4 (MySQL 8.0.27 und höher) |
replica_parallel_type |
DATABASE, LOGICAL_CLOCK |
DATABASE |
DATABASE (MySQL 8.0.26 und früher)LOGICAL_CLOCK (MySQL 8.0.27 und höher) |
replica_preserve_commit_order |
ON, OFF |
OFF |
OFF (MySQL 8.0.26 und früher)ON (MySQL 8.0.27 und höher) |
replica_pending_jobs_size_max |
1024-1GB | 16MB | 128 MB |
Das Flag replica_preserve_commit_order
verhindert Lücken in der Reihenfolge der Transaktionen, die über das Relay-Log des Replikats ausgeführt werden.
Für die Einstellung replica_preserve_commit_order=1
ist Folgendes erforderlich:
- Binäre Logs für das Replikat aktivieren (nur für MySQL 5.7, MySQL 8.0.18 und frühere Versionen)
- Setzen Sie
replica_parallel_type
aufLOGICAL_CLOCK
.
Das Flag replica_pending_jobs_size_max
legt den maximalen Arbeitsspeicher in Byte fest, der für Anwenderwarteschlangen verfügbar ist, die Ereignisse halten, die noch nicht angewendet wurden.
Primäre Instanz: Flags für parallele Replikation
Cloud SQL for MySQL unterstützt mehrere Flags zur Verwendung auf einer primären Instanz. Sie können diese Flags verwenden, um die Replikationsleistung für zugehörige Lesereplikate mit aktivierter parallelen Replikation zu optimieren. Informationen zu den Flags erhalten Sie, wenn Sie auf die folgenden Links zur MySQL 8.0-Dokumentation klicken:
- binlog_transaction_dependency_history_size
- binlog_transaction_dependency_tracking
- transaction_write_set_extraction
Durch das Ändern dieser Flags wird die primäre Instanz nicht neu gestartet.
Die folgende Tabelle enthält die zulässigen Bereiche und Standardwerte für diese Flags:
Flag der primären Instanz | Zulässige Werte | MySQL 5.7 (Standardwert) | MySQL 8.0 (Standardwert) | MySQL 8.4 (Standardwert) |
---|---|---|---|---|
binlog_transaction_dependency_history_size |
1-1000000 | 25.000 | 25.000 | 25.000 |
binlog_transaction_dependency_tracking |
COMMIT_ORDER, WRITESET, WRITESET_SESSION |
COMMIT_ORDER |
WRITESET |
– (in MySQL 8.4 eingestellt) |
transaction_write_set_extraction |
OFF, MURMUR32, XXHASH64 |
OFF |
XXHASH64 |
– (in MySQL 8.4 eingestellt) |
Wenn in MySQL 5.7 binlog_transaction_dependency_tracking
auf WRITESET
oder WRITESET_SESSION
festgelegt ist, muss transaction_write_set_extraction
auf einen Nicht-OFF
-Wert festgelegt sein (XXHASH64
oder MURMUR32
).
Replikationsstatus prüfen
Wenn Sie eine Replikatinstanz mit der Google Cloud Console aufrufen oder sich bei einem Verwaltungsclient bei der Instanz anmelden, erhalten Sie Details zur Replikation, einschließlich Status und Messwerten. Wenn Sie die gcloud CLI verwenden, erhalten Sie eine kurze Zusammenfassung der Replikationskonfiguration.
Bevor Sie den Replikationsstatus einer Cloud SQL-Replikatinstanz prüfen, rufen Sie mit dem Befehl gcloud sql instances describe
den Status der Instanz auf. Sie können so feststellen, ob die Replikation für die Replikatinstanz aktiviert ist.
Die folgenden Messwerte stehen für Replikatinstanzen zur Verfügung. (Weitere Informationen zu zusätzlichen Messwerten, die für alle Instanzen verfügbar sind, einschließlich Nicht-Replikatinstanzen.)
Messwert | Beschreibung |
---|---|
Replikationsstatus ( cloudsql.googleapis.com ) |
Gibt an, ob die Replikation aktiv Logs von der primären zur Replikatdatenbank streamt. Folgende Werte sind möglich:
Dieser Messwert gibt |
Verzögerung der Replikation ( cloudsql.googleapis.com ) |
Die Zeit, in der der Status des Replikats vom Status der primären Instanz verzögert wird. Dies ist die Differenz zwischen (1) der aktuellen Zeit und (2) dem ursprünglichen Zeitstempel, zu dem der Primärserver die Transaktion festgeschrieben hat, die derzeit auf das Replikat angewendet wird. Insbesondere können Schreibvorgänge als verzögert gezählt werden, selbst wenn sie vom Replikat empfangen wurden, wenn das Replikat den Schreibvorgang noch nicht auf die Datenbank angewendet hat. Bei kaskadierenden Replikaten wird jedes primäre Replikatpaar separat überwacht und es gibt keinen einzelnen Messwert, der die End-to-End-Verzögerung (Primär-zu-Replikat) verursacht. Dieser Messwert gibt den Wert von |
Netzwerkverzögerung ( cloudsql.googleapis.com ) |
Die Zeit in Sekunden, die vom Schreiben des binlogs in der primären Datenbank bis zum Erreichen des E/A-Threads in der Replik vergeht. Wenn "network_lag" null oder vernachlässigbar ist, aber "replica_lag" hoch ist, weist dies darauf hin, dass der SQL-Thread Replikationsänderungen nicht schnell genug anwenden kann. |
Ausführungsstatus des Slave-E/A-Threads ( cloudsql.googleapis.com ) |
Gibt an, ob der E/A-Thread zum Lesen des binären Logs der primären Instanz auf dem Replikat ausgeführt wird. Folgende Werte sind möglich:
Dieser Messwert gibt den Wert von |
Ausführungsstatus des Slave-SQL-Threads ( cloudsql.googleapis.com ) |
Gibt an, ob der SQL-Thread zum Ausführen von Ereignissen im Relay-Log auf dem Replikat ausgeführt wird. Folgende Werte sind möglich:
Dieser Messwert gibt den Wert von |
So prüfen Sie den Replikationsstatus:
Console
Cloud SQL meldet die Messwerte Replication State
und Replication Lag
im standardmäßigen Cloud SQL-Monitoring-Dashboard.
Wenn Sie andere Messwerte für regionale und regionenübergreifende Replikate und Replikate externer Server sehen möchten, erstellen Sie ein benutzerdefiniertes Dashboard und fügen Sie die Messwerte hinzu, die Sie überwachen möchten:
-
Rufen Sie in der Google Cloud Console die Seite Monitoring auf.
- Wählen Sie den Tab Dashboards aus.
- Klicken Sie auf Dashboard erstellen.
- Geben Sie einen Namen für das Dashboard ein und klicken Sie auf „OK“.
- Klicken Sie auf Diagramm hinzufügen.
- Wählen Sie als Ressourcentyp die Option Cloud SQL-Datenbank aus.
- Sie haben folgende Möglichkeiten:
- Um den Replikationsstatuswert zu beobachten, geben Sie im Feld Messwert auswählen
Replication state
ein. Fügen Sie dann einen Filter fürstate = "Running"
hinzu. Das Diagramm zeigt 1, wenn die Replikation ausgeführt wird, andernfalls 0. - Um den Replikationsmesswert zu überwachen, geben Sie im Feld Messwert auswählen
replica_lag
ein. Das Diagramm zeigt die Zeitspanne an, die der Zustand des Replikats hinter der primären Instanz zurückliegt. - So überwachen Sie den Status des E/A-Threads des Replikats: Geben Sie im Feld Messwert auswählen
Slave I/O thread running state
ein. Fügen Sie dann einen Filter mitstate = "Yes"
hinzu. Im Diagramm wird 1 angezeigt, wenn der Thread ausgeführt wird, andernfalls 0. - So beobachten Sie den Status des SQL-Threads des Replikats: Geben Sie im Feld Messwert auswählen
Slave SQL thread running state
ein. Fügen Sie dann einen Filter mitstate = "Yes"
hinzu. Im Diagramm wird 1 angezeigt, wenn der Thread ausgeführt wird, andernfalls 0.
gcloud
Prüfen Sie den Replikationsstatus einer Replikatinstanz mit:
gcloud sql instances describe REPLICA_NAME
Suchen Sie in der Ausgabe nach den Attributen databaseReplicationEnabled
und masterInstanceName
.
Prüfen Sie auf vorhandene Replikate einer primären Instanz mit:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Suchen Sie in der Ausgabe nach dem Attribut replicaNames
.
MYSQL-Client
- Stellen Sie eine Verbindung zum Replikat mit einem MySQL-Client her.
Weitere Information finden Sie unter Verbindungsoptionen für externe Anwendungen.
- Prüfen Sie den Replikatstatus:
SHOW REPLICA STATUS \G
Suchen Sie die folgenden Messwerte in den Ausgabedaten des Befehls:
Master_Host
: Der Name der primären Instanz.Slave_IO_Running
,Slave_SQL_Running
: Gibt an, ob die E/A- und SQL-Threads ausgeführt werden. Diese Threads sind dafür verantwortlich, Ereignisse vom primären in das Relay-Log des Replikats zu übertragen und diese Ereignisse aus dem Relay-Log auszuführen. Der Wert des Messwerts istYes
, wenn der Thread ausgeführt wird. Beide Threads müssen ausgeführt werden, damit die Replikation aktiv ist.Seconds_Behind_Master
: Die Zeitspanne in Sekunden, um die das Replikat bei der Verarbeitung der Transaktionen der primären Instanz sich verzögert, d. h. die Differenz zwischen (1) der aktuellen Zeit und (2) dem ursprünglichen Zeitstempel, zu dem die primäre Instanz die Transaktion festgeschrieben hat, die derzeit auf das Replikat angewendet wird. Der Wert istNULL
, wenn die Replikation fehlerhaft ist.-
Master_Log_file
,Read_Master_Log_Pos
,Relay_Master_Log_File
,Exec_Master_Log_Pos
: Diese Messwerte zeigen die Koordinaten (Dateiname und Offset) an, bis zu denen der E/A-Thread Ereignisse gelesen (Master_Log_file
undRead_Master_Log_Pos
) und bis zu denen der SQL-Thread Ereignisse ausgeführt (Relay_Master_Log_File
undExec_Master_Log_Pos
) hat. Wenn sie gleich sind (d. h.Master_Log_file
gleichRelay_Master_Log_File
undRead_Master_Log_Pos
gleichExec_Master_Log_Pos
ist), hat das Replikat alle Ereignisse verarbeitet, die es von der Primärinstanz empfangen hat.
Weitere Informationen zur Ausgabe dieses Befehls finden Sie in der MySQL-Dokumentation unter Replikationsstatus prüfen.
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. |
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:
|
Die Replikationsverzögerung steigt plötzlich stark an. | Dies wird durch lang andauernde Transaktionen verursacht. Wenn ein Commit einer Transaktion (einzelne oder mehrere Anweisungen) auf der Quellinstanz durchgeführt wird, wird die Startzeit der Transaktion im binären Log aufgezeichnet. Wenn das Replikat dieses binlog-Ereignis empfängt, vergleicht es den Zeitstempel mit dem aktuellen Zeitstempel, um die Replikationsverzögerung zu berechnen. Eine lang andauernde Transaktion in der Quelle würde daher zu einer sofortigen großen Replikationsverzögerung auf dem Replikat führen. Wenn die Menge der Zeilenänderungen in der Transaktion groß ist, würde das Replikat auch viel Zeit für die Ausführung benötigen. Während der Zeit erhöht sich die Replikationsverzögerung. Sobald das Replikat diese Transaktion abgeschlossen hat, hängt die Aufholphase von der Schreibarbeitslast auf der Quelle und der Verarbeitungsgeschwindigkeit des Replikats ab.
So vermeiden Sie lange Transaktionen z. B.:
|
Das Ändern der Flags für die parallele Replikation führt zu einem Fehler. | Für mindestens eines dieser Flags wurde ein falscher Wert festgelegt.
Legen Sie in der primären Instanz, die die Fehlermeldung anzeigt, die Flags für die parallele Replikation fest:
|
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. |
Nächste Schritte
- Informationen zur Erstellung eines Lesereplikats
- Informationen zu gespeicherten Cloud SQL-Prozeduren für Indexe für Lesereplikate
- Informationen zur Konfiguration von externen Replikaten
- Informationen zur Konfiguration von externen primären Instanzen
- Weitere Informationen über die Anforderungen und Best Practices der Replikation