En esta página, se describe el proceso para configurar la replicación cuando tienes un archivo de volcado que creaste desde tu servidor externo.
Debes completar todos los pasos de esta página. Cuando termines, puedes administrar y supervisar la instancia de representación de origen de la misma manera que lo harías con cualquier otra instancia de Cloud SQL.
Antes de comenzar
Antes de comenzar, debes configurar el servidor externo, crear la instancia de representación de origen y configurar la réplica de Cloud SQL.
Actualiza los permisos del usuario de replicación
El usuario de replicación del servidor externo está configurado a fin de 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 una terminal en el servidor externo e ingresa los siguientes 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 saliente de la réplica de Cloud SQL. |
OLD_HOST | Es el valor actual asignado a Host que deseas cambiar. |
USERNAME | La cuenta de usuario de replicación en el servidor externo. |
GCP_USERNAME | Nombre de usuario de la cuenta de usuario de Google Cloud Platform (GCP). |
HOST | El nombre de host de la cuenta de usuario de Google Cloud Platform (GCP). |
Verifica la configuración de la replicación
Una vez que se complete la configuración, asegúrate de que la réplica de Cloud SQL pueda replicar desde el servidor externo.
En primer lugar, asegúrate de que la configuración de la sincronización externa sea correcta. A fin de verificar estos aspectos, usa los siguientes comandos:
- Conectividad entre la réplica de Cloud SQL y el servidor externo
- Privilegios del usuario de replicación
- Compatibilidad de versiones
- La réplica de Cloud SQL aún no se replica
- Los binlogs están habilitados en el servidor externo
- Un identificador de transacciones global (GTID) está habilitado
Abre una terminal e ingresa estos comandos para verificar que la configuración de la sincronización externa sea correcta:
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 verifica que puedas mantener sincronizadas la réplica y el servidor externo de Cloud SQL después de configurar la réplica. 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 tus datos. Solo se recomienda si ya verificaste tu ajuste de replicación. |
PROJECT_ID | Es el ID de tu proyecto en Google Cloud. |
REPLICA_INSTANCE | Es el ID de tu réplica de Cloud SQL. |
Exporta tu base de datos a un bucket de Cloud Storage
Puedes propagar una réplica de Cloud SQL con un archivo mysqldump
ubicado en un bucket de Cloud Storage. Se aplican las siguientes condiciones:
- Debes usar la utilidad
mysqldump
incluida con MySQL. - Mientras
mysqldump
esté en ejecución, no realices ninguna operación de DDL en el servidor externo. De lo contrario, se podrían causar inconsistencias en el archivo de exportación.
Para exportar tu base de datos a un bucket de Cloud Storage, sigue estos pasos:
- En Google Cloud, crea un bucket de Cloud Storage.
- Abre una terminal con un cliente que se conecta 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 | La dirección IPv4 o de DNS del servidor externo. |
EXTERNAL_PORT | El puerto para el servidor externo.
Si el servidor externo se aloja en Cloud SQL, es 3306 . |
USERNAME | Es el nombre de la cuenta de usuario de replicación o la cuenta de usuario en el servidor externo que tiene permisos de lectura para la base de datos. |
PASSWORD | Contraseña del usuario de replicación. |
DATABASE_LIST | Lista separada por espacios de todas las bases de datos en el servidor externo, excepto las bases de datos del sistema (sys , mysql , performance_schema y information_schema ). Usa el comando SHOW DATABASES de MySQL para enumerar tus bases de datos. |
SOURCE_DATA | Si usas una versión anterior de MySQL 8.0.26, usa --master-data como valor para este parámetro.
En las versiones de MySQL 8.0.26 o superiores, establece el valor de este parámetro en --source-data . |
ADD_DROP_TABLE | Si deseas agregar una declaración DROP TABLE antes de cada declaración CREATE TABLE , incluye --add-drop-table . |
ROUTINES | Si quieres mostrar las rutinas almacenadas, como procedimientos y funciones, en el resultado de las bases de datos de volcado, incluye --routines . |
COMPRESS | Si deseas comprimir toda la información enviada entre la réplica de Cloud SQL y el servidor externo, usa --compress . |
GZIP | Si deseas comprimir aún más el archivo de volcado, usa | gzip . Si tu base de datos contiene datos que no se comprimen de forma correcta, como datos binarios no comprimibles o imágenes JPG, no lo uses. |
BUCKET | Es el nombre del bucket que creaste en el Paso 1 para contener el archivo de volcado. |
DUMP_FILENAME | Se creará un archivo con este nombre en tu bucket. Este archivo incluye el contenido de la base de datos en tu servidor externo. |
Actualiza la instancia de representación de origen con la ruta de acceso del archivo del bucket de Cloud Storage
La instancia de representación de origen es una instancia de Cloud SQL que representa al servidor de base de datos de origen para la réplica de Cloud SQL. Es visible en la consola de Google Cloud y se ve igual a una instancia normal de Cloud SQL, pero no contiene datos, no requiere configuración ni mantenimiento y no afecta 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 | El nombre de la instancia de Cloud SQL asociada con la instancia de representación de origen. |
REGION_NAME | Es el nombre de la región que se asigna a la instancia de representación de origen. |
DB_NAME_AND_VERSION | Es el nombre y el número de la versión de la base de datos asociada con 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 | El nombre de usuario de la instancia de representación de origen. |
PASSWORD | Es la contraseña de la instancia de representación de origen. |
DUMP_FILE_PATH | Es la ruta de acceso del archivo de volcado que incluye el contenido de la base de datos en 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 acceso del archivo del bucket 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 | La ruta del archivo JSON que está almacenado en el bucket de Cloud Storage.
Este archivo contiene datos sobre la instancia de representación de origen. |
PROJECT_ID | Es el ID de tu proyecto en Google Cloud. |
SOURCE_REPRESENTATION_INSTANCE | Es el nombre de la instancia de representación de origen. |
Inicia la replicación en el servidor externo
Una vez que hayas verificado que puedes replicar desde el servidor externo, estás listo para realizar la replicación.
Durante el proceso de importación inicial, no realices ninguna operación DDL en el servidor externo. De lo contrario, podrían producirse inconsistencias en el archivo de exportación. Una vez que se complete 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 una terminal, accede con gcloud
y, luego, ingresa 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 puedas mantener sincronizadas la réplica y el servidor externo de Cloud SQL 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 tus datos. Solo se recomienda si ya verificaste tu ajuste de replicación. |
PROJECT_ID | Es el ID de tu proyecto en Google Cloud. |
REPLICA_INSTANCE | Es el ID de tu réplica de Cloud SQL. |
Limpia tu almacenamiento
Si replicaste desde un archivo en un bucket, puedes quitar el archivo y el bucket. Consulta la documentación de Cloud Storage para borrar objetos y buckets.
Continúa con la replicación
Una vez que inicies la réplica desde el servidor externo, deberás supervisar la réplica y, luego, completar la migración. Para obtener más información, consulta Supervisa la réplica.
Solucionar problemas
Problema | Soluciona problemas |
---|---|
Lost connection to MySQL server during query when dumping table . |
Es posible que el origen haya dejado de estar disponible o que el volcado contenga paquetes demasiado grandes.
Asegúrate de que la instancia principal externa 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 para estas marcas, consulta Configura marcas de base de datos. Si deseas obtener más información sobre el uso de marcas de |
La migración inicial de los datos se realizó de forma correcta, pero no se están replicando los datos. | Una causa raíz podría ser que la base de datos de origen haya definido marcas de replicación que den como resultado 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 inicial de los datos se realizó de forma correcta, pero la réplica de datos dejó de funcionar después de un tiempo. | Solución:
|
mysqld check failed: data disk is full . |
El disco de datos de la instancia de réplica está lleno.
Aumenta el tamaño del disco de la instancia de réplica. Puedes aumentar el tamaño del disco de forma manual o habilitar el aumento de almacenamiento automático. |
Revisa los registros de replicación
Cuando verificas la configuración de la replicación, se generan registros.
Puedes ver estos registros mediante los siguientes pasos:
Ve al Visor de registros en la consola de Google Cloud.
- Selecciona la réplica de Cloud SQL del menú desplegable Instancia.
- Selecciona el archivo de registro
replication-setup.log
.
Si la réplica de Cloud SQL no puede conectarse al servidor externo, confirma lo siguiente:
- Cualquier firewall en el servidor externo se configura para permitir conexiones desde la dirección IP saliente de la réplica de Cloud SQL.
- Tu configuración de SSL/TLS es correcta.
- Tu usuario de repetición, host y contraseña son correctos.
¿Qué sigue?
- Obtén más información sobre cómo actualizar una instancia.
- Aprende cómo administrar réplicas.
- Obtén información sobre la supervisión de instancias.
- Obtén más información para ascender la réplica de Cloud SQL a fin de ascenderla a una instancia independiente y detener la replicación desde el servidor externo.