Cette page explique comment configurer votre serveur externe pour la réplication sur Cloud SQL, créer une instance de représentation source sur Cloud SQL et répliquer les données vers Cloud SQL. Vous devez suivre intégralement la procédure présentée sur cette page avant de passer aux étapes de réplication.
Database Migration Service constitue une alternative aux procédures décrites sur cette page. Il offre une réplication continue ou une migration de base de données ponctuelle depuis un serveur externe vers Cloud SQL.
Avant de commencer
Terminologie
Serveur externe. Serveur MySQL externe à Cloud SQL à partir duquel vous souhaitez répliquer des données. Il est également appelé "base de données source" ou "serveur de base de données externe". Il peut s'agir d'une autre instance Cloud SQL ou de tout autre serveur de base de données, par exemple, sur site, Amazon Relational Database Service (RDS), etc.
Instance de représentation source. Instance Cloud SQL de simulation qui représente le serveur externe auprès de l'instance dupliquée Cloud SQL. Elle est visible dans la console Google Cloud et ressemble à une instance Cloud SQL classique, mais elle ne contient pas de données, nécessite une configuration ou une maintenance, ni n'affecte la facturation.
Instance dupliquée Cloud SQL. Instance Cloud SQL dupliquée du serveur externe. Également appelée instance dupliquée principale externe avec accès en lecture.
Compte utilisateur de réplication. Compte utilisateur MySQL sur le serveur externe disposant des autorisations suffisantes pour permettre la réplication entre le serveur externe et l'instance dupliquée Cloud SQL.
Importation gérée. Processus d'importation des données directement depuis le serveur externe vers l'instance dupliquée Cloud SQL. Dans ce cas, Cloud SQL se connecte au serveur externe à l'aide du compte utilisateur de réplication et exécute le vidage des données directement sur le serveur externe pour importer des données vers l'instance dupliquée Cloud SQL.
Configurer un projet Google Cloud
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
Assurez-vous de disposer des rôles d'administrateur Cloud SQL, d'administrateur de l'espace de stockage et de lecteur de Compute sur votre compte utilisateur.
Installer le Google Cloud SDK
Pour configurer la réplication, installez le SDK Google Cloud pour votre serveur externe. Vous pouvez installer le SDK sur votre serveur externe, à moins qu'il soit déjà installé ailleurs.
Configurer le serveur externe pour la réplication
Checklist du serveur externe
Assurez-vous que MySQL 5.5, 5.6, 5.7 ou 8.0 est installé sur votre serveur externe. MySQL Community Edition, Cloud SQL pour MySQL, Amazon Aurora et MySQL sur Amazon RDS sont compatibles.
- Sur votre instance dupliquée Cloud SQL, vous devez utiliser une version majeure de MySQL identique ou ultérieure à celle exécutée sur votre serveur externe.
- Si MySQL 5.5 est installé sur le serveur externe, GTID n'est pas accepté.
Assurez-vous que les journaux binaires sont activés et que :
- la journalisation binaire basée sur les lignes est utilisée ;
- les journaux binaires sont conservés pendant une longue période pour permettre la migration de la base de données. En général, une semaine suffit.
Vérifiez si GTID est activé sur votre serveur externe. Cela aura une incidence sur les étapes à suivre pour configurer la réplication.
Vérifiez si votre serveur externe dispose d'autorisations gloables de verrouillage en lecture. Cela aura une incidence sur les étapes à suivre pour configurer la réplication.
Si l'instance répliquée Cloud SQL est activée avec une adresse IP privée parce que l'adresse IP privée sortante n'est pas statique, configurez le pare-feu du serveur externe pour autoriser la plage d'adresses IP internes allouée à l'accès aux services privés du réseau VPC utilisé par l'instance répliquée Cloud SQL en tant que réseau privé.
Le pare-feu du serveur de base de données source doit être configuré pour autoriser l'intégralité de la plage d'adresses IP internes allouée à la connexion de service privée du réseau VPC que l'instance de destination Cloud SQL utilise comme champ privateNetwork dans ses paramètres ipConfiguration.
Pour trouver la plage d'adresses IP internes, procédez comme suit :
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Sélectionnez le réseau VPC que vous souhaitez utiliser.
Cliquez sur l'onglet Connexion au service privé.
Si votre serveur externe contient des clauses
DEFINER
(vues, événements, déclencheurs ou procédures stockées), selon l'ordre d'exécution de ces instructions, la réplication peut échouer. Apprenez-en plus sur l'utilisation deDEFINER
et sur les solutions de contournement potentielles dans Cloud SQL.InnoDB est le seul moteur de stockage compatible avec Cloud SQL. La migration avec MyISAM peut entraîner des incohérences et nécessiter une validation des données. Pour en savoir plus, consultez la section Convertir des tables MyISAM vers InnoDB dans la documentation MySQL.
Configurer la conservation des journaux binaires
Vous devez configurer votre serveur externe pour conserver les journaux binaires pendant au moins 24 heures.
Communauté MySQL
Si votre serveur externe utilise MySQL Community Edition, vous pouvez utiliser ces commandes MySQL pour mettre à jour les paramètres de conservation des journaux binaires.
MySQL 5.5 - 5.7 :
expire_logs_days
MySQL 8.0 :
expire_logs_days
,binlog_expire_logs_seconds
Cloud SQL pour MySQL
Si votre serveur externe utilise Cloud SQL pour MySQL, les journaux binaires sont conservés par défaut pendant sept jours. Vous pouvez modifier ce paramètre.
Amazon RDS et Aurora
Si votre serveur externe est une instance Amazon RDS, vous pouvez utiliser cette commande pour mettre à jour les paramètres de conservation des journaux binaires :
call mysql.rds_set_configuration('binlog retention ', HOURS);
Valeur | Description |
---|---|
HEURES | Nombre total d'heures de journaux binaires que l'instance Amazon RDS doit conserver. |
Pour en savoir plus, consultez la section mysql.rds_set_configuration.
Créer un compte utilisateur de réplication
Un compte utilisateur MySQL dédié à la gestion de la réplication sur l'instance dupliquée Cloud SQL doit exister sur votre serveur externe. Ce compte utilisateur ne doit être utilisé que pour gérer la réplication. Selon l'approche de migration utilisée, vous devrez peut-être accorder des autorisations à l'utilisateur ultérieurement.
Pour ajouter un compte utilisateur de réplication, ouvrez un terminal sur le serveur externe, puis saisissez les commandes MySQL suivantes :
MySQL
CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD'; GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST'; FLUSH PRIVILEGES;
exemple
CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Valeur | Description |
---|---|
USERNAME | Compte utilisateur de réplication sur le serveur externe. |
PASSWORD | Mot de passe du compte utilisateur de réplication. |
HOST | Définissez cette valeur sur % pour accepter toutes les connexions depuis n'importe quel hôte.
Dans une étape ultérieure, cette valeur sera modifiée pour n'accepter que les connexions à partir de l'instance dupliquée Cloud SQL. |
Configurer une instance de représentation source
L'instance de représentation source fait référence au serveur externe. Elle ne contient que les données de requête du serveur externe. Créez les données de requête et utilisez-les dans une commande curl
qui crée l'instance de représentation source dans Cloud SQL.
Créer les données de requête
Les données de requête contiennent des informations de base sur votre serveur de base de données source au format JSON. Elles peuvent être configurées pour une instance dupliquée Cloud SQL sur un réseau public ou privé et doivent contenir les informations suivantes :
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" } }
exemple d'importation gérée
// 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#@%*@"
}
}
exemple de fichier de vidage
// 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"
}
}
exemple d'importation personnalisée
// 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#@%*@"
}
}
Valeur | Description |
---|---|
SOURCE_NAME | Nom de l'instance de représentation source à créer. |
REGION | Région dans laquelle vous souhaitez que l'instance de représentation source réside. |
DATABASE_VERSION | Version de base de donnée qui s'exécute sur votre serveur externe. Les options sont MYSQL_5_6 , MYSQL_5_7 ou MYSQL_8_0 .
. |
SOURCE HOST | Adresse IPv4 et port du serveur externe, ou adresse DNS du serveur externe.
Si vous utilisez une adresse DNS, elle peut contenir jusqu'à 60 caractères.
Si le serveur externe est hébergé sur Cloud SQL, le port est 3306 . |
USERNAME | Compte utilisateur de réplication sur le serveur externe. |
PASSWORD | Mot de passe du compte utilisateur de réplication. |
BUCKET | Nom du bucket contenant le fichier de vidage. À n'inclure que si vous configurez la réplication avec un fichier de vidage existant dans un bucket Cloud Storage. |
DUMP_FILE | Fichier du bucket contenant les données du serveur externe. |
CLIENT_CA_CERT | Certificat CA sur le serveur externe. À n'inclure que si SSL/TLS est utilisé sur le serveur externe. |
CLIENT_CERT | Certificat client sur le serveur externe. Requis uniquement pour l'authentification serveur-client. À n'inclure que si SSL/TLS est utilisé sur le serveur externe. |
CLIENT_KEY | Fichier de clé privée du certificat client sur le serveur externe. Requis uniquement pour l'authentification serveur-client. À n'inclure que si SSL/TLS est utilisé sur le serveur externe. |
Créer une instance de représentation source
Avant d'effectuer cette étape, vous devez créer un fichier JSON contenant les données de requête source.
Ensuite, pour créer l'instance de représentation source dans Cloud SQL, ouvrez un terminal et exécutez les commandes suivantes :
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
exemple
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
Valeur | Description |
---|---|
PROJECT_ID | ID de votre projet dans Google Cloud. |
JSON_PATH | Chemin d'accès au fichier JSON contenant les données de requête du serveur externe. |
Mettre à jour une instance de représentation source
Si vous mettez à jour les données de requête à partir du serveur externe, vous pouvez mettre à jour l'instance de représentation source existante afin qu'elle utilise les valeurs modifiées.
Modifier les données de requête
Mettez à jour les données de requête pour inclure tous les champs qui ont été modifiés. Cela inclut les champs hostPort
, username
, password
, caCertificate
, clientCertificate
et clientKey
. Après avoir mis à jour les données de requête, utilisez-les dans une commande curl
pour mettre à jour l'instance dans Cloud SQL.
L'exemple suivant montre comment mettre à jour les champs username
et password
avec un nom d'utilisateur et un mot de passe différents :
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "username": "NEW_USERNAME", "password": "NEW_PASSWORD" } }
exemple d'importation gérée
// 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#@%*@"
}
}
exemple de fichier de vidage
// 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#@%*@"
}
}
exemple d'importation personnalisée
// 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#@%*@"
}
}
Valeur | Description |
---|---|
SOURCE_NAME | Nom de l'instance de représentation source. |
REGION | Région où se trouve l'instance de représentation source. |
DATABASE_VERSION | Version de base de donnée qui s'exécute sur votre serveur externe. Les options sont MYSQL_5_6 , MYSQL_5_7 ou MYSQL_8_0 .
. |
NEW_USERNAME | Nouveau compte utilisateur de réplication sur le serveur externe. |
NEW_PASSWORD | Mot de passe du nouveau compte. |
Modifier une instance de représentation source
Avant d'effectuer cette étape, vous devez créer un fichier JSON contenant les données de requête modifiées.
Ensuite, pour modifier l'instance de représentation source dans Cloud SQL, ouvrez un terminal et exécutez les commandes suivantes :
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
exemple
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
Valeur | Description |
---|---|
PROJECT_ID | ID de votre projet dans Google Cloud. |
JSON_PATH | Chemin d'accès au fichier JSON contenant les données de requête du serveur externe. |
SOURCE_NAME | Nom de l'instance de représentation source. |
Configurer une instance dupliquée Cloud SQL
L'instance dupliquée Cloud SQL contient à terme les données du serveur externe. Dans cette étape, vous allez créer les données de requête et les utiliser dans une commande curl
qui crée l'instance dupliquée Cloud SQL dans Cloud SQL.
Créer les données de requête
Les données de requête contiennent des informations de base sur votre serveur externe et votre instance dupliquée Cloud SQL au format JSON. Les données de requête peuvent être configurées pour une instance dupliquée Cloud SQL sur un réseau public ou privé et doivent contenir les informations suivantes :
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" }
exemple
{ "settings": { "tier": "db-custom-4-15360", "dataDiskSizeGb": "100" }, "masterInstanceName": "source-instance", "region": "us-central1", "databaseVersion": "MYSQL_5_7", "name": "replica-instance" }
Valeur | Description |
---|---|
TIER | Type de machine qui héberge votre instance dupliquée. Si vous ne savez pas quel type de machine utiliser, commencez par db-custom-2-7680 . Vous pourrez modifier sa taille et d'autres valeurs acceptées ultérieurement si nécessaire. |
DISK_SIZE | Taille de l'espace de stockage pour l'instance dupliquée Cloud SQL, en Go. |
PUBLIC_IP_STATUS | Détermine si une adresse IP publique est attribuée à l'instance. Par défaut, la valeur de cette propriété est true .
Pour désactiver l'attribution d'une adresse IP publique à l'instance répliquée, définissez la valeur sur false .
Si la règle d'administration constraints/sql.restrictPublicIp a été activée pour votre projet, vous devez définir la valeur de la propriété ipv4Enabled sur false pour créer l'instance répliquée Cloud SQL. Pour en savoir plus sur la désactivation de l'attribution d'adresses IP publiques, consultez Désactiver une adresse IP publique. |
PROJECT_ID | Si l'instance répliquée Cloud SQL se trouve sur un réseau privé, incluez la propriété privateNetwork dans le fichier replica.json .
Pour PROJECT_ID, spécifiez l'ID de votre projet dans Google Cloud. |
NETWORK_NAME | Nom du réseau privé à utiliser avec l'instance dupliquée Cloud SQL. |
AVAILABILITY_TYPE | Type de disponibilité de l'instance dupliquée Cloud SQL. La valeur par défaut est ZONAL . Pour définir la haute disponibilité sur l'instance dupliquée, définissez la valeur sur REGIONAL . Pour en savoir plus sur les valeurs autorisées, consultez la section SqlAvailabilityType.
Après avoir créé une instance dupliquée externe à haute disponibilité, vous ne pouvez pas la remplacer par une instance dupliquée standard. L'inverse est également vrai. Vous ne pouvez pas remplacer une instance dupliquée externe standard par une instance dupliquée haute disponibilité. Le basculement manuel peut entraîner une migration irrécupérable si il est tenté alors que l'instance charge toujours les données initiales, ou un temps d'arrêt temporaire si l'instance est déjà en cours de réplication à partir de la source. Vérifiez l'état de la réplication. |
SOURCE_REPRESENTATION_INSTANCE_NAME | Nom de l'instance de représentation source. |
SOURCE_REGION | Région attribuée à l'instance de représentation source. |
DATABASE_VERSION | Version de base de donnée à utiliser avec l'instance dupliquée Cloud SQL. Les options pour cette version sont MYSQL_5_6 , MYSQL_5_7 ou MYSQL_8_0 .
Faites correspondre la version de base de données exécutée sur votre serveur externe ou définissez la valeur sur une version ne dépassant pas la version supérieure. |
REPLICA_NAME | Nom de l'instance dupliquée Cloud SQL à créer. |
Créer une instance dupliquée Cloud SQL
Avant d'effectuer cette étape, vous devez créer un fichier JSON contenant les données de requête de l'instance dupliquée. Ensuite, pour créer une instance dupliquée Cloud SQL, ouvrez un terminal Cloud Shell et exécutez les commandes suivantes :
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
exemple
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
Valeur | Description |
---|---|
PROJECT_ID | ID de votre projet dans Google Cloud, qui doit être identique à celui de l'instance source. |
JSON_PATH | Chemin d'accès au fichier JSON contenant les données de requête de l'instance dupliquée Cloud SQL. |
Vérifier votre configuration
Pour vous assurer que vos instances ont été correctement configurées, accédez à la page Instances Cloud SQL.
Vous devriez voir votre instance de représentation source et l'instance dupliquée Cloud SQL dans une liste semblable à celle-ci :
ID d'instance | Type | Adresse IP publique |
---|---|---|
(-) source-representation-instance | Database external primary | 10.68.48.3:3306 |
replica-instance | Database read replica | 34.66.48.59 |
Assurez-vous également que vous disposez de l'autorisation cloudsql.instances.migrate
sur l'instance répliquée Cloud SQL. Cette autorisation est incluse dans les rôles IAM cloudsql.admin
ou cloudsql.editor
.
Ajouter des utilisateurs à l'instance dupliquée Cloud SQL
Vous ne pouvez pas importer de comptes utilisateur de base de données à partir du serveur externe, mais vous pouvez les créer sur une instance dupliquée Cloud SQL. Effectuez cette opération avant la réplication à partir du serveur externe.
Obtenir l'adresse IP sortante de l'instance dupliquée Cloud SQL
Vous pouvez utiliser l'adresse IP sortante de l'instance dupliquée Cloud SQL pour établir une connexion sécurisée entre le serveur externe et l'instance dupliquée Cloud SQL. Cette adresse IP ne vous sera pas facturée.
Console
Pour obtenir l'adresse IP sortante de l'instance dupliquée, procédez comme suit :
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
À côté de l'adresse IP publique de l'instance dupliquée Cloud SQL, passez la souris sur l'info-bulle Plus d'infos et récupérez l'adresse IP sortante.
Notez que l'adresse IP sortante ne correspond pas à l'adresse IP affichée dans la liste principale pour l'instance dupliquée dans la console Google Cloud.
gcloud
Pour obtenir l'adresse IP sortante de l'instance dupliquée, exécutez la commande suivante :
gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Valeur | Description |
---|---|
REPLICA_NAME | Nom de l'instance dupliquée Cloud SQL dont vous souhaitez récupérer l'adresse IP publique sortante. |
Autoriser les connexions entrantes sur le serveur externe
L'instance dupliquée Cloud SQL doit se connecter au serveur externe pour que la réplication aboutisse. Vous devez configurer le pare-feu réseau pour que votre serveur externe accepte les connexions à partir de l'adresse IP sortante de l'instance dupliquée Cloud SQL si les conditions suivantes s'appliquent :
- Le serveur externe est protégé par un pare-feu ou par une autre restriction réseau.
- Votre instance dupliquée Cloud SQL utilise une adresse IP publique.
Pour vous connecter à l'instance dupliquée Cloud SQL, utilisez l'adresse IP principale de l'instance dupliquée. Cette adresse IP s'affiche dans la console Google Cloud.
Mettre à jour l'instance de représentation source pour autoriser la réplication sur l'instance dupliquée Cloud SQL
Après avoir configuré l'instance de représentation source pour l'instance dupliquée Cloud SQL, vous devrez peut-être mettre à jour l'instance de représentation source. Par exemple, les scénarios suivants nécessitent une mise à jour de vos configurations :
- L'hôte, le port ou l'adresse IP du serveur externe sont modifiés.
- Vous souhaitez utiliser un autre utilisateur de réplication MySQL.
- Le mot de passe de l'utilisateur de réplication MySQL est modifié.
- Les certificats SSL utilisés pour se connecter en toute sécurité au serveur externe sont modifiés.
Initier l'instance dupliquée Cloud SQL
Il existe trois options pour effectuer le chargement initial des données du serveur externe dans l'instance dupliquée Cloud SQL :
- Une importation gérée utilise un service qui extrait les données du serveur externe et les importe directement dans l'instance Cloud SQL. Cloud SQL recommande cette option. Vous devez utiliser cette option si votre serveur externe n'utilise pas la réplication par identifiant de transaction global (GTID). Pour en savoir plus, consultez la section Utiliser une importation gérée pour configurer la réplication à partir de bases de données externes.
- Un fichier de vidage nécessite de créer un fichier de vidage de votre serveur externe, de le déplacer vers un bucket Cloud Storage et de l'importer dans Cloud SQL. Vous ne pouvez utiliser cette option que si votre serveur externe utilise la réplication GTID. Pour en savoir plus, consultez la section Utiliser un fichier de vidage pour configurer la réplication à partir de bases de données externes.
- Une importation personnalisée nécessite de créer une instance principale Cloud SQL, d'effectuer une importation de données personnalisée à l'aide des outils de votre choix, de rétrograder l'instance principale en une instance dupliquée Cloud SQL, puis de configurer une réplication de serveur externe. Cela fonctionne mieux pour les migrations de bases de données de plusieurs téraoctets. Cependant, vous devez utiliser la réplication GTID. Pour en savoir plus, consultez la section Utiliser une importation personnalisée pour configurer la réplication à partir de bases de données externes volumineuses.
Quelle option vous convient le mieux ?
Surveiller la duplication
Une fois que l'instance dupliquée Cloud SQL a terminé la réplication, elle se connecte au serveur externe et applique toutes les mises à jour effectuées après l'exportation. Vérifiez l'état de la réplication.
Il est important de vérifier l'état de la duplication avant de promouvoir l'instance dupliquée sur une instance autonome. Si le processus de réplication n'est pas terminé, une instance dupliquée promue ne dispose pas de toutes les modifications provenant de votre serveur externe.
Si le délai de réplication ne tend pas vers 0, prenez les mesures nécessaires pour y remédier.
Nous vous conseillons de vérifier les métriques suivantes : /postgresql/external_sync/initial_sync_complete
, postgresql/external_sync/max_replica_byte_lag
et database/replication/state
. Consultez la liste des métriques Cloud SQL.
Une fois que l'instance dupliquée Cloud SQL a rattrapé le serveur externe et qu'elle ne présente pas de délai de réplication, connectez-vous à votre base de données. Exécutez les commandes de base de données appropriées pour vous assurer que le contenu est conforme aux attentes par rapport au serveur externe. Conservez votre serveur externe jusqu'à la fin des validations nécessaires.
Configurer une instance répliquée en cascade
Après la migration, vous pouvez créer des instances répliquées en cascade sous votre instance répliquée Cloud SQL avant de promouvoir cette instance.
Vous ne pouvez créer des instances répliquées en cascade pour votre instance Cloud SQL que si vous utilisez la réplication GTID.Pour créer une instance répliquée en cascade, exécutez les commandes suivantes :
Console
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Pour MySQL version 5.7 ou ultérieure, activez la réplication.
- Cliquez sur l'onglet Instances dupliquées de l'instance répliquée qui va servir de parent pour l'instance répliquée que vous souhaitez créer.
- Cliquez sur Créer une instance répliquée.
- Sur la page Créer une instance répliquée avec accès en lecture, mettez à jour l'ID d'instance et toutes les autres options de configuration, y compris le nom, la région et la zone.
- Cliquez sur Créer.
Cloud SQL crée une instance répliquée. Vous êtes redirigé vers la page de l'instance répliquée parente.
- Suivez les étapes 4 à 6 pour chaque nouvelle instance répliquée en cascade que vous souhaitez créer.
gcloud
- Si vous utilisez MySQL version 5.7 ou ultérieure, activez les binlogs pour l'instance principale de la nouvelle instance répliquée :
Remplacez PARENT_REPLICA_NAME par le nom de l'instance répliquée parente.gcloud sql instances patch --enable-bin-log --project=cascade-replica PARENT_REPLICA_NAME
- Créez l'instance répliquée en spécifiant votre instance répliquée Cloud SQL en tant qu'instance principale à l'aide de l'option
--master-instance-name
: Remplacez les éléments suivants:gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
- REPLICA_NAME : ID unique de l'instance répliquée que vous créez.
- PARENT_REPLICA_NAME : nom de l'instance répliquée Cloud SQL
- Une fois l'instance répliquée créée, vous pouvez constater que les modifications apportées à l'instance principale sont répliquées via toutes les instances répliquées présentes dans la chaîne d'instances répliquées en cascade.
curl
- Si vous utilisez MySQL version 5.7 ou ultérieure, activez la journalisation binaire :
Pour activer la journalisation binaire, enregistrez le code JSON suivant dans un fichier nommé request.JSON, puis appelez la commande curl pour activer la journalisation binaire.
{ "settings": { "backupConfiguration": { "enabled": false, "binaryLogEnabled": true } } }
- Pour créer une instance répliquée qui soit hiérarchiquement inférieure à l'instance répliquée parente, modifiez l'exemple de code JSON suivant et enregistrez-le dans un fichier nommé
request.json
:{ "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Exécutez la commande suivante :
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"
Promouvoir l'instance dupliquée
Pour promouvoir votre instance dupliquée, procédez comme suit :
- Promouvez l'instance dupliquée en instance principale. Notez que les journaux GTID et binaires sont activés, et que les sauvegardes planifiées sont activées sur l'instance dupliquée promue.
- Ajoutez des instances dupliquées avec accès en lecture à votre instance.
- Facultatif : Configurez la haute disponibilité pour votre instance.
Pour éviter les temps d'arrêt supplémentaires, vous pouvez activer la haute disponibilité lors de la configuration d'une instance dupliquée en définissant
AVAILABILITY_TYPE
surREGIONAL
.
Étape suivante
- Découvrez comment configurer l'importation personnalisée à partir de bases de données externes volumineuses.
- Apprenez à utiliser un fichier de vidage pour configurer la réplication à partir de bases de données externes.
- Découvrez comment configurer l'importation gérée à partir de bases de données externes.