Lesereplikate erstellen

Auf dieser Seite wird gezeigt, wie ein Lesereplikat für eine Cloud SQL-Instanz erstellt wird.

Ein Lesereplikat ist eine Kopie der primären Instanz, die Änderungen der primären Instanz unter normalen Umständen nahezu in Echtzeit darstellt. Mit einem Lesereplikat können Sie die primäre Instanz von Leseanfragen oder Analysetraffic entlasten.

Darüber hinaus können Sie für die Notfallwiederherstellung eine regionale Migration ausführen. Wenn ein Replikat ein regionenübergreifendes Replikat ist, ist es möglich, einen Failover in eine andere Region durchzuführen. Insbesondere können Sie ein Replikat zu einer eigenständigen Instanz hochstufen, sodass vorhandene Replikate diese Instanz nicht als primär betrachten.

Weitere Informationen zur Funktionsweise von Replikaten finden Sie unter Replikation in Cloud SQL.

Hinweis

Achten Sie beim Erstellen des ersten Replikats für diese Instanz darauf, dass die Instanz die Anforderungen für primäre Instanzen erfüllt. Weitere Informationen

Lesereplikat erstellen

Im Folgenden werden die Schritte zum Erstellen eines Lesereplikats dargestellt.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Suchen Sie die Instanz, für die Sie ein Replikat erstellen möchten, und öffnen Sie dann das Menü more actions neben der Liste.
  3. Wählen Sie Lesereplikat erstellen aus.

    Wenn Sie diese Option nicht sehen, handelt es sich bei der Instanz um ein Replikat; Sie können kein Replikat eines Replikats erstellen.

  4. Wenn für die Instanz Sicherungen und binäres Logging aktiviert sind, fahren Sie mit dem nächsten Schritt fort. Andernfalls wählen Sie Automatische Sicherungen und Enable binary logging. Klicken Sie auf Weiter und dann auf Speichern und neu starten, um die Instanz neu zu starten.

    Durch die Aktivierung der Binärprotokollierung wird die Instanz neu gestartet.

  5. Ändern Sie im Bereich Instanz anpassen der Seite die Einstellungen für Ihr Replikat. Klicken Sie zuerst auf KONFIGURATIONSOPTIONEN EINBLENDEN, um die Gruppe der Einstellungen aufzurufen. Maximieren Sie dann die gewünschten Gruppen, um die Einstellungen zu prüfen und anzupassen. Rechts sehen Sie eine Zusammenfassung aller Optionen, die Sie auswählen. Das Anpassen dieser Einstellungen ist optional. Standardwerte werden immer zugewiesen, wenn keine Anpassungen vorgenommen werden.

    Weitere Informationen zu den einzelnen Einstellungen finden Sie auf der Seite zu den Instanzeinstellungen.

    Wenn Sie beispielsweise anderen Google Cloud-Diensten wie BigQuery Zugriff auf Daten in Cloud SQL gewähren und diese Daten über eine interne Verbindung abfragen möchten, maximieren Sie die Gruppe Verbindungen und deaktivieren Sie dann das Kästchen Öffentliche IP-Adressen.

  6. Klicken Sie auf Replikat erstellen.

    Cloud SQL erstellt bei Bedarf eine Sicherung und das Replikat. Sie werden dann zur Instanzseite der primären Instanz zurückgeleitet.

gcloud

  1. Prüfen Sie den Status der primären Instanz:
    gcloud sql instances describe PRIMARY_INSTANCE_NAME
          

    Wenn das Attribut databaseReplicationEnabled den Wert true hat, ist die Instanz ein Replikat. Sie können kein Replikat eines Replikats erstellen.

  2. Wenn das Attribut enabled unter backupConfiguration den Wert false hat, aktivieren Sie jetzt die Sicherungen für die primäre Instanz:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time=>HH:MM
          
    Der Parameter backup-start-time wird im 24-Stunden-Format in der Zeitzone UTC±00 festgelegt und definiert den Beginn eines vierstündigen Sicherungszeitraums. Die Sicherungen können zu einer beliebigen Zeit innerhalb dieses Sicherungszeitraums gestartet werden.
  3. Wenn das Attribut binaryLogEnabled den Wert false hat, aktivieren Sie binäre Logs auf der primären Instanz:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    Durch Aktivierung der binären Logs wird die Instanz neu gestartet.
  4. Erstellen Sie das Replikat:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    Bei Bedarf können Sie mithilfe des Parameters --tier eine andere Ebenengröße angeben. Wenn Sie ein Replikat aus einer primären Instanz für MySQL 8.4 oder höher erstellen und die Cloud SQL-Version der Instanz entweder Enterprise oder Enterprise Plus ist, müssen Sie keinen Wert für diesen Parameter angeben. Dem Replikat wird der Maschinentyp der primären Instanz zugewiesen.

    Mit dem Parameter --region können Sie eine andere Region angeben.

    Sie können weitere Parameter für andere Instanzeinstellungen hinzufügen: Weitere Informationen finden Sie unter gcloud sql instances create.

    Wenn die primäre Instanz nur eine interne IP-Adresse hat und Sie anderen Google Cloud-Diensten wie BigQuery Zugriff auf Daten in Cloud SQL gewähren und Abfragen für diese Daten über eine interne Verbindung ausführen möchten, dann fügen Sie dem Befehl den Parameter --enable-google-private-path hinzu.

    Sie müssen das Replikat im selben VPC-Netzwerk wie die primäre Instanz erstellen. Sie können in diesem VPC-Netzwerk auch allocated-ip-range-name angeben. Wenn kein Bereich angegeben ist, wird das Replikat in einem zufällig ausgewählten Bereich erstellt.

  • Binäres Logging wird für Lesereplikatinstanzen unterstützt (nur MySQL 5.7 und höher). Wird auf Legacy-HA-Failover-Replikaten nicht unterstützt.) Aktivieren Sie binäres Logging in einem Replikat mit demselben gcloud CLI-Befehl. Verwenden Sie dabei den Instanznamen des Replikats anstelle des Instanznamens der primären Instanz.
    gcloud sql instances patch REPLICA_INSTANCE_NAME \
    --enable-bin-log
        

    Die Langlebigkeit des binären Loggings im Replikat (aber nicht auf der primären Instanz) kann mit dem Flag sync_binlog festgelegt werden. Damit wird gesteuert, wie oft der MySQL-Server das binäre Log mit dem Laufwerk synchronisiert.

    Sicherungen können nicht auf Replikatinstanzen aktiviert werden. Binäres Logging kann jedoch im Gegensatz zur primären Instanz auch dann für ein Replikat aktiviert werden, wenn Sicherungen deaktiviert sind.

    Die binlog-Aufbewahrungsdauer für Replikatinstanzen wird automatisch auf einen Tag eingestellt, im Gegensatz zu sieben Tagen bei primären Instanzen.

Terraform

Verwenden Sie zum Erstellen eines Lesereplikats die Terraform-Ressource.

resource "google_sql_database_instance" "read_replica" {
  name                 = "mysql-replica-instance-name"
  master_instance_name = google_sql_database_instance.primary.name
  region               = "europe-west4"
  database_version     = "MYSQL_8_0"

  replica_configuration {
    failover_target = false
  }

  settings {
    tier              = "db-n1-standard-2"
    availability_type = "ZONAL"
    disk_size         = "100"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Änderungen anwenden

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.

    Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.

Verzeichnis vorbereiten

Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).

  1. Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung .tf haben, z. B. main.tf. In dieser Anleitung wird die Datei als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.

    Kopieren Sie den Beispielcode in das neu erstellte main.tf.

    Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
    terraform init

    Fügen Sie optional die Option -upgrade ein, um die neueste Google-Anbieterversion zu verwenden:

    terraform init -upgrade

Änderungen anwenden

  1. Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
    terraform plan

    Korrigieren Sie die Konfiguration nach Bedarf.

  2. Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply

    Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.

  3. Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.

Änderungen löschen

So löschen Sie das Projekt:

  1. Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument deletion_protection auf false.
    deletion_protection =  "false"
  2. Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply
  1. Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und yes an der Eingabeaufforderung eingeben:

    terraform destroy

REST Version 1

  1. Aktuelle Sicherungskonfiguration abrufen

    Mit der Methode get der Instanzressource rufen Sie die Datenbankversion und die aktuelle Sicherungskonfiguration für die primäre Instanz ab.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • primary-instance-name: Der Name der primären Instanz

    HTTP-Methode und URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/primary-instance-name

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

  2. Festlegung der Replikationsfelder prüfen

    Wenn entweder enabled oder pointInTimeEnabled den Wert false hat, verwenden Sie die Methode patch der Instanzressource, um beide Parameter zu aktivieren. Legen Sie in der Anfrage die Attribute der Sicherungskonfiguration fest, die Sie ändern möchten.

    Setzen Sie zum Aktivieren von Sicherungen enabled auf true und startTime auf eine Tageszeit im Format HH:MM. Der Parameter startTime wird im 24-Stunden-Format in der Zeitzone UTC±00 festgelegt und definiert den Beginn eines vierstündigen Sicherungszeitraums. Die Sicherungen können zu einem beliebigen Zeitpunkt innerhalb dieses Sicherungszeitraums gestartet werden.

    Wenn Sie die Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren möchten, legen Sie für pointInTimeEnabled den Wert true fest.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
    • INSTANCE_NAME: der Name der primären Instanz oder der Lesereplikatinstanz, die Sie für Hochverfügbarkeit konfigurieren
    • START_TIME: die Uhrzeit (in Stunden und Minuten)

    HTTP-Methode und URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    JSON-Text anfordern:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  3. Lesereplikat erstellen

    Mit der Methode insert der Instanzressource erstellen Sie das Lesereplikat. Das Attribut databaseVersion muss mit der primären Instanz übereinstimmen. Wenn die primäre Instanz eine interne IP-Adresse verwendet, können Sie einen allocatedIpRange so angeben wie beim Erstellen einer primären Instanz. Wenn kein Bereich angegeben ist, wird das Replikat in einem zufällig ausgewählten Bereich erstellt. Legen Sie für ein regionenübergreifendes Lesereplikat eine andere Region als die Region der primären Instanz fest.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • database-version: String der Enum-Version (z. B. MYSQL_8_0)
    • primary-instance-name: Der Name der primären Instanz
    • primary-instance-region: Die Region der primären Instanz
    • replica-region: Die Region der Replikatinstanz
    • replica-name: der Name der Replikatinstanz
    • machine-type: Enum-String des Maschinentyps Beispiel: „db-custom-1-3840”
    • private-network: Das autorisierte Netzwerk, das Sie hinzufügen oder auswählen, um eine private Verbindung zu erstellen.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

    JSON-Text anfordern:

    {
      "masterInstanceName": "primary-instance-name",
      "project": "project-id",
      "databaseVersion": "database-version",
      "name": "replica-name",
      "region": "replica-region",
      "settings":
      {
        "tier": "machine-type",
        "settingsVersion": 0,
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

REST v1beta4

  1. Aktuelle Sicherungskonfiguration abrufen

    Mit der get-Methode der Instanzressource rufen Sie die Datenbankversion und die aktuelle Sicherungskonfiguration für den Master ab.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • primary-instance-name: Der Name der primären Instanz

    HTTP-Methode und URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/primary-instance-name

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

  2. Festlegung der Replikationsfelder prüfen

    Wenn entweder enabled oder binaryLogEnabled auf der primären Instanz den Wert false hat, verwenden Sie die patch-Methode der Instanzressource, um beide auszuwählen. Geben Sie in der Anfrage alle Attribute der Sicherungskonfiguration an, die Sie ändern möchten.

    Geben Sie zum Aktivieren von Sicherungen für enabled den Wert true und für startTime eine Tageszeit im Format HH:MM an. Der Parameter startTime wird im 24-Stunden-Format in der Zeitzone UTC±00 festgelegt und definiert den Beginn eines vierstündigen Sicherungszeitraums. Die Sicherungen können zu einem beliebigen Zeitpunkt innerhalb dieses Sicherungszeitraums gestartet werden.

    Wenn Sie die Wiederherstellung zu einem bestimmten Zeitpunkt aktivieren möchten, legen Sie für binaryLogEnabled den Wert true auf der primären Instanz fest.

    Binäres Logging wird für Lesereplikatinstanzen unterstützt (nur MySQL 5.7 und höher). Aktivieren Sie binäres Logging in einem Replikat mit derselben API. Verwenden Sie dabei die Instanz-ID des Replikats anstelle der Instanz-ID der primären Instanz.

    Die Langlebigkeit des binären Loggings im Replikat (aber nicht auf der primären Instanz) kann mit dem Flag sync_binlog festgelegt werden. Damit wird gesteuert, wie oft der MySQL-Server das binäre Log mit dem Laufwerk synchronisiert.

    Sicherungen können nicht auf Replikatinstanzen aktiviert werden. Binäres Logging kann jedoch im Gegensatz zur primären Instanz auch dann für ein Replikat aktiviert werden, wenn Sicherungen deaktiviert sind.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
    • INSTANCE_NAME: der Name der primären Instanz oder der Lesereplikatinstanz, die Sie für Hochverfügbarkeit konfigurieren
    • START_TIME: die Uhrzeit (in Stunden und Minuten)

    HTTP-Methode und URL:

    PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    JSON-Text anfordern:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  3. Lesereplikat erstellen

    Mit der Methode insert der Instanzressource erstellen Sie das Lesereplikat. Das Attribut databaseVersion muss mit der primären Instanz übereinstimmen. Wenn die primäre Instanz eine interne IP-Adresse verwendet, können Sie einen allocatedIpRange so angeben wie beim Erstellen einer primären Instanz. Legen Sie für ein regionenübergreifendes Lesereplikat eine andere Region als die Region der primären Instanz fest.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • database-version: String der Enum-Version (z. B. MYSQL_8_0)
    • primary-instance-name: Der Name der primären Instanz
    • primary-instance-region: Die Region der primären Instanz
    • replica-region: Die Region der Replikatinstanz
    • replica-name: der Name der Replikatinstanz
    • machine-type: Enum-String des Maschinentyps Beispiel: „db-custom-1-3840”
    • private-network: Das autorisierte Netzwerk, das Sie hinzufügen oder auswählen, um eine private Verbindung zu erstellen.

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

    JSON-Text anfordern:

    {
      "masterInstanceName": "primary-instance-name",
      "project": "project-id",
      "databaseVersion": "database-version",
      "name": "replica-name",
      "region": "replica-region",
      "settings":
      {
        "tier": "machine-type",
        "settingsVersion": 0,
        
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
        
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

Lesereplikat einer Instanz mit aktiviertem Private Service Connect erstellen

Wenn Sie ein Lesereplikat einer Instanz mit aktiviertem Private Service Connect erstellen möchten, verwenden Sie gcloud CLI oder die API. Sie können dieses Replikat entweder in derselben Region oder in einer anderen Region als die primäre Instanz (regionenübergreifendes Lesereplikat) erstellen.

Das Lesereplikat kann nicht aus einer Instanz mit einem anderen Verbindungstyp repliziert werden. Beispielsweise kann eine Instanz mit aktiviertem Private Service Connect nur aus einer anderen Private Service Connect-Instanz repliziert werden. Außerdem kann kein Replikat von einer Instanz aus einer Instanz erstellt werden, die externe IP-Verbindungen unterstützt, oder von einer Instanz, die mit Zugriff auf private Dienste konfiguriert ist.

gcloud

Verwenden Sie den Befehl gcloud sql instances create, um eine Lesereplik einer Instanz zu erstellen:

gcloud sql instances create REPLICA_INSTANCE_NAME \
--master-instance-name=PRIMARY_INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip

Ersetzen Sie die folgenden Werte:

  • REPLICA_INSTANCE_NAME: der Name der Replikatinstanz
  • PRIMARY_INSTANCE_NAME: Der Name der primären Instanz.
  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält.
  • REGION_NAME: der Name der Region für die Replikatinstanz.
  • ALLOWED_PROJECTS: eine Liste zulässiger Projekt-IDs oder -Nummern, durch Kommas getrennt. Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie es nicht verwenden, um eine Instanz zu erstellen und Private Service Connect dafür zu aktivieren.

    Cloud SQL kopiert die zulässigen Projekte für die primäre Instanz nicht in das Replikat. Für jedes Replikat müssen Sie einen Private Service Connect-Endpunkt erstellen. Wenn Sie den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors verwenden, müssen Sie eine DNS-Zone und einen DNS-Eintrag für die Replikate erstellen.

  • AVAILABILITY_TYPE: Hochverfügbarkeit für die Instanz aktivieren. Geben Sie für diesen Parameter einen der folgenden Werte an:
    • REGIONAL: Hochverfügbarkeit aktivieren und für Instanzen in der Produktionsumgebung empfohlen Die Instanz führt ein Failover auf eine andere Zone in der ausgewählten Region durch.
    • ZONAL: keine Failover-Funktion bereitstellen Dies ist der Standardwert.

    Weitere Informationen zum Festlegen und Entfernen von Hochverfügbarkeit für Instanzen finden Sie unter Bestehende Instanz für Hochverfügbarkeit konfigurieren und Hochverfügbarkeit für eine Instanz deaktivieren.

REST Version 1

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PRIMARY_INSTANCE_NAME: Der Name der primären Instanz.
  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält.
  • REPLICA_INSTANCE_NAME: der Name der Replikatinstanz
  • REGION_NAME: der Name der Region für die Replikatinstanz.
  • MACHINE_TYPE: der gewünschte Maschinentyp für die Instanz.
  • AVAILABILITY_TYPE: Hochverfügbarkeit für die Instanz aktivieren. Geben Sie für diesen Parameter einen der folgenden Werte an:
    • REGIONAL: Hochverfügbarkeit aktivieren und für Instanzen in der Produktionsumgebung empfohlen Die Instanz führt ein Failover auf eine andere Zone in der ausgewählten Region durch.
    • ZONAL: keine Failover-Funktion bereitstellen Dies ist der Standardwert.

    Weitere Informationen zum Festlegen und Entfernen von Hochverfügbarkeit für Instanzen finden Sie unter Bestehende Instanz für Hochverfügbarkeit konfigurieren und Hochverfügbarkeit für eine Instanz deaktivieren.

  • ALLOWED_PROJECTS: eine Liste zulässiger Projekt-IDs oder -Nummern, durch Kommas getrennt. Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie es nicht verwenden, um eine Instanz zu erstellen und Private Service Connect dafür zu aktivieren.

    Cloud SQL kopiert die zulässigen Projekte für die primäre Instanz nicht in das Replikat. Für jedes Replikat müssen Sie einen Private Service Connect-Endpunkt erstellen. Wenn Sie den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors verwenden, müssen Sie eine DNS-Zone und einen DNS-Eintrag für die Replikate erstellen.

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

JSON-Text anfordern:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PRIMARY_INSTANCE_NAME: Der Name der primären Instanz.
  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält.
  • REPLICA_INSTANCE_NAME: der Name der Replikatinstanz
  • REGION_NAME: der Name der Region für die Replikatinstanz.
  • MACHINE_TYPE: der gewünschte Maschinentyp für die Instanz.
  • AVAILABILITY_TYPE: Hochverfügbarkeit für die Instanz aktivieren. Geben Sie für diesen Parameter einen der folgenden Werte an:
    • REGIONAL: Hochverfügbarkeit aktivieren und für Instanzen in der Produktionsumgebung empfohlen Die Instanz führt ein Failover auf eine andere Zone in der ausgewählten Region durch.
    • ZONAL: keine Failover-Funktion bereitstellen Dies ist der Standardwert.

    Weitere Informationen zum Festlegen und Entfernen von Hochverfügbarkeit für Instanzen finden Sie unter Bestehende Instanz für Hochverfügbarkeit konfigurieren und Hochverfügbarkeit für eine Instanz deaktivieren.

  • ALLOWED_PROJECTS: eine Liste zulässiger Projekt-IDs oder -Nummern, durch Kommas getrennt. Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie es nicht verwenden, um eine Instanz zu erstellen und Private Service Connect dafür zu aktivieren.

    Cloud SQL kopiert die zulässigen Projekte für die primäre Instanz nicht in das Replikat. Für jedes Replikat müssen Sie einen Private Service Connect-Endpunkt erstellen. Wenn Sie den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors verwenden, müssen Sie eine DNS-Zone und einen DNS-Eintrag für die Replikate erstellen.

HTTP-Methode und URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

JSON-Text anfordern:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],  
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Lesereplikate für die IAM-Datenbankauthentifizierung konfigurieren

Bei Lesereplikaten ist das Flag cloudsql_iam_authentication nicht automatisch aktiviert, wenn es auf der primären Instanz aktiviert wird.

So konfigurieren Sie ein Lesereplikat für die Authentifizierung einer IAM-Datenbank:

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
  3. Suchen Sie in der Konfigurationskachel nach dem Flag cloudsql_iam_authentication. Wenn das Flag nicht in der Liste enthalten ist, ist es nicht nötig, das Flag im Lesereplikat zu aktivieren. Befindet sich das Flag in der Liste, müssen Sie das Flag für das Lesereplikat aktivieren. Wenn Sie das Flag für das Lesereplikat aktivieren müssen, fahren Sie mit dem nächsten Schritt fort.
  4. Wählen Sie im SQL-Navigationsmenü die Option Replikate aus.
  5. Klicken Sie auf den Namen des Replikats, das Sie bearbeiten möchten.
  6. Klicken Sie auf Bearbeiten.
  7. Maximieren Sie im Bereich Konfigurationsoptionen den Eintrag Flags.
  8. Wählen Sie + Hinzufügen aus.
  9. Geben Sie als Flag-Namen cloudsql_iam_authentication ein. Achten Sie darauf, dass für dieses Flag An ausgewählt ist.
  10. Klicken Sie auf Speichern.

Kaskadierende Replikate erstellen

In diesem Abschnitt wird beschrieben, wie Sie kaskadierende Replikate erstellen und verwalten.

Informationen zur Funktionsweise von kaskadierenden Replikaten finden Sie unter kaskadierende Replikate.

Schritte zum Erstellen eines kaskadierenden Replikats

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Aktivieren Sie für MySQL 5.7 oder höher die Replikation.
  3. Klicken Sie auf den Tab Replikate für das Replikat, das als übergeordnetes Element für das Replikat fungieren soll, das Sie erstellen möchten.
  4. Klicken Sie auf Replikat erstellen.
  5. Aktualisieren Sie auf der Seite Lesereplikat erstellen die Instanz-ID sowie alle anderen Konfigurationsoptionen, einschließlich Name, Region und Zone.
  6. Klicken Sie auf Erstellen.

    Cloud SQL erstellt ein Replikat. Sie werden dann zur Instanzseite des übergeordneten Replikats zurückgeleitet.

  7. Führen Sie die Schritte 4 bis 6 für jedes neue kaskadierende Replikat aus, das Sie erstellen möchten.

gcloud

  1. Wenn Sie MySQL Version 5.7 oder höher verwenden, aktivieren Sie binlogs für das primäre Replikat des neuen Replikats:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Ersetzen Sie PARENT_REPLICA_NAME durch den Namen des übergeordneten Replikats.
  2. Erstellen Sie das neue Replikat. Geben Sie dazu mit dem Flag --master-instance-name die primäre Replikatdatenbank als primäre Instanz an:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Ersetzen Sie Folgendes:
    • REPLICA_NAME ist die eindeutige ID des Replikats, das Sie erstellen
    • PARENT_REPLICA_NAME: der Name des übergeordneten Replikats.
  4. Nachdem Sie das kaskadierende Replikat erstellt haben, können Sie sehen, dass die an der primären Instanz vorgenommenen Änderungen für alle Replikate in der Kette der kaskadierenden Replikate übernommen werden.

curl

  1. Wenn Sie MySQL Version 5.7 oder höher verwenden, aktivieren Sie binäres Logging:

    Speichern Sie zum Aktivieren des binären Loggings den folgenden JSON-Code in einer Datei mit dem Namen „request.JSON“ und rufen Sie dann den curl-Befehl auf, um binäres Logging zu aktivieren.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. Zum Erstellen eines Replikats unter dem übergeordneten Replikat bearbeiten Sie das folgende JSON-Codebeispiel und speichern es in einer Datei mit dem Namen request.json:
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Führen Sie dazu diesen Befehl aus:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

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 max_connections größer oder gleich dem Wert auf der primären Instanz ist.

Wenn das Flag max_connections korrekt festgelegt ist, prüfen Sie die Logs in Cloud Logging, um den tatsächlichen Fehler zu finden.

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 set Service Networking service account as servicenetworking.serviceAgent role on consumer project, deaktivieren Sie die Service Networking API und aktivieren Sie sie dann wieder. Dadurch wird das Dienstkonto erstellt, das erforderlich ist, um den Prozess fortzusetzen.

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 automatic storage increase zu aktivieren.

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:
  • Langsame Abfragen des Replikats. Suchen Sie diese und korrigieren Sie sie.
  • Alle Tabellen müssen einen eindeutigen Schlüssel/Primärschlüssel haben. Jede Aktualisierung einer solchen Tabelle ohne eindeutigen bzw. Primärschlüssel führt zu vollständigen Tabellenscans auf dem Replikat.
  • Abfragen wie DELETE ... WHERE field < 50000000 führen bei der zeilenbasierten Replikation zu einer Replikationsverzögerung, da sich eine große Anzahl von Aktualisierungen auf dem Replikat ansammelt.

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.:

  • Teilen Sie die Transaktion in mehrere kleine Transaktionen auf
  • Teilen Sie eine einzelne große Schreibabfrage in kleinere Batches auf
  • Versuchen Sie, lange SELECT-Abfragen von einer mit DML-Daten gemischten Transaktion zu trennen
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:

  1. Ändern Sie die Flags binlog_transaction_dependency_tracking und transaction_write_set_extraction:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Fügen Sie das Flag slave_pending_jobs_size_max hinzu:

    slave_pending_jobs_size_max=33554432

  3. Ändern Sie das Flag transaction_write_set_extraction:

    transaction_write_set_extraction=XXHASH64

  4. Ändern Sie das Flag binlog_transaction_dependency_tracking:

    binlog_transaction_dependency_tracking=WRITESET

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