En esta página se describe cómo configurar y usar una importación gestionada de datos al replicar desde un servidor externo a Cloud SQL.
Debes completar todos los pasos de esta página. Cuando termine, podrá administrar y monitorizar la instancia de representación de origen del mismo modo que lo haría con cualquier otra instancia de Cloud SQL.
Antes de empezar
Antes de empezar, sigue estos pasos:
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.
Los siguientes ajustes de sincronización externa deben ser correctos.
- 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
Para verificar estos ajustes, abre un terminal de Cloud Shell e introduce 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 '{
"syncMode": "SYNC_MODE",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL",
"selectedObjects": "SELECTED_OBJECTS"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/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",
"syncParallelLevel": "optimal",
"selectedObjects":[{"database":"db1"}, {"database":"db2"}]
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Estas llamadas devuelven una lista de tipo sql#externalSyncSettingErrorList
.
Si la lista está vacía, significa que no hay errores. Una respuesta sin errores tiene este aspecto:
{ "kind": "sql#externalSyncSettingErrorList" }
Propiedad | Descripción |
---|---|
SYNC_MODE | Asegúrate de que la réplica de Cloud SQL y el servidor externo estén sincronizados después de configurar la replicación. Los modos de sincronización son EXTERNAL_SYNC_MODE_UNSPECIFIED , ONLINE y OFFLINE . |
SYNC_PARALLEL_LEVEL | Verifica el ajuste que controla la velocidad a la que se transfieren los datos de las tablas de una base de datos. Están disponibles los siguientes valores:
Nota: El valor predeterminado de este parámetro es |
SELECTED_OBJECTS | Lista de objetos separados por comas que especifica las bases de datos que vas a migrar de la instancia de representación de origen a la instancia de Cloud SQL de destino. Si no usa este parámetro o proporciona una lista vacía como valor del parámetro, todas las bases de datos se migrarán del origen al destino. |
PROJECT_ID | El ID de tu Google Cloud proyecto. |
REPLICA_INSTANCE_ID | ID de tu réplica de Cloud SQL. |
Actualizar una instancia de representación de origen
Para actualizar las bases de datos que quieras migrar de la instancia de representación de origen a la instancia de Cloud SQL de destino, actualiza la lista de nombres de bases de datos asociados al parámetro selectedObjects
. Si no usa este parámetro o proporciona una lista vacía como valor del parámetro, todas las bases de datos se migrarán del origen al destino.
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "selectedObjects": "SELECTED_OBJECTS", "username": "USERNAME", "password": "PASSWORD" } }
Ejemplo
// 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": "POSTGRES_9_6",
"onPremisesConfiguration": {
"selectedObjects":[{"database":"db1"}, {"database":"db3"}],
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
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 POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 o POSTGRES_17 . |
SELECTED_OBJECTS | Lista actualizada de objetos separados por comas que especifica las bases de datos que vas a migrar de la instancia de representación de origen a la instancia de Cloud SQL de destino. |
USERNAME | La cuenta de usuario de replicación del servidor externo. |
PASSWORD | La contraseña de la cuenta. |
A continuación, para modificar la instancia de representación de origen en Cloud SQL, abre una terminal de Cloud Shell e introduce 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 |
---|---|
JSON_PATH | Ruta al archivo JSON que contiene los datos de la solicitud del servidor externo. |
PROJECT_ID | El ID de tu Google Cloud proyecto. |
SOURCE_NAME | Nombre de la instancia de representación de origen. |
Iniciar la replicación en el servidor externo
Una vez que hayas verificado que puedes replicar desde el servidor externo, inicia la replicación. La velocidad de replicación del proceso de importación inicial es de hasta 500 GB por hora. Sin embargo, esta velocidad puede variar en función del nivel de la máquina, el tamaño del disco de datos, el rendimiento de la red y la naturaleza de la base de datos.
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",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/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",
"syncParallelLevel": "optimal"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Propiedad | Descripción |
---|---|
SYNC_MODE | Verifica que puedes mantener sincronizadas la réplica de Cloud SQL y el servidor externo después de configurar la replicación. |
SKIP_VERIFICATION | Indica si se debe omitir el paso de verificación integrado antes de sincronizar los datos. Este parámetro solo se recomienda si ya ha verificado su configuración de replicación. |
SYNC_PARALLEL_LEVEL | Proporciona un ajuste que controla la velocidad a la que se transfieren los datos de las tablas de una base de datos. Están disponibles los siguientes valores:
Nota: El valor predeterminado de este parámetro es |
PROJECT_ID | El ID de tu Google Cloud proyecto. |
REPLICA_INSTANCE_ID | ID de tu réplica de Cloud SQL. |
Controlar la migración
Una vez que hayas iniciado la replicación desde el servidor externo, tendrás que monitorizarla. Para obtener más información, consulta Monitorizar la replicación. A continuación, puedes completar la migración.
Solucionar problemas
Prueba las siguientes opciones para solucionar el problema:
Problema | Solución de problemas |
---|---|
La réplica de lectura no ha empezado a replicarse al crearse. | Probablemente haya un error más específico en los archivos de registro. Inspecciona los registros en Cloud Logging para encontrar el error real. |
No se puede crear una réplica de lectura: error invalidFlagValue. | Una de las marcas de la solicitud no es válida. Puede ser una marca que hayas proporcionado explícitamente o una que se haya definido con un valor predeterminado.
En primer lugar, comprueba que el valor de la marca Si la marca |
No se ha podido crear la réplica de lectura debido a un error desconocido. | Probablemente haya un error más específico en los archivos de registro.
Inspecciona los registros en Cloud Logging para encontrar el error real.
Si el error es |
El disco está lleno. | El disco de la instancia principal puede llenarse durante la creación de la réplica. Edita la instancia principal para actualizarla a un tamaño de disco mayor. |
El espacio en disco aumenta considerablemente. | Si una ranura no se usa de forma activa para monitorizar datos, PostgreSQL conservará los segmentos WAL indefinidamente, lo que provocará que el espacio en disco aumente indefinidamente. Si usas las funciones de replicación lógica y decodificación en Cloud SQL, las ranuras de replicación se crean y se eliminan automáticamente. Puedes detectar las ranuras de replicación no utilizadas consultando la vista del sistema pg_replication_slots
y filtrando por la columna active . Los espacios sin usar se pueden eliminar para quitar segmentos WAL con el comando pg_drop_replication_slot .
|
La instancia de réplica está usando demasiada memoria. | La réplica usa memoria temporal para almacenar en caché las operaciones de lectura solicitadas con frecuencia, lo que puede hacer que use más memoria que la instancia principal.
Reinicia la instancia de réplica para recuperar el espacio de memoria temporal. |
Replicación detenida. | Se ha alcanzado el límite máximo de almacenamiento y el aumento automático del almacenamiento no está habilitado.
Edita la instancia para habilitar |
La latencia de replicación es constantemente alta. | La carga de escritura es demasiado alta para que la réplica pueda gestionarla. El retraso de la réplica se produce cuando el subproceso SQL de una réplica no puede seguir el ritmo del subproceso de E/S. Algunos tipos de consultas o cargas de trabajo pueden provocar una latencia de replicación alta temporal o permanente en un esquema determinado. Estas son algunas de las causas habituales del retraso de la réplica:
Estas son algunas posibles soluciones:
|
Errores al reconstruir índices en PostgreSQL 9.6. | PostgreSQL te informa de que debes volver a generar un índice concreto. Esto solo se puede hacer en la instancia principal. Si creas una nueva instancia de réplica, pronto volverá a aparecer el mismo error.
Los índices hash no se propagan a las réplicas en las versiones de PostgreSQL anteriores a la 10.
Si debes usar índices hash, actualiza a PostgreSQL 10 o una versión posterior. De lo contrario, si también quieres usar réplicas, no uses índices hash en PostgreSQL 9.6. |
La consulta en la instancia principal siempre está en ejecución. | Después de crear una réplica, se espera que la consulta SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' se ejecute continuamente en tu instancia principal.
|
La creación de réplicas falla por tiempo de espera agotado. | Las transacciones sin confirmar de larga duración en la instancia principal pueden provocar que falle la creación de réplicas de lectura.
Vuelve a crear la réplica después de detener todas las consultas en ejecución. |
Si la instancia principal y la réplica tienen tamaños de vCPU diferentes, puede haber problemas de rendimiento de las consultas porque el optimizador de consultas tiene en cuenta los tamaños de las vCPU. |
Para solucionar este problema, siga estos pasos:
Si se trata de una consulta específica, modifícala. Por ejemplo, puedes cambiar el orden de las combinaciones para ver si obtienes un mejor rendimiento. |
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 información sobre cómo promocionar tu réplica de Cloud SQL.