Auf dieser Seite wird beschrieben, wie Sie Ihren externen Server für die Replikation in Cloud SQL konfigurieren, eine Quelldarstellungsinstanz in Cloud SQL erstellen und die Daten in Cloud SQL replizieren. Sie müssen alle Schritte auf dieser Seite ausführen, bevor Sie mit den Replikationsschritten fortfahren.
Eine Alternative zu den auf dieser Seite beschriebenen Schritten ist der Database Migration Service. Dieser ermöglicht eine kontinuierliche Replikation oder eine einmalige Datenbankmigration von einem externen Server zu Cloud SQL.
Hinweis
Terminologie
Externer Server. Der MySQL-Server außerhalb von Cloud SQL, von dem Sie Daten replizieren möchten. Er wird auch als Quelldatenbank oder externer Datenbankserver bezeichnet. Dies kann eine andere Cloud SQL-Instanz oder ein anderer Datenbankserver sein, z. B. der lokale Amazon Relational Database Service (RDS) usw.
Quelldarstellungsinstanz. Die Simulation einer Cloud SQL-Instanz, die den externen Server für das Cloud SQL-Replikat darstellt. Sie ist in der Google Cloud Console sichtbar und sieht wie eine normale Cloud SQL-Instanz aus. Sie enthält jedoch keine Daten, erfordert keine Konfiguration oder Wartung und wirkt sich nicht auf die Abrechnung aus.
Cloud SQL-Replikat. Cloud SQL-Instanz, die vom externen Server repliziert wird. Sie wird auch als externes primäres Lesereplikat bezeichnet.
Nutzerkonto für die Replikation. Das MySQL-Nutzerkonto auf dem externen Server mit den erforderlichen Berechtigungen, um die Replikation zwischen dem externen Server und dem Cloud SQL-Replikat auszuführen.
Verwalteter Import. Vorgang, bei dem Daten direkt vom externen Server in das Cloud SQL-Replikat importiert werden. In diesem Fall stellt Cloud SQL über das Nutzerkonto für die Replikation eine Verbindung zum externen Server her und führt den Datendump direkt auf dem externen Server aus, um Daten in das Cloud SQL-Replikat zu importieren.
Google Cloud-Projekt einrichten
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Cloud SQL Admin API.
-
Sie benötigen für Ihr Nutzerkonto die Rollen „Cloud SQL-Administrator“, „Storage-Administrator“ und „Compute-Betrachter“.
Google Cloud SDK installieren
Zum Konfigurieren der Replikation installieren Sie das Google Cloud SDK für Ihren externen Server. Sie können das SDK auf Ihrem externen Server installieren, sofern es nicht bereits an einem anderen Speicherort installiert ist.
Externen Server für die Replikation einrichten
Checkliste für externen Server
MySQL 5.5, 5.6, 5.7 oder 8.0 muss auf Ihrem externen Server installiert sein. MySQL Community Edition, Cloud SQL for MySQL, Amazon Aurora und MySQL unter Amazon RDS werden unterstützt.
- Sie müssen für das Cloud SQL-Replikat eine Hauptversion von MySQL verwenden, die mit der Version auf dem externen Server identisch oder höher ist.
- Wenn MySQL 5.5 auf dem externen Server installiert ist, wird GTID nicht unterstützt.
Achten Sie darauf, dass binäre Logs aktiviert und folgende Voraussetzungen erfüllt sind:
- Zeilenbasiertes binäres Logging wird verwendet.
- Binäre Logs werden für einen ausreichend langen Zeitraum aufbewahrt, wie er für die Datenbankmigration erforderlich ist. In der Regel ist eine Woche ausreichend.
Prüfen Sie, ob auf Ihrem externen Server GTID aktiviert ist. Dies hat Auswirkungen auf die Vorgehensweise bei der Einrichtung der Replikation.
Prüfen Sie, ob Ihr externer Server globale Lesesperr-Berechtigungen hat. Dies hat Auswirkungen auf die Vorgehensweise bei der Einrichtung der Replikation.
Wenn das Cloud SQL-Replikat mit einer privaten IP-Adresse aktiviert ist, da die ausgehende private IP-Adresse nicht statisch ist, konfigurieren Sie die Firewall des externen Servers so, dass sie den internen IP-Bereich zulässt, der für den Zugriff auf private Dienste des VPC-Netzwerks zugewiesen wurde, das das Cloud SQL-Replikat als sein privates Netzwerk verwendet.
Die Firewall des Quelldatenbankservers muss so konfiguriert sein, dass sie den gesamten internen IP-Adressbereich zulässt, der für die private Dienstverbindung des VPC-Netzwerks zugewiesen ist, das die Cloud SQL-Zielinstanz als Feld privateNetwork ihrer ipConfiguration-Einstellungen verwendet.
So finden Sie den internen IP-Bereich:
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Wählen Sie das VPC-Netzwerk aus, das Sie verwenden möchten.
Klicken Sie auf den Tab Private Dienstverbindung.
Wenn der externe Server
DEFINER
-Klauseln (Ansichten, Ereignisse, Trigger oder gespeicherte Prozeduren) enthält, kann die Replikation fehlschlagen, abhängig von der Reihenfolge, in der diese Anweisungen ausgeführt werden. Weitere Informationen zur Verwendung vonDEFINER
in Cloud SQL und zu möglichen Problemumgehungen finden Sie in diesem Artikel.InnoDB ist die einzige unterstützte Speicher-Engine in Cloud SQL. Eine Migration mit MyISAM kann zu Dateninkonsistenzen führen und erfordert eine Datenvalidierung. Weitere Informationen finden Sie in der MySQL-Dokumentation unter Tabellen von MyISAM zu InnoDB konvertieren.
Aufbewahrung von binären Logs konfigurieren
Konfigurieren Sie Ihren externen Server so, dass binäre Logs für mindestens 24 Stunden lang aufbewahrt werden.
MySQL Community
Wenn Ihr externer Server die MySQL Community Edition nutzt, können Sie mithilfe der entsprechenden MySQL-Befehle die Einstellungen für die Aufbewahrung der binären Logs ändern.
MySQL 5.5 – 5.7:
expire_logs_days
MySQL 8.0:
expire_logs_days
,binlog_expire_logs_seconds
Cloud SQL for MySQL
Wenn Ihr externer Server Cloud SQL for MySQL nutzt, werden Ihre binären Logs standardmäßig sieben Tage lang aufbewahrt. Sie können diese Einstellung aber ändern.
Amazon RDS und Aurora
Wenn der externe Server eine Amazon RDS-Instanz ist, können Sie mit folgendem Befehl die Einstellungen für die Aufbewahrung der binären Logs aktualisieren:
call mysql.rds_set_configuration('binlog retention ', HOURS);
Attribut | Beschreibung |
---|---|
STUNDEN | Die Gesamtzahl der Stunden an binären Logs, die die Amazon RDS-Instanz aufbewahren soll. |
Weitere Informationen finden Sie unter mysql.rds_set_configuration.
Nutzerkonto für Replikation erstellen
Auf dem externen Server muss ein MySQL-Nutzerkonto für die Verwaltung der Replikation zum Cloud SQL-Replikat vorhanden sein. Dieses Nutzerkonto sollte nur zum Verwalten der Replikation verwendet werden. Je nach verwendetem Migrationsansatz müssen Sie dem Nutzer möglicherweise später Berechtigungen erteilen.
Um ein Nutzerkonto für die Replikation einzurichten, öffnen Sie auf dem externen Server ein Terminal und geben Sie die folgenden MySQL-Befehle ein:
MySQL
CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD'; GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST'; FLUSH PRIVILEGES;
Beispiel
CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Attribut | Beschreibung |
---|---|
USERNAME | Das Nutzerkonto für die Replikation auf dem externen Server. |
PASSWORD | Das Passwort des Nutzerkontos für die Replikation. |
HOST | Legen Sie diese Option auf % fest, um alle Verbindungen von jedem Host zu akzeptieren.
In einem späteren Schritt wird dies geändert, damit nur noch Verbindungen vom Cloud SQL-Replikat akzeptiert werden. |
Quelldarstellungsinstanz einrichten
Die Quelldarstellungsinstanz verweist auf den externen Server. Sie enthält nur die Anfragedaten vom externen Server. Erstellen Sie die Anfragedaten und verwenden Sie sie in einem curl
-Befehl, der die Quelldarstellungsinstanz in Cloud SQL erstellt.
Anfragedaten erstellen
Die Anfragedaten enthalten grundlegende Informationen zu Ihrem Quelldatenbankserver im JSON-Format. Die Anfragedaten können für ein Cloud SQL-Replikat in einem öffentlichen oder privaten Netzwerk konfiguriert werden und sollten folgende Informationen enthalten:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "hostPort": "SOURCE_HOST", "username": "USERNAME", "password": "PASSWORD", "caCertificate": "SOURCE_CERT", "clientCertificate": "CLIENT_CERT", "clientKey": "CLIENT_KEY" } }
Beispiel für verwalteten Import
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@"
}
}
Beispiel für Dumpdatei
// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:"3306",
"username": "replicationUser",
"password": "486#@%*@",
"dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
"caCertificate": "content of your certificate",
"clientCertificate": "content of your certificate",
"clientKey": "content of your client key"
}
}
Beispiel für einen benutzerdefinierten Import
// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@"
}
}
Attribut | Beschreibung |
---|---|
SOURCE_NAME | Der Name der zu erstellenden Quelldarstellungsinstanz. |
REGION | Die Region, in der sich die Quelldarstellungsinstanz befinden soll. |
DATABASE_VERSION | Die auf dem externen Server ausgeführte Datenbankversion. Die Optionen sind MYSQL_5_6 , MYSQL_5_7 oder MYSQL_8_0
. |
SOURCE HOST | Die IPv4-Adresse und der Port für den externen Server oder die DNS-Adresse für den externen Server.
Eine DNS-Adresse kann bis zu 60 Zeichen enthalten.
Wenn der externe Server in Cloud SQL gehostet wird, lautet der Port 3306 . |
USERNAME | Das Nutzerkonto für die Replikation auf dem externen Server. |
PASSWORD | Das Passwort des Nutzerkontos für die Replikation. |
BUCKET | Der Name des Buckets, der die Dumpdatei enthält. Nur einschließen, wenn Sie die Replikation mit einer Dumpdatei einrichten, die in einem Cloud Storage-Bucket vorhanden ist. |
DUMP_FILE | Eine Datei in dem Bucket, die die Daten vom externen Server enthält. |
CLIENT_CA_CERT | Das CA-Zertifikat auf dem externen Server. Nur einschließen, wenn auf dem externen Server SSL/TLS verwendet wird. |
CLIENT_CERT | Das Clientzertifikat auf dem externen Server. Nur für die Server-Client-Authentifizierung erforderlich. Nur einschließen, wenn auf dem externen Server SSL/TLS verwendet wird. |
CLIENT_KEY | Die private Schlüsseldatei für das Clientzertifikat auf dem externen Server. Nur für die Server-Client-Authentifizierung erforderlich. Nur einschließen, wenn auf dem externen Server SSL/TLS verwendet wird. |
Quelldarstellungsinstanz erstellen
Erstellen Sie eine JSON-Datei, die Ihre Quellanfragedaten enthält, bevor Sie diesen Schritt ausführen.
Öffnen Sie dann ein Terminal und führen Sie die folgenden Befehle aus, um die Quelldarstellungsinstanz in Cloud SQL zu erstellen:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
Beispiel
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @./source.json \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Attribut | Beschreibung |
---|---|
PROJECT_ID | Die ID Ihres Projekts in Google Cloud. |
JSON_PATH | Der Pfad zur JSON -Datei mit den Anfragedaten für den externen Server. |
Quelldarstellungsinstanz aktualisieren
Wenn Sie die Anfragedaten vom externen Server aktualisieren, können Sie die vorhandene Quelldarstellungsinstanz für die Verwendung der geänderten Werte aktualisieren.
Anfragedaten ändern
Aktualisieren Sie die Anfragedaten, um alle Felder einzubeziehen, die geändert wurden. Dazu gehören die Felder hostPort
, username
, password
, caCertificate
, clientCertificate
und clientKey
. Nachdem Sie die Anfragedaten aktualisiert haben, verwenden Sie sie in einem curl
-Befehl, um die Instanz in Cloud SQL zu aktualisieren.
Das folgende Beispiel zeigt, wie die Felder username
und password
mit einem anderen Nutzernamen und Passwort aktualisiert werden:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "username": "NEW_USERNAME", "password": "NEW_PASSWORD" } }
Beispiel für verwalteten Import
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
Beispiel für Dumpdatei
// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "486#@%*@"
}
}
Beispiel für einen benutzerdefinierten Import
// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "486#@%*@"
}
}
Attribut | Beschreibung |
---|---|
SOURCE_NAME | Der Name der Quelldarstellungsinstanz. |
REGION | Die Region, in der sich die Quelldarstellungsinstanz befindet. |
DATABASE_VERSION | Die auf dem externen Server ausgeführte Datenbankversion. Die Optionen sind MYSQL_5_6 , MYSQL_5_7 oder MYSQL_8_0
. |
NEW_USERNAME | Das neue Nutzerkonto für die Replikation auf dem externen Server. |
NEW_PASSWORD | Das Passwort für das neue Konto. |
Quelldarstellungsinstanz ändern
Erstellen Sie eine JSON-Datei, die Ihre geänderten Anfragedaten enthält, bevor Sie diesen Schritt ausführen.
Öffnen Sie dann ein Terminal und führen Sie die folgenden Befehle aus, um die Quelldarstellungsinstanz in Cloud SQL zu ändern:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X PATCH \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME
Beispiel
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @./source.json \
-X PATCH \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Attribut | Beschreibung |
---|---|
PROJECT_ID | Die ID Ihres Projekts in Google Cloud. |
JSON_PATH | Der Pfad zur JSON -Datei mit den Anfragedaten für den externen Server. |
SOURCE_NAME | Der Name der Quelldarstellungsinstanz. |
Cloud SQL-Replikat einrichten
Das Cloud SQL-Replikat erhält schließlich die Daten vom externen Server. In diesem Schritt erstellen Sie die Anfragedaten und verwenden sie in einem curl
-Befehl, mit dem das Cloud SQL-Replikat in Cloud SQL erstellt wird.
Anfragedaten erstellen
Die Anfragedaten enthalten grundlegende Informationen zum externen Server und zum Cloud SQL-Replikat im JSON-Format. Die Anfragedaten für ein Cloud SQL-Replikat können in einem öffentlichen oder privaten Netzwerk konfiguriert werden und sollten folgende Informationen enthalten:
replica.json
{ "settings": { "tier": "TIER", "dataDiskSizeGb": "DISK_SIZE", "ipConfiguration": { "ipv4Enabled": "PUBLIC_IP_STATUS", "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME" }, "availabilityType": "AVAILABILITY_TYPE" }, "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME", "region": "SOURCE_REGION", "databaseVersion": "DATABASE_VERSION", "name": "REPLICA_NAME" }
Beispiel
{ "settings": { "tier": "db-custom-4-15360", "dataDiskSizeGb": "100" }, "masterInstanceName": "source-instance", "region": "us-central1", "databaseVersion": "MYSQL_5_7", "name": "replica-instance" }
Attribut | Beschreibung |
---|---|
TIER | Der Maschinentyp zum Hosten der Replikatinstanz. Wenn Sie nicht wissen, welchen Maschinentyp Sie verwenden sollen, beginnen Sie mit db-custom-2-7680 . Bei Bedarf können Sie die Größe und andere Parameter ändern. |
DISK_SIZE | Die Speichergröße für das Cloud SQL-Replikat in GB. |
PUBLIC_IP_STATUS | Bestimmt, ob der Instanz eine öffentliche IP-Adresse zugewiesen wird. Standardmäßig ist der Wert dieses Attributs true .
Wenn Sie die Zuweisung einer öffentlichen IP-Adresse für das Replikat deaktivieren möchten, legen Sie den Wert auf false fest.
Wenn Ihr Projekt die
constraints/sql.restrictPublicIp Organisationsrichtlinie aktiviert ist, müssen Sie zum Erstellen des Cloud SQL-Replikats den Wert vonipv4Enabled Attribut auf false . Weitere Informationen zum Deaktivieren der Zuweisung öffentlicher IP-Adressen finden Sie unter Öffentliche IP-Adressen deaktivieren. |
PROJECT_ID | Wenn sich das Cloud SQL-Replikat in einem privaten Netzwerk befindet, fügen Sie das Attribut privateNetwork in die Datei replica.json ein.
Geben Sie als PROJECT_ID die ID Ihres Projekts in Google Cloud an. |
NETWORK_NAME | Der Name des privaten Netzwerks, das mit dem Cloud SQL-Replikat verwendet werden soll. |
AVAILABILITY_TYPE | Der Verfügbarkeitstyp des Cloud SQL-Replikats. Der Standardwert ist ZONAL . Legen Sie den Wert auf REGIONAL fest, um die Hochverfügbarkeitsreplikat (HA-Replikat) zu erstellen. Informationen zu den zulässigen Werten finden Sie unter SqlAvailabilityType.
Nachdem Sie ein externes Server-HA-Replikat erstellt haben, können Sie es nicht mehr in ein Nicht-HA-Replikat ändern. Dies gilt auch umgekehrt. Externe Nicht-HA-Replikate können nicht in Hochverfügbarkeitsreplikate geändert werden. Ein manuelles Failover kann zu einer nicht wiederherstellbaren Migration führen, wenn versucht wird, dass die Instanz noch die ursprünglichen Daten lädt, oder es kann zu temporären Ausfallzeiten führen, wenn die Instanz bereits aus der Quelle repliziert. Prüfen Sie den Replikationsstatus. |
SOURCE_REPRESENTATION_INSTANCE_NAME | Der Name der Quelldarstellungsinstanz. |
SOURCE_REGION | Die Region, die der Quelldarstellungsinstanz zugewiesen ist. |
DATABASE_VERSION | Die Datenbankversion, die mit dem Cloud SQL-Replikat verwendet werden soll. Die Optionen für diese Version sind MYSQL_5_6 , MYSQL_5_7 oder MYSQL_8_0 .
Passen Sie die Datenbankversion an, die auf Ihrem externen Server ausgeführt wird, oder legen Sie den Wert auf maximal eine Version später fest. |
REPLICA_NAME | Der Name des zu erstellenden Cloud SQL-Replikats. |
Cloud SQL-Replikat erstellen
Erstellen Sie vor diesem Schritt eine JSON-Datei, die die Anfragedaten für das Replikat enthält. Öffnen Sie zum Erstellen eines Cloud SQL-Replikats ein Cloud Shell-Terminal und führen Sie die folgenden Befehle aus:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
Beispiel
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @./replica.json \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Attribut | Beschreibung |
---|---|
PROJECT_ID | Die ID Ihres Projekts in Google Cloud, die mit der ID der Quellinstanz übereinstimmen muss. |
JSON_PATH | Der Pfad zur JSON -Datei, die die Anfragedaten für das Cloud SQL-Replikat enthält. |
Einrichtung überprüfen
Rufen Sie die Seite Cloud SQL-Instanzen auf, um zu prüfen, ob die Instanzen korrekt eingerichtet wurden.
Die Quelldarstellungsinstanz und das Cloud SQL-Replikat sollten in etwa so aussehen:
Instanz-ID | Typ | Öffentliche IP-Adresse |
---|---|---|
(-) source-representation-instance | Externe Datenbank primär | 10.68.48.3:3306 |
Replikatinstanz | Lesereplikat der Datenbank | 34.66.48.59 |
Achten Sie außerdem darauf, dass Sie die Berechtigung cloudsql.instances.migrate
für das Cloud SQL-Replikat haben. Diese Berechtigung ist in den IAM-Rollen cloudsql.admin
oder cloudsql.editor
enthalten.
Nutzer dem Cloud SQL-Replikat hinzufügen
Datenbanknutzerkonten können nicht vom externen Server importiert werden. Sie können jedoch auf einem Cloud SQL-Replikat erstellt werden. Legen Sie diese an, bevor Sie ein Replikat vom externen Server erstellen.
Ausgehende IP-Adresse des Cloud SQL-Replikats abrufen
Sie können mit der ausgehenden IP-Adresse des Cloud SQL-Replikats eine sichere Verbindung zwischen dem externen Server und dem Cloud SQL-Replikat herstellen. Diese IP-Adresse wird Ihnen nicht in Rechnung gestellt.
Console
So rufen Sie die ausgehende IP-Adresse für das Replikat ab:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
Bewegen Sie den Mauszeiger neben der öffentlichen IP-Adresse des Cloud SQL-Replikats auf die Kurzinfo Weitere Informationen und rufen Sie die ausgehende IP-Adresse ab.
Beachten Sie, dass die ausgehende IP-Adresse nicht die IP-Adresse ist, die in der Hauptliste für das Replikat in der Google Cloud Console angezeigt wird.
gcloud
Führen Sie den folgenden Befehl aus, um die ausgehende IP-Adresse für das Replikat abzurufen:
gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Attribut | Beschreibung |
---|---|
REPLICA_NAME | Der Name des Cloud SQL-Replikats, dessen ausgehende öffentliche IP-Adresse Sie abrufen möchten. |
Eingehende Verbindungen auf dem externen Server zulassen
Das Cloud SQL-Replikat muss eine Verbindung zum externen Server herstellen, damit die Replikation möglich ist. Sie müssen die Netzwerkfirewall für Ihren externen Server so konfigurieren, dass Verbindungen von der ausgehenden IP-Adresse des Cloud SQL-Replikats zulässig sind, wenn die folgenden Bedingungen zutreffen:
- Der externe Server ist durch eine Firewall oder durch andere Netzwerkbeschränkungen geschützt.
- Ihr Cloud SQL-Replikat verwendet eine öffentliche IP-Adresse.
Um eine Verbindung zum Cloud SQL-Replikat herzustellen, verwenden Sie die primäre IP-Adresse des Replikats. Diese IP-Adresse wird in der Google Cloud Console angezeigt.
Quelldarstellungsinstanz für eine Replikation zum Cloud SQL-Replikat aktualisieren
Nach der Einrichtung der Quelldarstellungsinstanz für das Cloud SQL-Replikat müssen Sie möglicherweise die Quelldarstellungsinstanz aktualisieren. Beispielsweise müssen Ihre Konfigurationen in folgenden Fällen aktualisiert werden:
- Der Host, der Port oder die IP des externen Servers hat sich geändert.
- Sie möchten einen anderen Nutzer für MySQL-Replikate verwenden.
- Das Passwort des Nutzers für MySQL-Replikate wurde geändert.
- Die SSL-Zertifikate, die für die sichere Verbindung zum externen Server verwendet wurden, wurden geändert.
Cloud SQL-Replikat übertragen
Für das anfängliche Laden der Daten vom externen Server in das Cloud SQL-Replikat gibt es drei Möglichkeiten:
- Ein verwalteter Import verwendet einen Dienst, der Daten vom externen Server extrahiert und direkt in die Cloud SQL-Instanz importiert. Cloud SQL empfiehlt diese Option. Sie müssen diese Option verwenden, wenn Ihr externer Server keine Replikation der globalen Transaktions-ID (GTID) verwendet. Weitere Informationen finden Sie unter Replikation aus externen Datenbanken mithilfe eines verwalteten Imports einrichten.
- Für eine Dumpdatei müssen Sie eine Dumpdatei Ihres externen Servers erstellen, sie in einen Cloud Storage-Bucket verschieben und in Cloud SQL importieren. Sie können diese Option nur verwenden, wenn Ihr externer Server die GTID-Replikation verwendet. Weitere Informationen finden Sie unter Replikation aus externen Datenbanken mithilfe einer Dumpdatei einrichten.
- Bei einem benutzerdefinierten Import müssen Sie eine primäre Cloud SQL-Instanz erstellen, einen benutzerdefinierten Datenimport mithilfe Ihrer bevorzugten Tools ausführen, den Import auf ein Cloud SQL-Replikat zurückstufen und dann die Replikation von einem externen Server einrichten. Dies funktioniert am besten für Multi-TB-Datenbankmigrationen. Sie müssen jedoch die GTID-Replikation verwenden. Weitere Informationen finden Sie unter Benutzerdefinierten Import zum Einrichten der Replikation aus großen externen Datenbanken verwenden.
Welche Option ist die richtige für Sie?
Replikation überwachen
Wenn für das Cloud SQL-Replikat der anfängliche Datenladevorgang abgeschlossen ist, wird eine Verbindung zum externen Server hergestellt und es werden alle Aktualisierungen angewendet, die nach dem Exportvorgang vorgenommen wurden. Bestätigen Sie den Replikationsstatus.
Es ist wichtig, dass Sie den Replikationsstatus prüfen, bevor Sie das Replikat zu einer eigenständigen Instanz hochstufen. Wenn der Replikationsvorgang nicht erfolgreich abgeschlossen wurde, enthält ein hochgestuftes Replikat nicht alle Änderungen von Ihrem externen Server.
Wenn die Replikationsverzögerung nicht gegen 0 tendiert, nehmen Sie entsprechende Korrekturen vor.
Sie können diese Messwerte prüfen: /postgresql/external_sync/initial_sync_complete
, postgresql/external_sync/max_replica_byte_lag
und database/replication/state
. Liste der Cloud SQL-Messwerte aufrufen.
Stellen Sie eine Verbindung zur Datenbank her, sobald das Cloud SQL-Replikat den externen Server erreicht hat und es keine Replikationsverzögerung auf dem Cloud SQL-Replikat gibt. Führen Sie die entsprechenden Datenbankbefehle aus, um zu prüfen, ob die Inhalte im Vergleich zum externen Server wie erwartet sind. Behalten Sie Ihren externen Server bei, bis die erforderlichen Validierungen abgeschlossen sind.
Kaskadierendes Replikat einrichten
Nach der Migration können Sie kaskadierende Lesereplikate unter Ihrem Cloud SQL-Replikat erstellen, bevor Sie das Cloud SQL-Replikat hochstufen.
Sie können kaskadierende Replikate für Ihre Cloud SQL-Instanz nur erstellen, wenn Sie die GTID-Replikation verwenden.Erstellen Sie ein kaskadierendes Replikat, um folgende Befehle auszuführen:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Aktivieren Sie für MySQL 5.7 oder höher die Replikation.
- 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
- Wenn Sie MySQL Version 5.7 oder höher verwenden, aktivieren Sie binlogs für das primäre Replikat des neuen Replikats:
Ersetzen Sie PARENT_REPLICA_NAME durch den Namen des übergeordneten Replikats.gcloud sql instances patch --enable-bin-log --project=cascade-replica PARENT_REPLICA_NAME
- Erstellen Sie das neue Replikat. Geben Sie dazu mit dem Flag
--master-instance-name
Ihr Cloud SQL-Replikat als primäre Instanz an: Ersetzen Sie Folgendes:gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
- REPLICA_NAME ist die eindeutige ID des Replikats, das Sie erstellen
- PARENT_REPLICA_NAME ist der Name des Cloud SQL-Replikats
- Nachdem das Replikat erstellt wurde, können Sie sehen, dass die an der primären Instanz vorgenommenen Änderungen durch alle Replikate in der Kette der kaskadierenden Replikate repliziert werden.
curl
- 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 } } }
- 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": "EXTERNAL_SERVER_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"
Replikat hochstufen
Stufen Sie das Replikat so hoch:
- Stufen Sie das Replikat zur primären Instanz hoch. Beachten Sie, dass GTID und binäre Logs sowie die geplanten Sicherungen auf dem hochgestuften Replikat aktiviert sind.
- Fügen Sie der Instanz Lesereplikate hinzu.
- Optional: Konfigurieren Sie eine Hochverfügbarkeit für Ihre Instanz.
Zur Vermeidung zusätzlicher Ausfallzeiten können Sie HA während der Einrichtung eines Replikats aktivieren, indem Sie
AVAILABILITY_TYPE
aufREGIONAL
setzen.
Nächste Schritte
- Replikation aus großen externen Datenbanken mithilfe eines benutzerdefinierten Imports einrichten
- Replikation aus externen Datenbanken mithilfe einer Dumpdatei einrichten