Configurer Cloud SQL et le serveur externe pour la réplication

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

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

    Accéder à la page IAM

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, 8.0 ou 8.4 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 :

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

    1. Dans la console Google Cloud, accédez à la page Réseaux VPC.

      Accéder à la page Réseaux VPC

    2. Sélectionnez le réseau VPC que vous souhaitez utiliser.

    3. 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 de DEFINER 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.

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);
Propriété 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;
Propriété 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#@%*@"
  }
}
Propriété 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, MYSQL_8_0 ou MYSQL_8_4. .
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
Propriété 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#@%*@"
  }
}
Propriété 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, MYSQL_8_0 ou MYSQL_8_4.
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
Propriété 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_8_0",
        "name": "replica-instance"
    }
Propriété 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, MYSQL_8_0 ou MYSQL_8_4. 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
Propriété 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 :

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. À 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)"
Propriété 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 :

Quelle option vous convient le mieux ?

Schéma du parcours utilisateur Cloud SQL

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

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour MySQL version 5.7 ou ultérieure, activez la réplication.
  3. 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.
  4. Cliquez sur Créer une instance répliquée.
  5. 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.
  6. 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.

  7. Suivez les étapes 4 à 6 pour chaque nouvelle instance répliquée en cascade que vous souhaitez créer.

gcloud

  1. Si vous utilisez MySQL version 5.7 ou versions ultérieures, activez les binlogs pour l'instance principale de la nouvelle instance répliquée :
    gcloud sql instances patch --enable-bin-log
          --project=cascade-replica PARENT_REPLICA_NAME
    Remplacez PARENT_REPLICA_NAME par le nom de l'instance répliquée parente.
  2. 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 :
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Remplacez les éléments suivants:
    • 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
  4. 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

  1. Si vous utilisez MySQL version 5.7 ou versions ultérieures, 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
        }
      }
    }

  2. 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",
        }
    }
  3. 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 :

  1. 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.
  2. Ajoutez des instances dupliquées avec accès en lecture à votre instance.
  3. 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 sur REGIONAL.

Étape suivante