Auf dieser Seite wird gezeigt, wie ein Lesereplikat für eine Cloud SQL-Instanz erstellt wird.
Informationen zum Einrichten einer Cloud SQL-Instanz, die als Publisher für einen externen Abonnenten fungieren soll, finden Sie unter Externe Replikate konfigurieren.
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
Sie können pro primäre Instanz maximal acht Lesereplikate erstellen.Im Folgenden werden die Schritte zum Erstellen eines Lesereplikats dargestellt.
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Suchen Sie die Instanz, von der Sie ein Replikat erstellen möchten, und öffnen Sie dann das Menü
more actions
neben der Liste. - 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.
Ändern Sie im Bereich Instanz anpassen 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.
- 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=PRIMARY_INSTANCE_NAME
Bei Bedarf können Sie mithilfe des Parameters --tier
eine andere Ebenengröße angeben.
Mit dem Parameter --region
können Sie eine andere Region angeben.
Wenn die primäre Instanz nur eine interne IP-Adresse hat, fügen Sie dem Befehl den Parameter --no-assign-ip
hinzu.
Sie können weitere Parameter für andere Instanzeinstellungen hinzufügen: Weitere Informationen finden Sie unter gcloud sql instances create.
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.
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: Enum-Versionsstring (z. B. SQLSERVER_2017_ENTERPRISE)
- 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”
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, } }
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": "SQLSERVER_2019_STANDARD", "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": "SQLSERVER_2019_STANDARD", "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" }
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.
Hinweise
Die primäre Instanz muss ein kaskadierbares Replikat haben. Im folgenden Abschnitt werden die Schritte zum Erstellen eines kaskadierbaren Replikats beschrieben.
Schritte zum Erstellen eines kaskadierenden Replikats
Wenn Sie ein kaskadierbares Replik erstellen, müssen Sie es in einer anderen Region als der primären Instanz erstellen.
Sie konfigurieren ein kaskadierbares Replikat, indem Sie das Flag cascadable-replica
festlegen.
gcloud
Erstellen Sie das neue Replikat. Geben Sie dazu mit dem Flag --master-instance-name
die primäre Instanz und mit dem Flag --cascadable-replica
die primäre Replikatdatenbank an:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --cascadable-replica \ --region=REGION
Ersetzen Sie Folgendes:
- REPLICA_NAME ist die eindeutige ID des Replikats, das Sie erstellen.
- PRIMARY_INSTANCE_NAME: Der Name der primären Instanz.
- REGION: die Region, in der Sie das neue Replikat erstellen möchten. Diese Region muss sich von der Region der primären Instanz unterscheiden.
Sie müssen das Replikat im selben VPC-Netzwerk wie die primäre Instanz erstellen. Sie können in diesem VPC-Netzwerk auch einen Namen für den zugewiesenen IP-Bereich angeben . Wenn kein Bereich angegeben ist, wird das Replikat in einem zufällig ausgewählten Bereich erstellt.
Sie können weitere Parameter für andere Instanzeinstellungen hinzufügen: Beispiel:
- Mit dem Parameter
--tier
können Sie eine andere Maschinenebenengröße angeben. - Wenn die primäre Instanz nur eine private IP-Adresse hat, fügen Sie dem Befehl den Parameter
--no-assign-ip
hinzu.
Weitere Informationen zum Hinzufügen von Parametern für Instanzeinstellungen finden Sie unter gcloud sql instances create.
Nachdem das kaskadierbare Replikat erstellt wurde, können Sie ein kaskadierendes Replikat erstellen.
curl
- Zum Erstellen eines kaskadierbaren Replikats unter der primären Instanz bearbeiten Sie das folgende JSON-Codebeispiel und speichern es in einer Datei mit dem Namen
request.json
.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- DATABASE_VERSION: Enum-String der Datenbankversion z. B.
SQLSERVER_2017_ENTERPRISE.
. - 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-2-3840
.
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "DATABASE_VERSION" "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", "settingsVersion": 0, } "replicaConfiguration": { "cascadableReplica": true } }
- Achten Sie im Abschnitt
replicaConfiguration
darauf, dass das FeldcascadadableReplica
auftrue
festgelegt ist. - 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"
Nachdem das kaskadierbare Replikat erstellt wurde, können Sie ein kaskadierendes Replikat erstellen.
Schritte zum Erstellen eines kaskadierenden Replikats
Wenn Sie ein kaskadierendes Replikat erstellen, müssen Sie es in derselben Region wie das kaskadierbare Replikat erstellen. Sie konfigurieren ein kaskadierendes Replikat, indem Sie den Namen des kaskadierenden Replikats im Parameter–master-instance-name
angeben.
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- 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.
- Klicken Sie auf Replikat erstellen.
- Aktualisieren Sie auf der Seite Lesereplikat erstellen die Instanz-ID sowie alle anderen Konfigurationsoptionen, einschließlich Name, Region und Zone.
- Klicken Sie auf Erstellen.
Cloud SQL erstellt ein Replikat. Sie werden dann zur Instanzseite des übergeordneten Replikats zurückgeleitet.
- Führen Sie die Schritte 4 bis 6 für jedes neue kaskadierende Replikat aus, das Sie erstellen möchten.
gcloud
- Erstellen Sie das neue Replikat. Geben Sie dazu mit dem Flag
--master-instance-name
die kaskadierbare Replikatdatenbank an: - REPLICA_NAME ist die eindeutige ID des Replikats, das Sie erstellen
- CASCADABLE_REPLICA_NAME: der Name des kaskadierbaren Replikats
- 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.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=CASCADABLE_REPLICA_NAME \
curl
- Zum Erstellen eines kaskadierenden Replikats unter dem kaskadierenden Replikat bearbeiten Sie das folgende JSON-Codebeispiel und speichern es in einer Datei mit dem Namen
request.json
:{ "masterInstanceName": "CASCADABLE_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- 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 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 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
- Replikate verwalten
- Informationen zu regionsübergreifenden Replikaten