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 PostgreSQL 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 PostgreSQL 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
Cloud SQL permet d'effectuer des migrations continues à partir de bases de données sources vers des bases de données de destination Cloud SQL.
Les bases de données sources compatibles avec PostgreSQL incluent :
- Service PostgreSQL autogéré (sur site ou sur une VM cloud que vous contrôlez entièrement) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16 et 17
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16 et 17
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14, 15, 16 et 17
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16 et 17
Pour configurer votre source, vous devez configurer à la fois l'instance source et les bases de données sources sous-jacentes.
Checklist du serveur externe
Si l'instance répliquée Cloud SQL est activée avec une adresse IP privée, car 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 privé aux services 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é.
Configurer l'instance source
Pour configurer votre instance source, procédez comme suit :
- Si votre instance source n'inclut pas la base de données
postgres
, créez-la. - Installez le package pglogical sur l'instance source
Définissez les paramètres suivants, si nécessaire.
Si l'instance PostgreSQL source est Amazon RDS, incluez ces paramètres dans un nouveau groupe de paramètres et associez le groupe de paramètres à l'instance.
Si la source est Cloud SQL, définissez les options
cloudsql.logical_decoding
etcloudsql.enable_pglogical
suron
.Pour activer des options dans Cloud SQL, consultez la page Configurer des options de base de données.
Définissez
shared_preload_libraries
de façon à inclurepglogical
à l'aide de la commande suivante :ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Définissez
wal_level
surlogical
à l'aide de la commande suivante :ALTER SYSTEM SET wal_level = 'logical';
Si l'instance PostgreSQL source est Amazon RDS, pour activer les journaux WAL au niveau
logical
, définissez le paramètrerds.logical_replication
sur1
.Définissez
wal_sender_timeout
sur0
à l'aide de la commande suivante :ALTER SYSTEM SET wal_sender_timeout = 0;
La valeur
0
désactive le mécanisme de délai avant expiration utilisé pour interrompre les connexions de réplication inactives.Définissez max_replication_slots sur le nombre maximal d'emplacements de réplication que l'instance source peut accepter. Exécutez la commande suivante, après avoir remplacé # par le nombre :
ALTER SYSTEM SET max_replication_slots = #;
Cloud SQL requiert un emplacement pour chaque base de données migrée. Spécifiez au moins le nombre d'abonnements attendus, avec certaines réserves pour la synchronisation des tables.
Par exemple, si l'instance source dispose de cinq bases de données et que deux tâches de migration sont créées pour cette source, le nombre d'emplacements de réplication doit être supérieur ou égal à 5 x 2 = 10, en plus du nombre d'emplacements de réplication que vous utilisez déjà.
Définissez max_wal_senders sur une valeur au moins égale à celle de
max_replication_slots
, en plus du nombre d'expéditeurs déjà utilisés sur votre instance. Exécutez la commande suivante en remplaçant # par le nombre total de processus d'envoi WAL exécutés simultanément :ALTER SYSTEM SET max_wal_senders = #;
Par exemple, si le paramètre
max_replication_slots
est défini sur10
et que vous utilisez déjà deux expéditeurs, le nombre de processus d'envoi WAL exécutés en même temps est de 10 + 2 = 12.Définissez max_worker_processes, au minimum, sur un nombre égal à la somme du nombre de bases de données de l'instance source et du nombre de processus de calcul déjà utilisés sur l'instance. Exécutez la commande suivante, en remplaçant # par le nombre total :
ALTER SYSTEM SET max_worker_processes = #;
- Si l'instance dupliquée Cloud SQL utilise une adresse IP privée, 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 de l'instance dupliquée.
- Pour appliquer les modifications de configuration, redémarrez l'instance source.
Les paramètres que vous définissez à cette étape s'appliquent à un serveur de base de données PostgreSQL en cours d'exécution. Vous pouvez également rendre ces modifications persistantes en les incluant dans le fichier postgresql.conf
.
Activer la surveillance du délai de réplication pour les versions PostgreSQL antérieures à 9.6
Si vous effectuez une migration depuis une version PostgreSQL antérieure à 9.6, la métrique de délai de réplication n'est pas disponible par défaut. Vous pouvez utiliser l'une des trois options suivantes pour suivre cette métrique et garantir un temps d'arrêt minimal lorsque vous promouvez la base de données :
Option 1 : activez le serveur externe Cloud SQL pour suivre le délai de réplication en accordant l'accès à une requête spécifique. À l'aide d'un utilisateur disposant du droit
SUPERUSER
, procédez comme suit :Définissez la fonction suivante pour permettre au serveur externe d'interroger le délai de réplication.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
Accordez l'autorisation
EXECUTE
à l'utilisateur en exécutant les commandes suivantes :REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Option 2 : accordez le privilège
SUPERUSER
directement à l'utilisateur utilisé pour se connecter à l'instance source. Cela permet au serveur externe de lire directement le délai de réplication.Option 3 : suivez le délai de réplication indépendamment à l'aide de la requête suivante :
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
Dans cette option, Cloud SQL ne reflète pas la métrique de délai de réplication dans les graphiques ou les réponses de l'API.
Configurer vos bases de données sources
Le serveur externe Cloud SQL migre toutes les bases de données de votre instance source, sauf les éléments suivants :
- Pour les sources sur site : bases de données de modèles
template0
ettemplate1
- Pour les sources Amazon RDS :
template0
,template1
etrdsadmin
- Pour les sources Cloud SQL : bases de données de modèles
template0
ettemplate1
Effectuez les opérations suivantes sur chaque base de données de votre instance source qui ne figure pas dans la liste précédente :
Pour installer l'extension
pglogical
, exécutez la commande suivante sur chaque base de données de votre instance source :CREATE EXTENSION IF NOT EXISTS pglogical
Pour les tables sans clé primaire, Cloud SQL accepte la migration de l'instantané initial et des instructions
INSERT
pendant la phase de capture de données modifiées (CDC pour "Change Data Capture"). Migrez les instructionsUPDATE
etDELETE
manuellement.Connectez-vous à l'instance et exécutez les commandes suivantes pour définir des droits pour l'utilisateur sur chacune des bases de données migrées, ainsi que pour la base de données
postgres
par défaut.L'utilisateur que vous utilisez pour vous connecter à l'instance source est configuré en tant qu'utilisateur sur la page Profils de connexion. Vous pouvez créer un utilisateur ou réutiliser un utilisateur existant.
Sur tous les schémas de chaque base de données à migrer, à l'exception du schéma d'informations et des schémas commençant par
pg_
, exécutez la commande suivante :GRANT USAGE on SCHEMA schema to username; GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username; GRANT SELECT on ALL TABLES in SCHEMA schema to username;
Sur chaque base de données à migrer, exécutez la commande suivante :
GRANT USAGE on SCHEMA pglogical to PUBLIC;
Pour obtenir les informations de réplication des bases de données sources,sur toutes les bases de données, exécutez la commande suivante :
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Si la source est Amazon RDS, exécutez la commande suivante :
GRANT rds_replication to username;
Sinon, exécutez la commande suivante :
ALTER USER username with REPLICATION;
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": "POSTGRES_9_6",
"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 POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 ou POSTGRES_17 . |
SOURCE HOST | Adresse IPv4 et port du serveur externe, ou adresse DNS du serveur externe.
Si le serveur externe est hébergé sur Cloud SQL, le port est 5432 . |
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": "POSTGRES_9_6",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
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 POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 ou POSTGRES_17 . |
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": "POSTGRES_16", "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 POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 ou POSTGRES_17 .
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:5432 |
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 PostgreSQL.
- Le mot de passe de l'utilisateur de réplication PostgreSQL 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
Pour le chargement initial des données du serveur externe dans l'instance dupliquée Cloud SQL, utilisez une importation gérée. Il utilise un service qui extrait les données du serveur externe et les importe directement dans l'instance Cloud SQL. 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.
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.
Pour créer une instance répliquée en cascade, exécutez les commandes suivantes :
Console
-
Dans la console Google Cloud, accédez à la page Instances Cloud SQL.
- Cliquez sur l'onglet Instances répliqué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
- 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
: - 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.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- 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.
- 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
.
Limites
Si vous installez des extensions sur vos bases de données sources externes que Cloud SQL n'est pas compatible, Cloud SQL ne les migrera pas lorsque vous migrerez les bases de données vers une instance de destination. Pour assurer une migration fluide, vérifiez qu'aucun objet ni aucune application ne fait référence aux extensions. Avant de procéder à la migration, nous vous recommandons de supprimer les extensions ainsi que toutes les références des bases de données sources.
Pour en savoir plus sur les extensions compatibles avec Cloud SQL, consultez Configurer des extensions PostgreSQL.
Si vous installez l'extension
pg_cron
sur vos bases de données sources externes, Cloud SQL ne migre pas l'extension ni les paramètrescron
associés à l'extension lorsque vous migrez les bases de données vers une instance de destination. Après avoir migré les bases de données et promu le réplica, Google vous recommande de réactiver l'extensionpg_cron
sur chaque base de données migrée.
Étape suivante
- Découvrez comment configurer l'importation gérée à partir de bases de données externes.