En esta página, se describe cómo configurar tu servidor externo para la replicación a 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 el Database Migration Service, que ofrece replicación continua o migración única de base de datos de un servidor externo a Cloud SQL.
Antes de comenzar
Terminología
Servidor externo. Es el servidor MySQL externo a Cloud SQL desde el que deseas replicar los datos. También se conoce como la base de datos de origen o el servidor de la base de datos externa. Puede ser otra instancia de Cloud SQL o cualquier otro servidor de bases de datos, como uno local, Amazon Relational Database Service (RDS), etcétera.
Instancia de representación de origen. Una simulación de una instancia de Cloud SQL que representa al servidor externo para la réplica de Cloud SQL. Es visible en la consola de Google Cloud y aparece como una instancia normal de Cloud SQL, pero no contiene datos, no requiere configuración ni mantenimiento, ni afecta la facturación.
Réplica de Cloud SQL. La instancia de Cloud SQL que se replica desde el servidor externo. También se conoce como la réplica de lectura principal externa.
Cuenta de usuario de replicación. Es la cuenta de usuario de MySQL en el servidor externo con permisos suficientes para permitir la replicación entre el servidor externo y la réplica de Cloud SQL.
Importación administrada. Es el 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.
Configura un proyecto de 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.
-
Asegúrate de tener las funciones de administrador de Cloud SQL, administrador de almacenamiento y visualizador de Compute en tu cuenta de usuario.
Instala el SDK de Google Cloud
Si quieres configurar la replicación, instala el SDK de Google Cloud para tu servidor externo. Es posible que desees instalar el SDK en tu servidor externo, a menos que ya esté instalado en otro lugar.
Configura el servidor externo para la replicación
Lista de tareas del servidor externo
Asegúrate de tener MySQL 5.5, 5.6, 5.7 o 8.0 instalado en el servidor externo. Se admiten MySQL Community Edition, Cloud SQL para MySQL, Amazon Aurora y MySQL en Amazon RDS.
- 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 ejecuta en tu servidor externo.
- Si MySQL 5.5 está instalado en el servidor externo, GTID no es compatible.
Asegúrate de que los registros binarios estén habilitados y de que suceda lo siguiente:
- Se use el registro binario basado en filas
- Los registros binarios se conserven durante un período lo suficientemente extenso como para admitir la migración de la base de datos. Por lo general, una semana es suficiente
Observa si tu servidor externo tiene habilitado GTID. Esto afecta los pasos que debes seguir para configurar la replicación.
Observa si tu servidor externo tiene permisos globales de bloqueo de lectura. Esto afecta los pasos que debes seguir para configurar la replicación.
Si la réplica de Cloud SQL está habilitada con una dirección IP privada porque la dirección IP privada saliente no es estática, configura el firewall del servidor externo a fin de permitir el rango de IP internas asignado para la privada acceso a servicios de la red de VPC que usa la réplica de Cloud SQL como su red privada.
El firewall del servidor de la base de datos de origen debe configurarse para permitir todo el rango de IP interna asignado a la conexión privada a servicios de la red de VPC a la que se dirige el destino de Cloud SQL. Instancia como el campo privateNetwork de su configuración de ipConfiguration.
Para encontrar el rango de IP interna, haz lo siguiente:
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que deseas usar.
Haz clic en la pestaña Conexión privada al servicio.
Si el servidor externo contiene cláusulas
DEFINER
(vistas, eventos, activadores o procedimientos almacenados), según el orden en el que se ejecuten estas declaraciones, la replicación podría fallar. Obtén más información sobre el uso deDEFINER
y las posibles soluciones alternativas en Cloud SQL.InnoDB es el único motor de almacenamiento compatible con Cloud SQL. La migración con MyISAM puede causar incoherencia de datos y requiere una validación de datos. Para obtener más información, consulta la página sobre cómo convertir tablas de MyISAM en InnoDB en la documentación de MySQL.
Configura la retención de registros binarios
Debes configurar el servidor externo para que retenga registros binarios por al menos 24 horas.
Comunidad de MySQL
Si el servidor externo usa MySQL Community Edition, puedes usar estos comandos de MySQL para actualizar la configuración de retención de registros binarios.
MySQL 5.5 a 5.7:
expire_logs_days
MySQL 8.0:
expire_logs_days
,binlog_expire_logs_seconds
Cloud SQL para MySQL
Si el servidor externo usa Cloud SQL para MySQL, de forma predeterminada, los registros binarios se conservan durante siete días. Para cambiar esta configuración, haz lo siguiente:
Amazon RDS y Aurora
Si el servidor de la base de datos de origen es una instancia de Amazon RDS, puedes usar este comando para actualizar la configuración de retención de registros binarios:
call mysql.rds_set_configuration('binlog retention ', HOURS);
Propiedad | Descripción |
---|---|
HORAS | La cantidad total de horas de registros binarios que se conservarán en la instancia de Amazon RDS. |
Para obtener más información, consulta mysql.rds_set_configuration.
Crea una cuenta de usuario de replicación
Debe haber una cuenta de usuario MySQL dedicada a administrar la replicación en la réplica de Cloud SQL en tu servidor externo. Esta cuenta de usuario solo debe usarse para administrar la replicación. Según el enfoque de migración que uses, es posible que debas otorgar permisos al usuario más adelante.
Para agregar una cuenta de usuario de replicación, abre una terminal en el servidor externo e ingresa 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 en el servidor externo. |
PASSWORD | Es la contraseña de la cuenta de usuario de replicación. |
HOST | Configúralo como % para aceptar todas las conexiones desde cualquier host.
En un paso posterior, esto se cambia para aceptar solo las conexiones de la réplica de Cloud SQL. |
Configura una instancia de representación de origen
La instancia de representación de origen hace referencia al servidor externo. Solo contiene los datos de solicitud del servidor externo. Crea los datos de la solicitud y úsalos en un comando de curl
que cree la instancia de representación de origen en Cloud SQL.
Crea 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 la siguiente 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" } }
Ejemplo de importación administrada
// 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#@%*@"
}
}
Ejemplo de archivo de volcado
// 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"
}
}
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/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@"
}
}
Propiedad | Descripción |
---|---|
SOURCE_NAME | Es el nombre de la instancia de representación de origen que se creará. |
REGION | Es la región en la que quieres que resida la instancia de representación de origen. |
DATABASE_VERSION | Es la versión de la base de datos que se ejecuta en el servidor externo. Las opciones son MYSQL_5_6 , MYSQL_5_7 o MYSQL_8_0 .
. |
SOURCE HOST | Es la dirección IPv4 y el puerto del servidor externo, o la dirección de DNS para el servidor externo.
Si usas una dirección de DNS, puede contener hasta 60 caracteres.
Si el servidor externo se aloja en Cloud SQL, el puerto es 3306 . |
USERNAME | La cuenta de usuario de replicación en el servidor externo. |
PASSWORD | Es la contraseña de la cuenta de usuario de replicación. |
BUCKET | Es el nombre del bucket que contiene el archivo de volcado. Solo debes incluirlo si configuras la replicación con un archivo de volcado que existe en un bucket de Cloud Storage. |
DUMP_FILE | Es un archivo en el bucket que contiene los datos del servidor externo. |
CLIENT_CA_CERT | Es el certificado de CA en el servidor externo. Solo debes incluirlo si usas SSL/TLS en el servidor externo. |
CLIENT_CERT | Es el certificado de cliente en el servidor externo. Solo es obligatorio para la autenticación del servidor y del cliente. Solo debes incluirlo, si usas SSL/TLS en el servidor externo. |
CLIENT_KEY | El archivo de claves privadas para el certificado de cliente en el servidor externo. Solo es obligatorio para la autenticación del servidor y del cliente. Solo debes incluirlo, si usas SSL/TLS en el servidor externo. |
Crea una instancia de representación de origen
Antes de comenzar con este paso, crea un archivo JSON que contenga los datos de tu solicitud de origen.
Luego, 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 | Es el ID de tu proyecto en Google Cloud. |
JSON_PATH | Es la ruta al archivo JSON que contiene los datos de solicitud del servidor externo. |
Actualiza una instancia de representación de origen
Si actualizas los datos de la solicitud del servidor externo, puedes actualizar la instancia de representación de origen existente para que use los valores modificados.
Modifica los datos de la solicitud
Actualiza los datos de la solicitud para incluir los campos que cambiaron. Esto incluye los campos hostPort
, username
, password
, caCertificate
, clientCertificate
y clientKey
. Después de actualizar los datos de la solicitud, úsalos en un comando de 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 administrada
// 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#@%*@"
}
}
Ejemplo de archivo de volcado
// 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#@%*@"
}
}
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/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "486#@%*@"
}
}
Propiedad | Descripción |
---|---|
SOURCE_NAME | Es el nombre de la instancia de representación de origen. |
REGION | Es la región en la que reside la instancia de representación de origen. |
DATABASE_VERSION | Es la versión de la base de datos que se ejecuta en el servidor externo. Las opciones son MYSQL_5_6 , MYSQL_5_7 o MYSQL_8_0 .
. |
NEW_USERNAME | La cuenta de usuario de replicación nueva en el servidor externo. |
NEW_PASSWORD | La contraseña de la cuenta nueva. |
Modifica una instancia de representación de origen
Antes de comenzar con este paso, crea un archivo JSON que contenga los datos de tu solicitud de réplica.
Luego, 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 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 | Es el ID de tu proyecto en Google Cloud. |
JSON_PATH | Es la ruta al archivo JSON que contiene los datos de solicitud del servidor externo. |
SOURCE_NAME | Es el nombre de la instancia de representación de origen. |
Configura una réplica de Cloud SQL
Con el tiempo, la réplica de Cloud SQL contiene los datos del servidor externo. En este paso, debes crear los datos de la solicitud y usarlos en un comando curl
que cree la réplica de Cloud SQL en Cloud SQL.
Crea los datos de la solicitud
Los datos de la solicitud contienen información básica sobre tu servidor de la base de datos de origen y la 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 la siguiente 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_5_7", "name": "replica-instance" }
Propiedad | Descripción |
---|---|
TIER | Es el tipo de máquina para alojar tu instancia de réplica. Si no sabes qué tipo de máquina usar, comienza con db-custom-2-7680 . Puedes cambiar su tamaño y otros valores admitidos más adelante si es necesario. |
DISK_SIZE | Es el tamaño de almacenamiento de la réplica de Cloud SQL, en GB. |
PUBLIC_IP_STATUS | Determina si se asigna 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 para la réplica, configura el valor como false .
Si tu proyecto tiene habilitada la política de la organización constraints/sql.restrictPublicIp , entonces, para crear la réplica de Cloud SQL, debes establecer el valor de la propiedad ipv4Enabled como false . Si deseas obtener más información para desactivar la asignación de direcciones IP públicas, consulta Inhabilita la 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 .
Para PROJECT_ID, especifica el ID de tu proyecto en Google Cloud. |
NETWORK_NAME | Es el nombre de la red privada que se usará con la réplica de Cloud SQL. |
AVAILABILITY_TYPE | Es el tipo de disponibilidad de la réplica de Cloud SQL. De forma predeterminada, el valor es ZONAL . Para hacer que la réplica tenga alta disponibilidad, establece el valor en REGIONAL . Para obtener información sobre los valores permitidos, consulta SqlAvailabilityType.
Después de crear una réplica con alta disponibilidad del servidor externo, no puedes cambiarla a una réplica sin alta disponibilidad. Esto también se aplica a la inversa. No puedes cambiar una réplica sin alta disponibilidad del servidor externo a una réplica con alta disponibilidad. La conmutación por error manual puede provocar una migración irrecuperable si se intenta realizar cuando la instancia aún está cargando los datos iniciales, o un tiempo de inactividad temporal si la instancia ya se está replicando desde el origen. Comprueba el estado de replicación. |
SOURCE_REPRESENTATION_INSTANCE_NAME | Es el nombre de la instancia de representación de origen. |
SOURCE_REGION | Es la región asignada a la instancia de representación de origen. |
DATABASE_VERSION | Es la versión de la base de datos que se usará con la réplica de Cloud SQL. Las opciones para esta versión son MYSQL_5_6 , MYSQL_5_7 o MYSQL_8_0 .
Haz coincidir la versión de la base de datos que se ejecuta en el servidor externo o establece el valor en no más de una versión más adelante. |
REPLICA_NAME | Es el nombre de la réplica de Cloud SQL que se creará. |
Crea la réplica de Cloud SQL
Antes de comenzar con este paso, crea un archivo JSON que contenga los datos de tu solicitud de réplica. Luego, para crear una réplica de Cloud SQL, abre una 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 | Es el ID del proyecto en Google Cloud, que debe ser el mismo que el de la instancia de origen. |
JSON_PATH | Es la ruta al archivo JSON que contiene los datos de la solicitud de réplica de Cloud SQL. |
Verifica la configuración
Para asegurarte de que las instancias se configuraron de forma correcta, ve 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 | Instancia principal externa de la base de datos | 10.68.48.3:3306 |
replica-instance | Réplica de lectura de la base de datos | 34.66.48.59 |
También asegúrate de tener el permiso cloudsql.instances.migrate
en la réplica de Cloud SQL. Este permiso se incluye en los roles de Cloud IAM cloudsql.admin
o cloudsql.editor
.
Agrega usuarios a la réplica de Cloud SQL
No puedes importar cuentas de usuario de base de datos desde el servidor externo, pero puedes crearlas en una réplica de Cloud SQL. Haz esto antes de replicar desde el servidor externo.
Obtén la dirección IP saliente de la réplica de Cloud SQL
Puedes usar la dirección IP saliente 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:
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
Junto a la dirección IP pública de la réplica de Cloud SQL, mantén el puntero sobre la información sobre la herramienta 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 de Google Cloud.
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 | Es el nombre de la réplica de Cloud SQL cuya dirección IP pública saliente deseas recuperar. |
Permite conexiones entrantes en el servidor externo
La réplica de Cloud SQL debe conectarse al servidor externo para que la replicación sea exitosa. Debes configurar el firewall de la red para que tu servidor externo acepte conexiones de la dirección IP saliente de la réplica de Cloud SQL si se cumplen las siguientes condiciones:
- El servidor externo está detrás de un firewall o alguna otra restricción de red.
- Tu réplica de Cloud SQL usa una IP pública.
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 de 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 debas actualizar la instancia de representación de origen. Por ejemplo, estas situaciones hacen que debas actualizar tus opciones de configuración:
- El host, el puerto o la IP del servidor externo cambia.
- Deseas usar un usuario de replicación de MySQL diferente.
- Cambia la contraseña del usuario de replicación de MySQL.
- Los certificados SSL que usaste para conectarte de forma segura al servidor externo cambian.
Propaga la réplica de Cloud SQL
Existen tres opciones para realizar la carga inicial de datos del servidor externo a la réplica de Cloud SQL:
- Una importación administrada usa un servicio que extrae datos del servidor externo y los importa a la instancia de Cloud SQL directamente. Cloud SQL recomienda esta opción. Debes usar esta opción si tu servidor externo no usa la replicación de identificador de transacción global (GTID). Si deseas obtener más información, consulta Usa una importación administrada para configurar la replicación desde bases de datos externas.
- Un archivo de volcado requiere que crees un archivo de volcado de tu servidor externo, lo muevas a un bucket de Cloud Storage y, luego, lo importes a Cloud SQL. Solo puedes usar esta opción si tu servidor externo usa la replicación GTID. Si deseas obtener más información, consulta Usa un archivo de volcado para configurar la replicación desde bases de datos externas.
- Una importación personalizada requiere que realices una instancia principal de Cloud SQL, realices una importación de datos personalizada con tus herramientas preferidas, desciendas de nivel a una réplica de Cloud SQL y, luego, configures la replicación de servidores externos. Esto funciona mejor para las migraciones de bases de datos de varios TB. Sin embargo, debes usar la replicación GTID. Si deseas obtener más información, consulta Usa una importación personalizada para configurar la replicación desde bases de datos externas grandes.
¿Cuál es la opción adecuada para ti?
Supervisar replicación
Cuando la réplica de Cloud SQL finaliza la carga de datos inicial, se conecta al servidor externo y aplica todas las actualizaciones que se realizaron después de la operación de exportación. Confirma el estado de replicación.
Es importante verificar el estado de replicación antes de ascender la réplica a una instancia independiente. Si el proceso de replicación no se completa correctamente, una réplica ascendida no tiene todos los cambios de tu servidor externo.
Si el retraso de replicación no se muestra igual o cercano a 0, toma medidas para solucionarlo.
Te recomendamos verificar estas 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 alcance el servidor externo y no exista demora de replicación en la réplica de Cloud SQL, conéctate a la base de datos. Ejecuta los comandos de base de datos adecuados para asegurarte de que el contenido sea el esperado en comparación con el servidor externo. Conserva tu servidor externo hasta que se realicen las validaciones necesarias.
Configura 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 ascender la réplica de Cloud SQL.
Puedes crear réplicas en cascada para tu instancia de Cloud SQL solo si usas la replicación GTID.Para crear una réplica en cascada, ejecuta los siguientes comandos:
Consola
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Para MySQL 5.7 o posterior, habilita la replicación.
- Haz clic en la pestaña Réplicas de la réplica que funcionará como superior de la réplica que deseas crear.
- Haz clic en Crear réplica.
- En la página Crea réplicas de lectura, actualiza el ID de la instancia y cualquier otra opción de configuración, incluidos el nombre, la región y la zona.
- Haga clic en Crear.
Cloud SQL crea una réplica. Volverás a la página de la instancia de la réplica superior.
- Sigue los pasos 4 a 6 para cada réplica en cascada nueva que desees crear.
gcloud
- Si usas la versión 5.7 de MySQL o una posterior, habilita los registros binarios para la instancia principal de la réplica nueva:
Reemplaza PARENT_REPLICA_NAME por el nombre de la réplica superior.gcloud sql instances patch --enable-bin-log --project=cascade-replica PARENT_REPLICA_NAME
- Para crear la réplica nueva, especifica tu réplica de Cloud SQL como la instancia principal mediante la marca
--master-instance-name
: Reemplaza lo siguiente:gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
- REPLICA_NAME: el ID único de la réplica que estás creando
- PARENT_REPLICA_NAME por el nombre de la réplica de Cloud SQL
- Después de crear 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.
curl
- Si usas la versión 5.7 de MySQL o una superior, habilita el registro binario:
Para habilitar el registro de objeto binario, guarda el siguiente JSON en un archivo llamado request.JSON y, luego, invoca el comando curl para habilitar el registro de objeto binario.
{ "settings": { "backupConfiguration": { "enabled": false, "binaryLogEnabled": true } } }
- Para crear una réplica en la réplica superior, edita la siguiente muestra de código JSON y guárdala 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"
Asciende la réplica
Para ascender la réplica, sigue estos pasos:
- Asciende la réplica a una instancia principal. Ten en cuenta que los registros binarios y GTID están activados y las copias de seguridad programadas están habilitadas en la réplica que se asciende.
- Agrega réplicas de lectura a tu instancia.
- Opcional: Configura tu instancia para que tenga alta disponibilidad (HA).
Para evitar el tiempo de inactividad adicional, puedes habilitar la alta disponibilidad mientras configuras una réplica si estableces
AVAILABILITY_TYPE
comoREGIONAL
.
¿Qué sigue?
- Obtén más información sobre cómo usar una importación personalizada para configurar la replicación desde bases de datos externas grandes.
- Obtén más información sobre cómo usar un archivo de volcado para configurar la replicación desde bases de datos externas.
- Obtén más información sobre cómo usar una importación administrada para configurar la replicación desde bases de datos externas.