En esta página se describe cómo configurar el servidor externo para la replicación en Cloud SQL, crear una instancia de representación de origen en Cloud SQL y replicar los datos en Cloud SQL. Debes seguir todos los pasos de esta página antes de continuar con los pasos de replicación.
Una alternativa a los pasos descritos en esta página es Database Migration Service, que ofrece replicación continua o migración de bases de datos única desde un servidor externo a Cloud SQL.
Antes de empezar
Terminología
Servidor externo. El servidor MySQL externo a Cloud SQL del que quieres replicar datos. También se conoce como base de datos de origen o servidor de base de datos externo. Puede ser otra instancia de Cloud SQL o cualquier otro servidor de bases de datos, como un servidor local, Amazon Relational Database Service (RDS), etc.
Instancia de representación de origen. Una simulación de una instancia de Cloud SQL que representa el servidor externo de la réplica de Cloud SQL. Se puede ver en la consola y parece una instancia de Cloud SQL normal, pero no contiene datos, no requiere configuración ni mantenimiento, y no afecta a la facturación. Google Cloud
Réplica de Cloud SQL. La instancia de Cloud SQL que replica datos del servidor externo. También se conoce como réplica de lectura principal externa.
Cuenta de usuario de replicación. La cuenta de usuario de MySQL del servidor externo con permisos suficientes para permitir la replicación entre el servidor externo y la réplica de Cloud SQL.
Importación gestionada. Proceso de importación de datos directamente desde el servidor externo a la réplica de Cloud SQL. En esta situación, Cloud SQL se conecta al servidor externo mediante la cuenta de usuario de replicación y ejecuta el volcado de datos directamente en el servidor externo para importar datos a la réplica de Cloud SQL.
Configurar un Google Cloud proyecto
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Asegúrate de tener los roles Administrador de Cloud SQL, Administrador de Storage y Lector de Compute en tu cuenta de usuario.
Asegúrate de que MySQL 5.7, 8.0 u 8.4 esté instalado en tu servidor externo. Se admiten MySQL Community Edition, Cloud SQL para MySQL, Amazon Aurora, MySQL en Amazon RDS y Microsoft Azure Database for MySQL Flexible Server.
- Debes usar una versión principal de MySQL en tu réplica de Cloud SQL que sea igual o superior a la versión de MySQL que se ejecute en tu servidor externo.
- Si MySQL 5.5 está instalado en el servidor externo, no se admite GTID.
Asegúrate de que los registros binarios estén habilitados y de que:
- Se usa el registro binario basado en filas.
- Los registros binarios se conservan durante un periodo lo suficientemente largo como para admitir la migración de la base de datos. Por lo general, una semana es suficiente.
Anota si tu servidor externo tiene habilitado GTID. Esto afecta a los pasos que debes seguir para configurar la replicación.
Anota si tu servidor externo tiene permisos de bloqueo de lectura global. Esto afecta a los pasos que debes seguir para configurar la replicación.
Si la réplica de Cloud SQL tiene habilitada una dirección IP privada porque la dirección IP privada saliente no es estática, configura el cortafuegos del servidor externo para que permita el intervalo de IP internas asignado al acceso a servicios privados de la red de VPC que la réplica de Cloud SQL usa como red privada.
El cortafuegos del servidor de la base de datos de origen debe configurarse para permitir todo el intervalo de IPs internas asignado a la conexión de servicio privada de la red de VPC que la instancia de destino de Cloud SQL usa como campo privateNetwork de su configuración ipConfiguration.
Para encontrar el intervalo de IP internas, sigue estos pasos:
En la Google Cloud consola, ve a la página Redes de VPC.
Selecciona la red de VPC que quieras usar.
Haga clic en la pestaña Conexión de servicio privada.
Si tu servidor externo contiene cláusulas
DEFINER
(vistas, eventos, activadores o procedimientos almacenados), es posible que la replicación falle en función del orden en el que se ejecuten estas instrucciones. Consulta más información sobre elDEFINER
uso y las posibles soluciones alternativas en Cloud SQL.InnoDB es el único motor de almacenamiento compatible con Cloud SQL. Migrar con MyISAM puede provocar incoherencias en los datos y requiere que se validen. Para obtener más información, consulta el artículo Convertir tablas de MyISAM a InnoDB de la documentación de MySQL.
MySQL 5.7:
expire_logs_days
MySQL 8.0.x:
expire_logs_days
,binlog_expire_logs_seconds
MySQL 8.4:
binlog_expire_logs_seconds
Asigna a
binlog_expire_logs_seconds
un periodo lo suficientemente largo como para que se pueda completar la migración de la base de datos.Para obtener más información, consulta el artículo Configurar parámetros de servidor en Azure Database for MySQL y el parámetro
binlog_expire_logs_seconds
en la documentación de Microsoft.Reinicia el servidor para que los cambios que has realizado surtan efecto.
SSL_OPTION_UNSPECIFIED:
la base de datos de destino se conecta a la base de datos de origen sin cifrado.DISABLED:
SSL se desactiva cuando la réplica se conecta a la base de datos de origen.REQUIRE:
Se requiere SSL para que la réplica se conecte a la base de datos de origen.VERIFY_CA:
usa este parámetro para especificar si se usa la autenticación solo del servidor o la autenticación del servidor y del cliente como parte del cifrado SSL/TLS para conectar las bases de datos de origen y de destino.Para usar la autenticación solo del servidor, en la variable
SOURCE_CERT
, debes proporcionar el certificado x509 codificado en PEM de la autoridad de certificación (CA) que firmó el certificado del servidor externo.Para usar la autenticación de servidor a cliente, haz los siguientes cambios:
SOURCE_CERT:
proporciona el certificado de la CA que firmó el certificado del servidor de la base de datos de origenCLIENT_CERT:
proporciona el certificado que usa la base de datos de destino para autenticarse en el servidor de la base de datos de origenCLIENT_KEY:
proporciona la clave privada asociada al certificado de cliente
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
Junto a la dirección IP pública de la réplica de Cloud SQL, coloca el puntero sobre la descripción emergente Más información y recupera la dirección IP saliente.
Ten en cuenta que la dirección IP saliente no es la dirección IP que se muestra en la lista principal de la réplica en la consola. Google Cloud
- El servidor externo está protegido por un cortafuegos o por alguna otra restricción de red.
- Tu réplica de Cloud SQL usa una IP pública.
- El host, el puerto o la IP del servidor externo cambian.
- Quieres usar otro usuario de replicación de MySQL.
- Cambia la contraseña del usuario de replicación de MySQL.
- Los certificados SSL que se usan para conectar de forma segura con el servidor externo cambian.
- Una importación gestionada usa un servicio que extrae datos del servidor externo y los importa directamente a la instancia de Cloud SQL. Cloud SQL recomienda esta opción. Debes usar esta opción si tu servidor externo no usa la replicación del identificador de transacción global (GTID). Para obtener más información, consulta Usar una importación gestionada para configurar la replicación desde bases de datos externas.
- Para usar un archivo de volcado, debes crear un archivo de volcado de tu servidor externo, moverlo a un segmento de Cloud Storage e importarlo a Cloud SQL. Solo puedes usar esta opción si tu servidor externo usa la replicación de GTID. Para obtener más información, consulta el artículo sobre cómo usar un archivo de volcado para configurar la replicación desde bases de datos externas.
- Para hacer una importación personalizada, debes crear una instancia principal de Cloud SQL, importar los datos de forma personalizada con las herramientas que prefieras, degradarla a réplica de Cloud SQL y, a continuación, configurar la replicación de servidores externos. Esta opción es la más adecuada para migraciones de bases de datos de varios terabytes, pero debes usar la replicación de GTID. Para obtener más información, consulta el artículo Usar una importación personalizada para configurar la replicación a partir de bases de datos externas de gran tamaño.
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- En MySQL 5.7 o versiones posteriores, habilita la replicación.
- Haz clic en la pestaña Réplicas de la réplica que actuará como elemento superior de la réplica que quieras crear.
- Haz clic en Crear réplica.
- En la página Crear réplica de lectura, actualice el ID de la instancia y cualquier otra opción de configuración, como el nombre, la región y la zona.
- Haz clic en Crear.
Cloud SQL crea una réplica. Se te redirigirá a la página de la instancia de la réplica principal.
- Sigue los pasos del 4 al 6 para cada réplica en cascada que quieras crear.
- Si usas la versión 5.7 o una posterior de MySQL, habilita los registros binarios en la instancia principal de la nueva réplica:
Sustituye PARENT_REPLICA_NAME por el nombre de la réplica principal.gcloud sql instances patch --enable-bin-log --project=cascade-replica PARENT_REPLICA_NAME
- Crea la réplica especificando tu réplica de Cloud SQL como instancia principal con la marca
--master-instance-name
: - REPLICA_NAME: ID único de la réplica que estás creando.
- PARENT_REPLICA_NAME: el nombre de la réplica de Cloud SQL
Una vez creada la réplica, puedes ver que los cambios realizados en la instancia principal se replican en todas las réplicas de la cadena de réplicas en cascada.
- Si usas la versión 5.7 o posterior de MySQL, habilita el registro binario:
Para habilitar el registro binario, guarda el siguiente JSON en un archivo llamado request.JSON y, a continuación, invoca el comando curl para habilitar el registro binario.
{ "settings": { "backupConfiguration": { "enabled": false, "binaryLogEnabled": true } } }
- Para crear una réplica en la réplica principal, edita el siguiente ejemplo de código JSON y guárdalo en un archivo llamado
request.json
:{ "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Ejecuta el siguiente comando:
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"
- Promueve la réplica a una instancia principal. Ten en cuenta que los GTID y los registros binarios están activados, y que las copias de seguridad programadas están habilitadas en la réplica ascendida.
- Añade réplicas de lectura a tu instancia.
- Opcional: Configura tu instancia para alta disponibilidad.
Para evitar que haya más tiempo de inactividad, puedes habilitar la alta disponibilidad mientras configuras una réplica. Para ello, define
AVAILABILITY_TYPE
comoREGIONAL
. - Consulta cómo usar una importación personalizada para configurar la replicación a partir de bases de datos externas de gran tamaño.
- Consulta cómo usar un archivo de volcado para configurar la replicación desde bases de datos externas.
- Consulte cómo usar una importación gestionada para configurar la replicación desde bases de datos externas.
Instala el Google Cloud SDK
Para configurar la replicación, instala Google Cloud el SDK en tu servidor externo. Puede que quieras instalar el SDK en tu servidor externo, a menos que ya esté instalado en otro lugar.
Configurar el servidor externo para la replicación
Lista de comprobación de servidores externos
Configurar la conservación de registros binarios
Debes configurar tu servidor externo para que conserve los registros binarios durante al menos 24 horas.
Comunidad de MySQL
Si tu servidor externo usa MySQL Community Edition, puedes usar estos comandos de MySQL para actualizar la configuración de retención de registros binarios.
Cloud SQL para MySQL
Si tu servidor externo usa Cloud SQL para MySQL, los registros binarios se conservan durante siete días de forma predeterminada. Puedes cambiar este ajuste.
Amazon RDS y Aurora
Si tu servidor externo es una instancia de Amazon RDS, puedes usar este comando para actualizar la configuración de conservación de registros binarios:
call mysql.rds_set_configuration('binlog retention ', HOURS);
Propiedad | Descripción |
---|---|
HORAS | Número total de horas de registros binarios que debe conservar la instancia de Amazon RDS. |
Para obtener más información, consulta mysql.rds_set_configuration.
Microsoft Azure
El almacenamiento de registros binarios está habilitado de forma predeterminada. Para obtener más información, consulta la documentación de Microsoft.
Crear una cuenta de usuario de replicación
En tu servidor externo debe haber una cuenta de usuario de MySQL dedicada a gestionar la replicación en la réplica de Cloud SQL. Esta cuenta de usuario solo debe usarse para gestionar la replicación. En función del método de migración que utilices, es posible que tengas que conceder permisos al usuario más adelante.
Para añadir una cuenta de usuario de replicación, abre una terminal en el servidor externo e introduce estos comandos de MySQL:
MySQL
CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD'; GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST'; FLUSH PRIVILEGES;
Ejemplo
CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Propiedad | Descripción |
---|---|
USERNAME | La cuenta de usuario de replicación del servidor externo. |
PASSWORD | La contraseña de la cuenta de usuario de replicación. |
HOST | Define este valor como % para aceptar todas las conexiones de cualquier host.
En un paso posterior, se cambia para que solo acepte conexiones de la réplica de Cloud SQL. |
Configurar una instancia de representación de la fuente
La instancia de representación de origen hace referencia al servidor externo. Solo contiene los datos de la solicitud del servidor externo. Crea los datos de la solicitud
y úsalos en un comando curl
que cree la instancia de representación de la fuente
en Cloud SQL.
Crear los datos de la solicitud
Los datos de la solicitud contienen información básica sobre tu servidor externo en formato JSON. Los datos de la solicitud se pueden configurar para una réplica de Cloud SQL en una red pública o privada, y deben contener esta información.
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", "sslOption": "SSL_OPTION" } }
Ejemplo de importación gestionada
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@",
"sslOption": "REQUIRE"
}
}
Ejemplo de archivo de volcado
// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TLS
{
"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",
"sslOption": "REQUIRE"
}
}
Ejemplo de importación personalizada
// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@",
"sslOption": "REQUIRE"
}
}
Propiedad | Descripción |
---|---|
SOURCE_NAME | Nombre de la instancia de representación de origen que se va a crear. |
REGION | La región en la que quieres que resida la instancia de representación de origen. |
DATABASE_VERSION | La versión de la base de datos que se ejecuta en tu servidor externo. Las opciones son MYSQL_5_7 , MYSQL_8_0 o MYSQL_8_4 . |
SOURCE HOST | La dirección IPv4 y el puerto del servidor externo, o la dirección DNS del servidor externo. Si usas una dirección DNS, puede contener hasta 60 caracteres. Si el servidor externo está alojado en Cloud SQL, el puerto es 3306 . |
USERNAME | La cuenta de usuario de replicación del servidor externo. |
PASSWORD | La contraseña de la cuenta de usuario de replicación. |
BUCKET | El nombre del segmento que contiene el archivo de volcado. Inclúyalo solo si va a configurar la replicación con un archivo de volcado que se encuentre en un segmento de Cloud Storage. |
DUMP_FILE | Un archivo del contenedor que contiene los datos del servidor externo. |
CLIENT_CA_CERT | El certificado de la AC en el servidor externo. Inclúyalo solo si se usa SSL/TLS en el servidor externo. |
CLIENT_CERT | El certificado de cliente del servidor externo. Solo es necesario para la autenticación de cliente y servidor. Inclúyalo solo si se usa SSL/TLS en el servidor externo. |
CLIENT_KEY | El archivo de clave privada del certificado de cliente en el servidor externo. Solo es necesario para la autenticación de cliente-servidor. Inclúyalo solo si se usa SSL/TLS en el servidor externo. |
SSL_OPTION | Indica si se usa el cifrado SSL/TLS para establecer una conexión entre la base de datos de origen de Microsoft Azure y la base de datos de destino de Cloud SQL. Puede especificar los siguientes valores para este parámetro: El valor predeterminado de este parámetro es |
Crear una instancia de representación de origen
Antes de empezar este paso, crea un archivo JSON que contenga los datos de tu solicitud de origen.
A continuación, para crear la instancia de representación de origen en Cloud SQL, abre una terminal y ejecuta los siguientes comandos:
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
Ejemplo
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
Propiedad | Descripción |
---|---|
PROJECT_ID | El ID de tu proyecto en Google Cloud. |
JSON_PATH | Ruta al archivo JSON que contiene los datos de la solicitud del servidor externo. |
Actualizar una instancia de representación de origen
Si actualiza los datos de la solicitud del servidor externo, puede actualizar la instancia de representación de origen para que use los valores modificados.
Modificar los datos de la solicitud
Actualiza los datos de la solicitud para incluir los campos que hayan cambiado. Esto incluye los campos hostPort
, username
, password
, caCertificate
, clientCertificate
y clientKey
. Después de actualizar los datos de la solicitud, úsalos en un comando curl
para actualizar la instancia en Cloud SQL.
En el siguiente ejemplo se muestra cómo actualizar los campos username
y password
con un nombre de usuario y una contraseña diferentes:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "username": "NEW_USERNAME", "password": "NEW_PASSWORD" } }
Ejemplo de importación gestionada
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
Ejemplo de archivo de volcado
// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "486#@%*@"
}
}
Ejemplo de importación personalizada
// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "486#@%*@"
}
}
Propiedad | Descripción |
---|---|
SOURCE_NAME | Nombre de la instancia de representación de origen. |
REGION | La región en la que se encuentra la instancia de representación de origen. |
DATABASE_VERSION | La versión de la base de datos que se ejecuta en tu servidor externo. Las opciones son
MYSQL_5_6 , MYSQL_5_7 , MYSQL_8_0 o MYSQL_8_4 .
|
NEW_USERNAME | La nueva cuenta de usuario de replicación en el servidor externo. |
NEW_PASSWORD | La contraseña de la nueva cuenta. |
Modificar una instancia de representación de origen
Antes de empezar este paso, crea un archivo JSON que contenga los datos de la solicitud modificados.
A continuación, para modificar la instancia de representación de origen en Cloud SQL, abre una terminal y ejecuta los siguientes comandos:
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
Ejemplo
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
Propiedad | Descripción |
---|---|
PROJECT_ID | El ID de tu proyecto en Google Cloud. |
JSON_PATH | Ruta al archivo JSON que contiene los datos de la solicitud del servidor externo. |
SOURCE_NAME | Nombre de la instancia de representación de origen. |
Configurar una réplica de Cloud SQL
La réplica de Cloud SQL acabará conteniendo los datos del servidor externo. En este paso, creará los datos de la solicitud y los usará en un comando curl
que cree la réplica de Cloud SQL en Cloud SQL.
Crear los datos de la solicitud
Los datos de la solicitud contienen información básica sobre tu servidor externo y tu réplica de Cloud SQL en formato JSON. Los datos de la solicitud se pueden configurar para una réplica de Cloud SQL en una red pública o privada, y deben contener esta información:
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" }
Ejemplo
{ "settings": { "tier": "db-custom-4-15360", "dataDiskSizeGb": "100" }, "masterInstanceName": "source-instance", "region": "us-central1", "databaseVersion": "MYSQL_8_0", "name": "replica-instance" }
Propiedad | Descripción |
---|---|
TIER | El tipo de máquina en el que se alojará tu instancia de réplica. Si no sabes qué tipo de máquina usar, empieza con db-custom-2-7680 . Puedes cambiar su tamaño y otros valores admitidos más adelante si es necesario. |
DISK_SIZE | Tamaño de almacenamiento de la réplica de Cloud SQL, en GB. |
PUBLIC_IP_STATUS | Determina si se ha asignado una dirección IP pública a la instancia. De forma predeterminada, el valor de esta propiedad es true .
Para desactivar la asignación de una dirección IP pública a la réplica, asigna el valor false .
Si tu proyecto tiene habilitada la constraints/sql.restrictPublicIp política de la organización, para crear la réplica de Cloud SQL, debes asignar el valor false a la propiedad ipv4Enabled . Para obtener más información sobre cómo desactivar la asignación de direcciones IP públicas, consulta Inhabilitar una IP pública. |
PROJECT_ID | Si la réplica de Cloud SQL está en una red privada, incluye la propiedad privateNetwork en el archivo replica.json .
En PROJECT_ID, especifica el ID de tu proyecto en Google Cloud. |
NETWORK_NAME | Nombre de la red privada que se va a usar con la réplica de Cloud SQL. |
AVAILABILITY_TYPE | Tipo de disponibilidad de la réplica de Cloud SQL. De forma predeterminada, el valor es ZONAL . Para que la réplica tenga alta disponibilidad, asigna el valor REGIONAL . Para obtener información sobre los valores permitidos, consulte SqlAvailabilityType.
Después de crear una réplica de alta disponibilidad de un servidor externo, no puedes cambiarla a una réplica que no sea de alta disponibilidad. Esto también es cierto a la inversa. No puedes cambiar una réplica sin alta disponibilidad de un servidor externo a una réplica con alta disponibilidad. La conmutación por error manual puede provocar una migración irrecuperable si se intenta cuando la instancia aún está cargando los datos iniciales, o un tiempo de inactividad temporal si la instancia ya está replicando desde la fuente. Comprueba el estado de la réplica. |
SOURCE_REPRESENTATION_INSTANCE_NAME | Nombre de la instancia de representación de origen. |
SOURCE_REGION | La región asignada a la instancia de representación de origen. |
DATABASE_VERSION | Versión de la base de datos que se va a usar con la réplica de Cloud SQL. Las opciones de esta versión son MYSQL_5_6 , MYSQL_5_7 , MYSQL_8_0 o MYSQL_8_4 .
La versión de la base de datos que se ejecuta en tu servidor externo debe coincidir con la versión de la base de datos de origen o ser una versión posterior. |
REPLICA_NAME | Nombre de la réplica de Cloud SQL que se va a crear. |
Crear la réplica de Cloud SQL
Antes de empezar este paso, crea un archivo JSON que contenga los datos de tu solicitud de réplica. A continuación, para crear una réplica de Cloud SQL, abre un terminal de Cloud Shell y ejecuta estos comandos:
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
Ejemplo
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
Propiedad | Descripción |
---|---|
PROJECT_ID | El ID de tu proyecto en Google Cloud, que debe ser el mismo que el de la instancia de origen. |
JSON_PATH | Ruta al archivo JSON que contiene los datos de la solicitud de la réplica de Cloud SQL. |
Verificar la configuración
Para comprobar que las instancias se han configurado correctamente, vaya a la página Instancias de Cloud SQL.
Deberías ver tu instancia de representación de origen y la réplica de Cloud SQL en una lista similar a la siguiente:
ID de instancia | Tipo | IP pública |
---|---|---|
(-) source-representation-instance | Base de datos externa principal | 10.68.48.3:3306 |
replica-instance | Réplica de lectura de la base de datos | 34.66.48.59 |
También debes asegurarte de que tienes el permiso cloudsql.instances.migrate
en la réplica de Cloud SQL. Este permiso se incluye en los roles de gestión de identidades y accesos cloudsql.admin
o cloudsql.editor
.
Añadir usuarios a la réplica de Cloud SQL
No puedes importar cuentas de usuario de bases de datos desde el servidor externo, pero sí crearlas en una réplica de Cloud SQL. Hazlo antes de replicar desde el servidor externo.
Obtener la dirección IP saliente de la réplica de Cloud SQL
Puedes usar la dirección IP de salida de la réplica de Cloud SQL para crear una conexión segura entre el servidor externo y la réplica de Cloud SQL. No se te cobrará por esta dirección IP.
Consola
Para obtener la dirección IP saliente de la réplica, haz lo siguiente:
gcloud
Para obtener la dirección IP saliente de la réplica, ejecuta el siguiente comando:
gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Propiedad | Descripción |
---|---|
REPLICA_NAME | Nombre de la réplica de Cloud SQL cuya dirección IP pública saliente quieres obtener. |
Permitir conexiones entrantes en el servidor externo
La réplica de Cloud SQL debe conectarse al servidor externo para que la replicación se realice correctamente. Debes configurar el cortafuegos de red de tu servidor externo para que acepte conexiones de la dirección IP de salida de la réplica de Cloud SQL si se cumplen las siguientes condiciones:
Para conectarte a la réplica de Cloud SQL, usa la dirección IP principal de la réplica. Esta dirección IP se muestra en la consola Google Cloud .
Actualiza la instancia de representación de origen para permitir la replicación en la réplica de Cloud SQL
Después de configurar la instancia de representación de origen para la réplica de Cloud SQL, es posible que tengas que actualizar la instancia de representación de origen. Por ejemplo, en estos casos, debes actualizar tus configuraciones:
Inicializar la réplica de Cloud SQL
Hay tres opciones para realizar la carga inicial de datos desde el servidor externo a la réplica de Cloud SQL:
¿Qué opción es la adecuada para ti?
Supervisar replicación
Cuando la réplica de Cloud SQL termina de cargar los datos iniciales, se conecta al servidor externo y aplica todas las actualizaciones que se hayan realizado después de la operación de exportación. Confirme el estado de la réplica.
Es importante comprobar el estado de la réplica antes de convertirla en una instancia independiente. Si el proceso de replicación no se completa correctamente, la réplica promovida no tendrá todos los cambios del servidor externo.
Si la latencia de replicación no tiende a 0, toma medidas para solucionarlo.
Te recomendamos que consultes las siguientes métricas: /postgresql/external_sync/initial_sync_complete
, postgresql/external_sync/max_replica_byte_lag
y database/replication/state
. Consulta la lista de métricas de Cloud SQL.
Una vez que la réplica de Cloud SQL se haya puesto al día con el servidor externo y no haya ningún retraso en la replicación en la réplica de Cloud SQL, conéctate a tu base de datos. Ejecuta los comandos de base de datos adecuados para asegurarte de que el contenido es el esperado en comparación con el servidor externo. Conserva tu servidor externo hasta que se hayan realizado las validaciones necesarias.
Configurar una réplica en cascada
Después de la migración, puedes crear réplicas de lectura en cascada en tu réplica de Cloud SQL antes de convertirla en instancia principal.
Solo puedes crear réplicas en cascada para tu instancia de Cloud SQL si usas la replicación GTID.Para crear una réplica en cascada, ejecuta los siguientes comandos:
Consola
gcloud
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
Promocionar la réplica
Promociona tu réplica siguiendo estos pasos: