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, von der 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. Ä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.

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

Erstellen Sie das Replikat:

gcloud sql instances create REPLICA_NAME \
--master-instance-name=MASTER_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 erstellen und die Cloud SQL-Version der Instanz entweder Enterprise oder Enterprise Plus 16 oder neuer 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.

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.

Terraform

Verwenden Sie zum Erstellen eines Lesereplikats eine Terraform-Ressource.

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

  settings {
    tier              = "db-custom-2-7680"
    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
}

REST Version 1

Verwenden Sie zum Erstellen des Lesereplikats die Methode insert der Instanzressource. Die Attribute „region“ und „databaseVersion“ müssen mit denen der Masterinstanz identisch sein.

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • project-id: die Projekt-ID
  • database-version: String der Enum-Version (z. B. POSTGRES_12)
  • 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

Verwenden Sie zum Erstellen des Lesereplikats die Methode insert der Instanzressource. Die Attribute „region“ und „databaseVersion“ müssen mit denen der Masterinstanz identisch sein.

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • project-id: die Projekt-ID
  • database-version: String der Enum-Version (z. B. POSTGRES_12)
  • 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": "POSTGRES_13",
  "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": "POSTGRES_13",
  "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

Wenn Sie auf der primären Instanz das Flag cloudsql.iam_authentication aktivieren, wird es in Cloud SQL for PostgreSQL automatisch auf den Lesereplikaten aktiviert. Wenn Sie dieses Flag jedoch nicht für die primäre Instanz aktivieren, wird es von Cloud SQL for PostgreSQL auch nicht für die Lesereplikate aktiviert. Sie können die Replikate nicht für die IAM-Datenbankauthentifizierung verwenden.

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. 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.
  3. Klicken Sie auf Replikat erstellen.
  4. Aktualisieren Sie auf der Seite Lesereplikat erstellen die Instanz-ID sowie alle anderen Konfigurationsoptionen, einschließlich Name, Region und Zone.
  5. Klicken Sie auf Erstellen.

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

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

gcloud

  1. Erstellen Sie das neue Replikat. Geben Sie dazu mit dem Flag --master-instance-name die primäre Replikatdatenbank als primäre Instanz an:
  2. 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.
  3. 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. 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",
        }
    }
  2. 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.
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 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:

  • Bearbeiten Sie die Instanz, um die Größe des Replikats zu erhöhen.
  • Reduzieren Sie die Belastung der Datenbank.
  • Senden Sie Lesetraffic an das Lesereplikat.
  • Indexieren Sie die Tabellen.
  • Ermitteln und beheben Sie Probleme mit langsamen Schreibabfragen.
  • Erstellen Sie das Replikat neu.
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:

  1. Aktivieren Sie das Flag log_duration und setzen Sie den Parameter log_statement auf ddl. Dadurch erhalten Sie sowohl die Abfragen als auch die Laufzeit für die Datenbank. Je nach Arbeitslast kann dies jedoch zu Leistungsproblemen führen.
  2. Führen Sie sowohl auf der primären Instanz als auch auf dem Lesereplikat explain analyze für die Abfragen aus.
  3. Vergleichen Sie den Abfrageplan und prüfen Sie, ob Unterschiede vorliegen.

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.

Nächste Schritte