Cette page décrit le processus de configuration de la réplication lorsque vous disposez d'un fichier de vidage créé à partir de votre serveur externe.
Vous devez suivre intégralement la procédure présentée sur cette page. Lorsque vous avez terminé, vous pouvez administrer et surveiller l'instance de représentation source de la même manière que n'importe quelle autre instance Cloud SQL.
Avant de commencer
Avant de commencer, vous devez avoir configuré le serveur externe, créé l'instance de représentation source et configuré l'instance dupliquée Cloud SQL.
Mettre à jour les autorisations pour l'utilisateur de réplication
L'utilisateur de réplication sur le serveur externe est configuré pour accepter les connexions provenant de n'importe quel hôte (%
). Vous devez mettre à jour ce compte utilisateur afin qu'il ne puisse être utilisé qu'avec l'instance dupliquée Cloud SQL.
Ouvrez un terminal sur le serveur externe, puis saisissez les commandes suivantes :
Client mysql
UPDATE mysql.user SET Host='NEW_HOST' WHERE Host='OLD_HOST' AND User='USERNAME'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'GCP_USERNAME'@'HOST'; FLUSH PRIVILEGES;
exemple
UPDATE mysql.user SET Host='192.0.2.0' WHERE Host='%' AND User='replicationUser'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'gcp_user'@'gmail.com'; FLUSH PRIVILEGES;
Propriété | Description |
---|---|
NEW_HOST | Indiquez l'adresse IP sortante de l'instance dupliquée Cloud SQL. |
OLD_HOST | Valeur actuelle attribuée à Host que vous souhaitez modifier. |
USERNAME | Compte utilisateur de réplication sur le serveur externe. |
GCP_USERNAME | Nom d'utilisateur du compte utilisateur Google Cloud Platform (GCP). |
HOST | Le nom d'hôte du compte utilisateur Google Cloud Platform (GCP). |
Vérifier les paramètres de réplication
Une fois la configuration terminée, assurez-vous que l'instance dupliquée Cloud SQL peut effectuer la réplication à partir du serveur externe.
Tout d'abord, vérifiez que vos paramètres de synchronisation externe sont corrects. Pour ce faire, utilisez les commandes ci-dessous pour vérifier :
- La connectivité entre l'instance dupliquée Cloud SQL et le serveur externe
- Les privilèges de l'utilisateur de réplication
- Compatibilité des versions
- L'instance dupliquée Cloud SQL n'est pas déjà en cours de réplication
- Les binlogs sont activés sur le serveur externe
- Un identifiant de transaction global (GTID) est activé
Ouvrez un terminal et saisissez les commandes suivantes pour vérifier que les paramètres de synchronisation externe sont corrects :
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"skipVerification": "SKIP_VERIFICATION"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/verifyExternalSyncSettings
exemple
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Propriété | Description |
---|---|
SYNC_MODE | verifyExternalSyncSettings vérifie que vous pouvez maintenir la synchronisation de l'instance dupliquée Cloud SQL avec le serveur externe une fois la réplication configurée. Les modes de synchronisation incluent EXTERNAL_SYNC_MODE_UNSPECIFIED , ONLINE et OFFLINE . |
SKIP_VERIFICATION | Indique si l'étape de validation intégrée doit être ignorée ou pas avant de synchroniser vos données. Recommandé uniquement si vous avez déjà validé vos paramètres de réplication. |
PROJECT_ID | ID de votre projet dans Google Cloud. |
REPLICA_INSTANCE | ID de votre instance dupliquée Cloud SQL. |
Exporter votre base de données vers un bucket Cloud Storage
Vous pouvez renseigner une instance dupliquée Cloud SQL avec un fichier mysqldump
situé dans un bucket Cloud Storage. Les conditions suivantes s'appliquent :
- Vous devez vous servir de l'utilitaire
mysqldump
fourni avec MySQL. - Pendant l'exécution de
mysqldump
, n'effectuez aucune opération LDD sur le serveur externe. Cela pourrait entraîner des incohérences dans le fichier d'exportation.
Pour exporter votre base de données vers un bucket Cloud Storage, procédez comme suit:
- Dans Google Cloud, créez un bucket Cloud Storage.
- Ouvrez un terminal à l'aide d'un client qui se connecte au serveur de base de données externe et exécutez la commande suivante.
mysqldump
mysqldump \ --host=EXTERNAL_HOST \ --port=EXTERNAL_PORT \ --user=USERNAME\ --password=PASSWORD \ --databases=DATABASE_LIST \ --hex-blob \ SOURCE_DATA \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --set-gtid-purged=on \ ADD_DROP_TABLE \ ROUTINES \ COMPRESS \ GZIP \ | gcloud storage cp - gs://BUCKET/DUMP_FILENAME
exemple
mysqldump \ --host=192.0.2.1 \ --port=3306 \ --user=replicationUser \ --password \ --databases guestbook journal \ --hex-blob \ --master-data=1 \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --compress \ | gzip \ | gcloud storage cp - gs://replica-bucket/external-database.sql.gz
Propriété | Description |
---|---|
EXTERNAL_HOST | Adresse IPv4 ou DNS du serveur externe. |
EXTERNAL_PORT | Port du serveur externe.
Si le serveur externe est hébergé sur Cloud SQL, il s'agit de 3306 . |
USERNAME | Nom du compte utilisateur de réplication ou du compte utilisateur sur le serveur externe disposant des autorisations de lecture sur la base de données. |
PASSWORD | Mot de passe utilisateur de la réplication. |
DATABASE_LIST | Liste de toutes les bases de données du serveur externe, séparées par des espaces, à l'exception des bases de données système (sys , mysql , performance_schema et information_schema ). Utilisez la commande MySQL SHOW DATABASES pour répertorier vos bases de données. |
SOURCE_DATA | Si vous utilisez une version antérieure de MySQL à la version 8.0.26, définissez la valeur de ce paramètre sur --master-data .
Pour les versions de MySQL 8.0.26 ou ultérieures, définissez la valeur de ce paramètre sur --source-data . |
ADD_DROP_TABLE | Si vous souhaitez ajouter une instruction DROP TABLE avant chaque instruction CREATE TABLE , ajoutez --add-drop-table . |
ROUTINES | Si vous souhaitez afficher les routines stockées, telles que les procédures et les fonctions, dans le résultat des bases de données vidées, incluez --routines . |
COMPRESS | Si vous souhaitez compresser toutes les informations envoyées entre l'instance dupliquée Cloud SQL et le serveur externe, utilisez --compress . |
GZIP | Si vous souhaitez compresser davantage le fichier de dump, utilisez | gzip . Si votre base de données contient des données qui sont difficiles à compresser, telles que des données incompressibles binaires ou des images JPG, ne l'utilisez pas. |
BUCKET | Nom du bucket que vous avez créé à l'étape 1 pour contenir le fichier de dump. |
DUMP_FILENAME | Un fichier portant ce nom est créé dans votre bucket. Ce fichier affiche le contenu de la base de données sur votre serveur externe. |
Mettre à jour l'instance de représentation source avec le chemin d'accès au fichier du bucket Cloud Storage
Il s'agit d'une instance Cloud SQL qui représente le serveur de base de données source auprès de l'instance dupliquée Cloud SQL. Elle est visible dans la console Google Cloud et apparaît comme une instance Cloud SQL standard, mais elle ne contient aucune donnée, ne nécessite aucune configuration ni maintenance, et n'affecte pas la facturation.
Le fichier source.json
contient des informations sur l'instance de représentation source.
REST
{ "name": "PRIMARY_INSTANCE_NAME", "region": "REGION_NAME", "databaseVersion": "DB_NAME_AND_VERSION", "onPremisesConfiguration": { "hostPort": "IP_ADDRESS_AND_PORT", "username": "USERNAME", "password": "PASSWORD" }, "dumpFilePath" :"DUMP_FILE_PATH" }
exemple
{ "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" }
Propriété | Description |
---|---|
PRIMARY_INSTANCE_NAME | Nom de l'instance Cloud SQL associée à l'instance de représentation source. |
REGION_NAME | Nom de la région attribuée à l'instance de représentation source. |
DB_NAME_AND_VERSION | Nom et numéro de version de la base de données associée à l'instance de représentation source. |
IP_ADDRESS_AND_PORT | Adresse IP et numéro de port réservés à l'instance de représentation source. |
USERNAME | Nom de l'instance de représentation source. |
PASSWORD | Mot de passe de l'instance de représentation source. |
DUMP_FILE_PATH | Chemin du fichier de vidage qui contient le contenu de la base de données sur votre serveur externe. |
Après avoir configuré l'instance dupliquée Cloud SQL, vous devez mettre à jour votre instance de représentation source avec le chemin d'accès au fichier de votre bucket Cloud Storage.
REST
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_REPRESENTATION_INSTANCE
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 |
---|---|
JSON_PATH | Chemin du fichier JSON stocké dans le bucket Cloud Storage.
Ce fichier contient des données sur l'instance de représentation source. |
PROJECT_ID | ID de votre projet dans Google Cloud. |
SOURCE_REPRESENTATION_INSTANCE | Nom de l'instance de représentation source. |
Démarrer la réplication sur le serveur externe
Après avoir vérifié que vous pouvez répliquer à partir du serveur externe, vous êtes prêt à effectuer la réplication.
Au cours du processus d'importation initial, n'effectuez aucune opération LDD sur le serveur externe. Cela pourrait entraîner des incohérences lors de l'importation. Une fois le processus d'importation terminé, l'instance dupliquée utilise les journaux binaires sur le serveur externe pour récupérer l'état actuel de celui-ci.
Ouvrez un terminal, connectez-vous à l'aide de gcloud
, puis saisissez la commande curl
pour répliquer à partir du serveur externe.
REST
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "SYNC_MODE", "skipVerification": "SKIP_VERIFICATION" }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/startExternalSync
exemple
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "online", "skipVerification": false }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Propriété | Description |
---|---|
SYNC_MODE | Vérifie que vous pouvez maintenir la synchronisation de l'instance dupliquée Cloud SQL avec le serveur externe une fois la réplication configurée. |
SKIP_VERIFICATION | Indique si l'étape de validation intégrée doit être ignorée ou pas avant de synchroniser vos données. Recommandé uniquement si vous avez déjà validé vos paramètres de réplication. |
PROJECT_ID | ID de votre projet dans Google Cloud. |
REPLICA_INSTANCE | ID de votre instance dupliquée Cloud SQL. |
Nettoyer l'espace de stockage
Si vous avez répliqué à partir d'un fichier dans un bucket, vous pouvez supprimer ce fichier et ce bucket. Consultez la documentation Cloud Storage sur la suppression d'objets et la suppression de buckets.
Procéder à la réplication
Une fois que vous avez démarré la réplication à partir du serveur externe, vous devez surveiller la réplication, puis terminer la migration. Pour en savoir plus, consultez la section Surveiller la réplication.
Résoudre les problèmes
Problème | Dépannage |
---|---|
Lost connection to MySQL server during query when dumping table . |
Peut-être que la source est devenue indisponible ou que le vidage contenait des paquets trop volumineux.
Assurez-vous que l'instance principale externe est disponible. Vous pouvez également modifier les valeurs des options net_read_timeout et net_write_timeout sur l'instance source afin d'arrêter l'erreur. Pour en savoir plus sur les valeurs autorisées pour ces options, consultez la page Configurer des options de base de données. Pour en savoir plus sur l'utilisation des options de |
La migration initiale des données a abouti, mais aucune donnée n'est répliquée. | Il se peut que votre base de données source ait défini des options de réplication qui empêchent la réplication de certaines ou de toutes les modifications de la base de données.
Assurez-vous que les options de réplication telles que Exécutez la commande |
La migration initiale des données a abouti, mais la réplication des données cesse de fonctionner après un certain temps. | Solutions possibles
|
mysqld check failed: data disk is full . |
Le disque de données de l'instance dupliquée est saturé.
Augmentez la taille du disque de l'instance dupliquée. Vous pouvez augmenter manuellement la taille du disque ou activer l'augmentation automatique de l'espace de stockage. |
Examiner vos journaux de réplication
Lorsque vous vérifiez les paramètres de réplication, des journaux sont générés.
Pour afficher ces journaux, procédez comme suit :
Accédez à la visionneuse de journaux dans Google Cloud Console.
- Sélectionnez l'instance répliquée Cloud SQL dans la liste déroulante Instance.
- Sélectionnez le fichier journal
replication-setup.log
.
Si l'instance dupliquée Cloud SQL ne parvient pas à se connecter au serveur externe, vérifiez les points suivants :
- Tous les pare-feu du serveur externe sont configurés pour autoriser les connexions à partir de l'adresse IP sortante de l'instance dupliquée Cloud SQL.
- Votre configuration SSL/TLS est correcte.
- Votre utilisateur de réplication, hôte et mot de passe sont corrects.
Étape suivante
- Apprenez-en plus sur la mise à jour des instances.
- Apprenez-en plus sur la gestion des instances dupliquées.
- Apprenez-en plus sur la surveillance des instances.
- Découvrez comment promouvoir votre instance dupliquée Cloud SQL afin de promouvoir l'instance dupliquée en instance autonome et d'arrêter la réplication à partir du serveur externe.