En esta página, se describe cómo configurar y usar una importación administrada para los datos cuando se replica desde un servidor externo a Cloud SQL.
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, completa estos pasos:
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.
La siguiente configuración de sincronización externa debe ser correcta.
- 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
Para verificar esta configuración, abre una terminal de Cloud Shell y, luego, ingresa 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"
}' \
-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"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Estas llamadas muestran una lista de tipo sql#externalSyncSettingErrorList
.
Si la lista está vacía, no hay errores. Aparecerá una respuesta sin errores como la siguiente:
{ "kind": "sql#externalSyncSettingErrorList" }
Propiedad | Descripción |
---|---|
SYNC_MODE | Garantiza que puedas mantener la réplica de Cloud SQL y el servidor externo sincronizados después de que se configure la replicación. Los modos de sincronización incluyen EXTERNAL_SYNC_MODE_UNSPECIFIED , ONLINE y OFFLINE . |
SYNC_PARALLEL_LEVEL | Verifica la configuración que controla la velocidad a la que se transfieren los datos de las tablas de una base de datos. Los siguientes valores están disponibles:
Nota: El valor predeterminado de este parámetro es |
PROJECT_ID | El ID del proyecto de Google Cloud |
REPLICA_INSTANCE_ID | Es el ID de tu réplica de Cloud SQL. |
Inicia la replicación en el servidor externo
Después de verificar que puedes replicar desde el servidor externo, inicia la replicación. La velocidad para realizar la replicación del proceso de importación inicial es de hasta 500 GB por hora. Sin embargo, esta velocidad puede variar según el nivel de máquina, el tamaño del disco de datos, la capacidad de procesamiento de la red y la naturaleza de tu 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 puedas mantener la réplica de Cloud SQL y el servidor externo sincronizados después de que se configure la replicación. |
SKIP_VERIFICATION | Indica si se debe omitir el paso de verificación integrado antes de sincronizar tus datos. Este parámetro solo se recomienda si ya verificaste tu configuración de replicación. |
SYNC_PARALLEL_LEVEL | Proporciona una configuración que controle la velocidad a la que se transfieren los datos de las tablas de una base de datos. Los siguientes valores están disponibles:
Nota: El valor predeterminado de este parámetro es |
PROJECT_ID | El ID del proyecto de Google Cloud |
REPLICA_INSTANCE_ID | Es el ID de tu réplica de Cloud SQL. |
Supervisa la migración
Una vez que inicies la replicación desde el servidor externo, deberás supervisar la replicación. Para obtener más información, consulta Supervisa la réplica. Luego, puedes completar tu migración.
Solucionar problemas
Considera las siguientes opciones de solución de problemas:
Problema | Soluciona problemas |
---|---|
La réplica de lectura no comenzó a replicarse cuando se creó. | Es probable que 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 proporcionaste explícitamente o una que se configuró como un valor predeterminado.
Primero, comprueba que el valor de la marca Si la marca |
No se puede crear una réplica de lectura: error desconocido. | Es probable que 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 tamaño del disco de la instancia principal puede llenarse durante la creación de una réplica. Edita la instancia principal para actualizarla a un tamaño de disco más grande. |
El espacio en el disco aumenta significativamente. | Una ranura que no se usa de forma activa para realizar un seguimiento de los datos hace que PostgreSQL se conserve en los segmentos WAL de forma indefinida, lo que hace que el espacio en disco crezca de forma indefinida. Si usas las funciones de replicación y decodificación lógicas en Cloud SQL, las ranuras de replicación se crean y descartan de forma automática. Las ranuras de replicación sin usar se pueden detectar si consultas la vista del sistema pg_replication_slots y filtras en la columna active . Las ranuras sin usar se pueden descartar para quitar los segmentos de WAL mediante el comando pg_drop_replication_slot .
|
La instancia de réplica usa demasiada memoria. | La réplica usa memoria temporal para almacenar en caché las operaciones de lectura solicitadas con frecuencia, lo que puede ocasionar que use más memoria que la instancia principal.
Reinicia la instancia de réplica para recuperar el espacio de memoria temporal. |
Se detuvo la replicación. | Se alcanzó el límite de almacenamiento máximo y el aumento de almacenamiento automático no está habilitado.
Edita la instancia para habilitar |
El retraso de replicación se mantiene alto. | La carga de escritura es demasiado alta para que la réplica la maneje. El retraso de la replicación se produce cuando el subproceso de SQL en una réplica no puede mantener el ritmo del subproceso de E/S. Algunos tipos de consultas o cargas de trabajo pueden causar un gran retraso de la replicación de forma temporal o permanente en un esquema determinado. Algunas de las causas típicas del retraso de la replicación son las siguientes:
Estas son algunas de las soluciones posibles:
|
Errores cuando se vuelven a compilar índices en PostgreSQL 9.6 | Recibirás un error de PostgreSQL que te informará que debes volver a compilar un índice en particular. Esto se puede hacer solo en la instancia principal. Si creas una instancia de réplica nueva, pronto recibirás el mismo error.
Los índices hash no se propagan a las réplicas en las versiones de PostgreSQL inferiores a 10.
Si debes usar índices de hash, actualiza a PostgreSQL 10 o versiones posteriores. De lo contrario, si también quieres usar réplicas, no uses índices de hash en PostgreSQL 9.6. |
La consulta en la instancia principal siempre se ejecuta. | 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 de forma continua en tu instancia principal.
|
La creación de la réplica falla con el tiempo de espera. | Las transacciones no confirmadas de larga duración en la instancia principal pueden generar una falla en la creación de la réplica 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 diferentes tamaños de CPU virtuales, puede haber problemas de rendimiento de las consultas porque el optimizador de consultas tiene en cuenta los tamaños de las CPU virtuales. |
Para resolver este problema, realiza los siguientes pasos:
Si se trata de una consulta específica, modifícala. Por ejemplo, puedes cambiar el orden de las uniones para ver si obtienes un mejor rendimiento. |
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.