En esta página se describe el proceso para configurar la replicación cuando tienes un archivo de volcado que has creado desde tu servidor externo.
Debes completar todos los pasos de esta página. Cuando termine, podrá administrar y monitorizar la instancia de representación de origen de la misma forma que cualquier otra instancia de Cloud SQL.
Antes de empezar
Antes de empezar, debes configurar el servidor externo, crear la instancia de representación de origen y configurar la réplica de Cloud SQL.
Actualizar los permisos del usuario de replicación
El usuario de replicación del servidor externo está configurado para aceptar conexiones de cualquier host (%
). Debes actualizar esta cuenta de usuario para que solo se pueda usar con la réplica de Cloud SQL.
Abre un terminal en el servidor externo e introduce estos comandos:
Cliente mysql
UPDATE mysql.user SET Host='NEW_HOST' WHERE Host='OLD_HOST' AND User='USERNAME'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'GCP_USERNAME'@'HOST'; FLUSH PRIVILEGES;
Ejemplo
UPDATE mysql.user SET Host='192.0.2.0' WHERE Host='%' AND User='replicationUser'; GRANT REPLICATION SLAVE, EXECUTE ON *.* TO 'gcp_user'@'gmail.com'; FLUSH PRIVILEGES;
Propiedad | Descripción |
---|---|
NEW_HOST | Especifica la IP de salida de la réplica de Cloud SQL. |
OLD_HOST | El valor actual asignado a Host que quieras cambiar. |
USERNAME | La cuenta de usuario de replicación del servidor externo. |
GCP_USERNAME | El nombre de usuario de la cuenta de usuario de la plataforma Google Cloud (GCP). |
HOST | El nombre de host de la cuenta de usuario de la Google Cloud plataforma (GCP). |
Verificar la configuración de la replicación
Una vez que hayas completado la configuración, asegúrate de que la réplica de Cloud SQL pueda replicar desde el servidor externo.
Primero, comprueba que la configuración de sincronización externa sea correcta. Para ello, usa los comandos que se indican a continuación para verificarlo:
- Conectividad entre la réplica de Cloud SQL y el servidor externo
- Privilegios de usuario de replicación
- Compatibilidad de versiones
- La réplica de Cloud SQL aún no está replicando
- Los registros binarios están habilitados en el servidor externo
- Se ha habilitado un identificador de transacción global (GTID)
Abre un terminal e introduce estos comandos para verificar que los ajustes de sincronización externa son correctos:
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"skipVerification": "SKIP_VERIFICATION"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/verifyExternalSyncSettings
Ejemplo
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Propiedad | Descripción |
---|---|
SYNC_MODE | verifyExternalSyncSettings comprueba que puedes mantener sincronizada la réplica de Cloud SQL y el servidor externo después de configurar la replicación. Los modos de sincronización incluyen EXTERNAL_SYNC_MODE_UNSPECIFIED , ONLINE y OFFLINE . |
SKIP_VERIFICATION | Indica si se debe omitir o no el paso de verificación integrado antes de sincronizar los datos. Solo se recomienda si ya has verificado tu configuración de replicación. |
PROJECT_ID | El ID de tu proyecto en Google Cloud. |
REPLICA_INSTANCE | ID de tu réplica de Cloud SQL. |
Exportar una base de datos a un segmento de Cloud Storage
Puedes rellenar una réplica de Cloud SQL con un archivo mysqldump
ubicado en un segmento de Cloud Storage. Se aplican las siguientes condiciones:
- Debes usar la utilidad
mysqldump
incluida en MySQL. - Mientras se ejecuta
mysqldump
, no realices ninguna operación DDL en el servidor externo. Si lo hace, podría haber incoherencias en el archivo de exportación.
Para exportar tu base de datos a un segmento de Cloud Storage, sigue estos pasos:
- En Google Cloud, crea un segmento de Cloud Storage.
- Abre un terminal con un cliente que se conecte al servidor de la base de datos externa y ejecuta el siguiente comando.
mysqldump
mysqldump \ --host=EXTERNAL_HOST \ --port=EXTERNAL_PORT \ --user=USERNAME\ --password=PASSWORD \ --databases=DATABASE_LIST \ --hex-blob \ SOURCE_DATA \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --set-gtid-purged=on \ ADD_DROP_TABLE \ ROUTINES \ COMPRESS \ GZIP \ | gcloud storage cp - gs://BUCKET/DUMP_FILENAME
Ejemplo
mysqldump \ --host=192.0.2.1 \ --port=3306 \ --user=replicationUser \ --password \ --databases guestbook journal \ --hex-blob \ --master-data=1 \ --no-autocommit \ --default-character-set=utf8mb4 \ --single-transaction \ --compress \ | gzip \ | gcloud storage cp - gs://replica-bucket/external-database.sql.gz
Propiedad | Descripción |
---|---|
EXTERNAL_HOST | Dirección IPv4 o DNS del servidor externo. |
EXTERNAL_PORT | El puerto del servidor externo.
Si el servidor externo está alojado en Cloud SQL,
esta opción es 3306 . |
USERNAME | Nombre de la cuenta de usuario de replicación o de la cuenta de usuario del servidor externo que tiene permisos de lectura de la base de datos. |
PASSWORD | Contraseña del usuario de replicación. |
DATABASE_LIST | Lista separada por espacios de todas las bases de datos del servidor externo, excepto las bases de datos del sistema (sys , mysql , performance_schema y information_schema ). Usa el comando SHOW DATABASES MySQL para enumerar tus bases de datos. |
SOURCE_DATA | Si utilizas una versión de MySQL anterior a la 8.0.26, usa --master-data como valor de este parámetro.
En las versiones de MySQL 8.0.26 o posteriores, asigna el valor --source-data a este parámetro. |
ADD_DROP_TABLE | Si quieres añadir una instrucción DROP TABLE antes de cada instrucción CREATE TABLE , incluye --add-drop-table . |
ROUTINES | Si quieres mostrar las rutinas almacenadas, como los procedimientos y las funciones, en la salida de las bases de datos volcadas, incluye --routines . |
COMPRESS | Si quieres comprimir toda la información que se envía entre la réplica de Cloud SQL y el servidor externo, usa --compress . |
GZIP | Si quieres comprimir aún más el archivo de volcado, usa | gzip . Si tu base de datos contiene datos que no se comprimen bien, como datos binarios no comprimibles o imágenes JPG, no uses esta opción. |
BUCKET | El nombre del segmento que ha creado en el paso 1 para contener el archivo de volcado. |
DUMP_FILENAME | Se crea un archivo con este nombre en tu segmento. Este archivo contiene el contenido de la base de datos de tu servidor externo. |
Actualiza la instancia de representación de origen con la ruta de archivo del segmento de Cloud Storage
La instancia de representación de origen es una instancia de Cloud SQL que representa el servidor de base de datos de origen en la réplica de Cloud SQL. Se puede ver en la Google Cloud consola y tiene el mismo aspecto que una instancia de Cloud SQL normal, pero no contiene datos, no requiere configuración ni mantenimiento y no afecta a la facturación.
El archivo source.json
contiene información sobre la instancia de representación de origen.
REST
{ "name": "PRIMARY_INSTANCE_NAME", "region": "REGION_NAME", "databaseVersion": "DB_NAME_AND_VERSION", "onPremisesConfiguration": { "hostPort": "IP_ADDRESS_AND_PORT", "username": "USERNAME", "password": "PASSWORD" }, "dumpFilePath" :"DUMP_FILE_PATH" }
Ejemplo
{ "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" }
Propiedad | Descripción |
---|---|
PRIMARY_INSTANCE_NAME | Nombre de la instancia de Cloud SQL asociada a la instancia de representación de origen. |
REGION_NAME | Nombre de la región asignada a la instancia de representación de la fuente. |
DB_NAME_AND_VERSION | El nombre y el número de versión de la base de datos asociada a la instancia de representación de origen. |
IP_ADDRESS_AND_PORT | La dirección IP y el número de puerto reservados para la instancia de representación de origen. |
USERNAME | Nombre de usuario de la instancia de representación de origen. |
PASSWORD | Contraseña de la instancia de representación de origen. |
DUMP_FILE_PATH | La ruta del archivo de volcado que contiene el contenido de la base de datos de tu servidor externo. |
Después de configurar la réplica de Cloud SQL, debes actualizar la instancia de representación de origen con la ruta de archivo del segmento de Cloud Storage.
REST
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X PATCH \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_REPRESENTATION_INSTANCE
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 |
---|---|
JSON_PATH | Ruta del archivo JSON almacenado en el segmento de Cloud Storage.
Este archivo contiene datos sobre la instancia de representación de origen. |
PROJECT_ID | El ID de tu proyecto en Google Cloud. |
SOURCE_REPRESENTATION_INSTANCE | Nombre de la instancia de representación de origen. |
Iniciar la replicación en el servidor externo
Una vez que haya verificado que puede replicar desde el servidor externo, podrá realizar la replicación.
Durante el proceso de importación inicial, no realice ninguna operación de DDL en el servidor externo. Si lo hace, podría haber incoherencias durante la importación. Una vez que se completa el proceso de importación, la réplica usa los registros binarios del servidor externo para ponerse al día con el estado actual del servidor externo.
Abre un terminal, inicia sesión con gcloud
y, a continuación, introduce el comando curl
para replicar desde el servidor externo.
REST
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "SYNC_MODE", "skipVerification": "SKIP_VERIFICATION" }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE/startExternalSync
Ejemplo
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{ "syncMode": "online", "skipVerification": false }' \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Propiedad | Descripción |
---|---|
SYNC_MODE | Verifica que puedes mantener sincronizados la réplica de Cloud SQL y el servidor externo después de configurar la replicación. |
SKIP_VERIFICATION | Indica si se debe omitir o no el paso de verificación integrado antes de sincronizar los datos. Solo se recomienda si ya has verificado tu configuración de replicación. |
PROJECT_ID | El ID de tu proyecto en Google Cloud. |
REPLICA_INSTANCE | ID de tu réplica de Cloud SQL. |
Liberar espacio de almacenamiento
Si has replicado desde un archivo de un contenedor, puedes eliminar este archivo y el contenedor. Consulta la documentación de Cloud Storage sobre cómo eliminar objetos y eliminar segmentos.
Continuar con la replicación
Una vez que inicies la replicación desde el servidor externo, tendrás que monitorizarla y, a continuación, completar la migración. Para obtener más información, consulta Monitorizar la replicación.
Solucionar problemas
Problema | Solución de problemas |
---|---|
Lost connection to MySQL server during query when dumping table . |
Es posible que la fuente haya dejado de estar disponible o que el volcado contenga paquetes demasiado grandes.
Asegúrate de que el primario externo esté disponible para conectarse. También puedes modificar los valores de las marcas net_read_timeout y net_write_timeout en la instancia de origen para detener el error. Para obtener más información sobre los valores permitidos de estas marcas, consulta el artículo Configurar marcas de base de datos. Para obtener más información sobre el uso de las marcas |
La migración de datos inicial se ha realizado correctamente, pero no se están replicando datos. | Una posible causa principal podría ser que tu base de datos de origen haya definido marcas de replicación que provoquen que no se repliquen algunos o todos los cambios de la base de datos.
Asegúrate de que las marcas de replicación, como Ejecuta el comando |
La migración de datos inicial se ha realizado correctamente, pero la replicación de datos deja de funcionar al cabo de un tiempo. | Puedes probar a realizar lo siguiente:
|
mysqld check failed: data disk is full . |
El disco de datos de la instancia réplica está lleno.
Aumenta el tamaño del disco de la instancia réplica. Puedes aumentar el tamaño del disco manualmente o habilitar el aumento automático del almacenamiento. |
Revisar los registros de replicación
Cuando verifiques la configuración de la réplica, se generarán registros.
Para ver estos registros, sigue estos pasos:
Ve al visualizador de registros de la Google Cloud consola.
- Selecciona la réplica de Cloud SQL en el menú desplegable Instancia.
- Selecciona el archivo de registro
replication-setup.log
.
Si la réplica de Cloud SQL no puede conectarse al servidor externo, comprueba lo siguiente:
- Cualquier cortafuegos del servidor externo está configurado para permitir conexiones desde la dirección IP de salida de la réplica de Cloud SQL.
- La configuración de SSL/TLS es correcta.
- El usuario, el host y la contraseña de la réplica son correctos.
Siguientes pasos
- Consulta cómo actualizar una instancia.
- Consulta información sobre cómo gestionar réplicas.
- Consulta información sobre cómo monitorizar instancias.
- Consulta cómo promocionar tu réplica de Cloud SQL para convertirla en una instancia independiente y dejar de replicar desde el servidor externo.