En esta página se describe cómo crear una réplica de lectura de una instancia de Cloud SQL.
Una réplica de lectura es una copia de la instancia principal que refleja los cambios de la principal casi en tiempo real, en circunstancias normales. Puedes usar una réplica de lectura para descargar las solicitudes de lectura o el tráfico de analíticas de la instancia principal.
Además, para la recuperación tras fallos, puede realizar una migración regional. Si una réplica es una réplica entre regiones, puedes realizar una conmutación por error a otra región. En concreto, puedes convertir una réplica en una instancia independiente (en cuyo caso, las réplicas existentes no considerarían esa instancia como principal).
Para obtener más información sobre cómo funciona la replicación, consulta Replicación en Cloud SQL.
Antes de empezar
Si vas a crear la primera réplica de esta instancia, asegúrate de que la instancia cumpla los requisitos de las instancias principales. Más información
Crear una réplica de lectura
A continuación, se indican los pasos para crear una réplica de lectura.
Consola
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Busca la instancia de la que quieras crear una réplica y, a continuación, abre el menú
more actions
situado junto al anuncio. - Selecciona Crear réplica de lectura.
Si no ves esa opción, significa que la instancia es una réplica y no puedes crear una réplica de una réplica.
En la sección Personalizar tu instancia de la página, actualiza la configuración de tu réplica. Para empezar, haz clic en Mostrar opciones de configuración para ver los grupos de ajustes. A continuación, despliega los grupos que quieras para revisar y personalizar los ajustes. A la derecha se muestra un resumen de todas las opciones que selecciones. Personalizar estos ajustes es opcional. Se asignan valores predeterminados en todos los casos en los que no se realizan personalizaciones.
Para obtener más información sobre cada ajuste, consulta la página Acerca de los ajustes de instancias.
Por ejemplo, para permitir que otros Google Cloud servicios, como BigQuery, accedan a los datos de Cloud SQL y hagan consultas sobre ellos a través de una conexión interna, despliega el grupo Conexiones y, a continuación, desmarca la casilla IP pública.
- Haz clic en Crear réplica.
Cloud SQL crea una copia de seguridad, si es necesario, y crea la réplica. Se te redirige a la página de la instancia principal.
gcloud
Crea la réplica:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=MASTER_INSTANCE_NAME
Si es necesario, puedes especificar otro tamaño de nivel con el parámetro --tier
. Además, si creas una réplica a partir de una instancia principal y la edición de Cloud SQL de la instancia es Enterprise o Enterprise Plus (versión 16 o posterior), no tienes que especificar ningún valor para este parámetro. La réplica hereda el tipo de máquina de la instancia principal.
Puedes especificar otra región con el parámetro --region
.
Si la instancia principal solo tiene una dirección IP interna y quieres permitir que otros Google Cloud servicios, como BigQuery, accedan a los datos de Cloud SQL y hagan consultas sobre estos datos a través de una conexión interna, añade el parámetro --enable-google-private-path
al comando.
Debes crear la réplica en la misma red de VPC que la instancia principal. También puede especificar un allocated-ip-range-name
en esa red de VPC. Si no se especifica ningún intervalo, la réplica se crea en un intervalo aleatorio.
Terraform
Para crear una réplica de lectura, usa un recurso de Terraform.
REST v1
Usa el método
insert
del recurso instances para crear la réplica de lectura. Las propiedades region y databaseVersion deben ser las mismas que las del elemento principal.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- database-version: cadena de versión de enum (por ejemplo, POSTGRES_12)
- primary-instance-name: el nombre de la instancia principal
- primary-instance-region: la región de la instancia principal
- replica-region: la región de la instancia de réplica
- replica-name: nombre de la instancia de réplica
- machine-type: cadena enum del tipo de máquina. Por ejemplo: "db-custom-1-3840".
- private-network: la red autorizada que vas a añadir o seleccionar para crear una conexión privada.
Puede usar el campo sqlNetworkArchitecture
para forzar el uso de la nueva arquitectura de red en la instancia al crearla, aunque el proyecto no se haya actualizado por completo.
Para obtener más información sobre la nueva arquitectura de red y sus implicaciones, consulta los artículos
Actualizar una instancia a la nueva arquitectura de red y Asignar un intervalo de direcciones IP.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
Cuerpo JSON de la solicitud:
{ "masterInstanceName": "primary-instance-name", "project": "project-id", "databaseVersion": "database-version", "name": "replica-name", "region": "replica-region", "settings": { "tier": "machine-type", "settingsVersion": 0, "ipConfiguration": { object (IpConfiguration) }, { "ipv4Enabled": false, "privateNetwork": private-network, "requireSsl": boolean, "authorizedNetworks": [ { object (AclEntry) } ], "allocatedIpRange": string } }, "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
REST v1beta4
Usa el método
insert
del recurso instances para crear la réplica de lectura. Las propiedades region y databaseVersion deben ser las mismas que las del elemento principal.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- database-version: cadena de versión de enum (por ejemplo, POSTGRES_12)
- primary-instance-name: el nombre de la instancia principal
- primary-instance-region: la región de la instancia principal
- replica-region: la región de la instancia de réplica
- replica-name: nombre de la instancia de réplica
- machine-type: cadena enum del tipo de máquina. Por ejemplo: "db-custom-1-3840".
- private-network: la red autorizada que vas a añadir o seleccionar para crear una conexión privada.
Puede usar el campo sqlNetworkArchitecture
para forzar el uso de la nueva arquitectura de red en la instancia al crearla, aunque el proyecto no se haya actualizado por completo.
Para obtener más información sobre la nueva arquitectura de red y sus implicaciones, consulta los artículos
Actualizar una instancia a la nueva arquitectura de red y Asignar un intervalo de direcciones IP.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
Cuerpo JSON de la solicitud:
{ "masterInstanceName": "primary-instance-name", "project": "project-id", "databaseVersion": "database-version", "name": "replica-name", "region": "replica-region", "settings": { "tier": "machine-type", "settingsVersion": 0, "ipConfiguration": { object (IpConfiguration) }, { "ipv4Enabled": false, "privateNetwork": private-network, "requireSsl": boolean, "authorizedNetworks": [ { object (AclEntry) } ], "allocatedIpRange": string } }, "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Crear una réplica de lectura de una instancia con Private Service Connect habilitado
Para crear una réplica de lectura de una instancia con Private Service Connect habilitado, usa la CLI de gcloud o la API. Puedes crear esta réplica en la misma región que la instancia principal o en otra región (réplica de lectura entre regiones).
La réplica de lectura no puede replicar desde una instancia con un tipo de conectividad diferente. Por ejemplo, una instancia con Private Service Connect habilitado solo puede replicarse desde otra instancia de Private Service Connect. Tampoco puede replicar desde una instancia que admita conexiones de IP externas o desde una instancia configurada con acceso a servicios privados.
gcloud
Para crear una réplica de lectura de una instancia, usa el comando gcloud sql instances create
:
gcloud sql instances create REPLICA_INSTANCE_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip
Haz las siguientes sustituciones:
- REPLICA_INSTANCE_NAME: el nombre de la instancia de réplica.
- PRIMARY_INSTANCE_NAME: el nombre de la instancia principal.
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
- REGION_NAME: el nombre de la región de la instancia de réplica.
ALLOWED_PROJECTS: lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no está en esta lista, no puedes usarlo para crear una instancia y habilitar Private Service Connect en él.
Cloud SQL no copia los proyectos permitidos de la instancia principal en la réplica. Debes crear un punto final de Private Service Connect para cada réplica. Si usas el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, crea una zona DNS y un registro DNS para las réplicas.
- AVAILABILITY_TYPE: habilita la alta disponibilidad en la instancia. En este parámetro, especifica uno de los siguientes valores:
REGIONAL
: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona de la región seleccionada.ZONAL
: no proporcionan ninguna función de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta los artículos Configurar una instancia para alta disponibilidad y Desactivar la alta disponibilidad de una instancia.
REST v1
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PRIMARY_INSTANCE_NAME: el nombre de la instancia principal.
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
- REPLICA_INSTANCE_NAME: el nombre de la instancia de réplica.
- REGION_NAME: el nombre de la región de la instancia de réplica.
- MACHINE_TYPE: el tipo de máquina de la instancia.
- AVAILABILITY_TYPE: habilita la alta disponibilidad en la instancia. En este parámetro, especifica uno de los siguientes valores:
REGIONAL
: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona de la región seleccionada.ZONAL
: no proporcionan ninguna función de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta los artículos Configurar una instancia para alta disponibilidad y Desactivar la alta disponibilidad de una instancia.
ALLOWED_PROJECTS: lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no está en esta lista, no puedes usarlo para crear una instancia y habilitar Private Service Connect en él.
Cloud SQL no copia los proyectos permitidos de la instancia principal en la réplica. Debes crear un punto final de Private Service Connect para cada réplica. Si usas el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, debes crear una zona DNS y un registro DNS para las réplicas.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "POSTGRES_13", "name": "REPLICA_INSTANCE_NAME", "region": "REGION_NAME", "kind": "sql#instance", "settings": { "tier": "MACHINE_TYPE", "availabilityType": "AVAILABILITY_TYPE", "settingsVersion": 0, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ALLOWED_PROJECTS], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "ASYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "CREATE_REPLICA", "name": "OPERATION_ID", "targetId": "REPLICA_INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PRIMARY_INSTANCE_NAME: el nombre de la instancia principal.
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
- REPLICA_INSTANCE_NAME: el nombre de la instancia de réplica.
- REGION_NAME: el nombre de la región de la instancia de réplica.
- MACHINE_TYPE: el tipo de máquina de la instancia.
- AVAILABILITY_TYPE: habilita la alta disponibilidad en la instancia. En este parámetro, especifica uno de los siguientes valores:
REGIONAL
: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona de la región seleccionada.ZONAL
: no proporcionan ninguna función de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta los artículos Configurar una instancia para alta disponibilidad y Desactivar la alta disponibilidad de una instancia.
ALLOWED_PROJECTS: lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no está en esta lista, no puedes usarlo para crear una instancia y habilitar Private Service Connect en él.
Cloud SQL no copia los proyectos permitidos de la instancia principal en la réplica. Debes crear un punto final de Private Service Connect para cada réplica. Si usas el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, debes crear una zona DNS y un registro DNS para las réplicas.
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "POSTGRES_13", "name": "REPLICA_INSTANCE_NAME", "region": "REGION_NAME", "kind": "sql#instance", "settings": { "tier": "MACHINE_TYPE", "availabilityType": "AVAILABILITY_TYPE", "settingsVersion": 0, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ALLOWED_PROJECTS], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "ASYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "CREATE_REPLICA", "name": "OPERATION_ID", "targetId": "REPLICA_INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Configurar réplicas de lectura para la autenticación de bases de datos de gestión de identidades y accesos
Si habilitas la marcacloudsql.iam_authentication
en la instancia principal, Cloud SQL para PostgreSQL la habilitará automáticamente en las réplicas de lectura. Sin embargo, si no habilitas esta marca en la instancia principal, Cloud SQL para PostgreSQL no la habilitará en las réplicas de lectura. No puedes usar las réplicas para la autenticación de bases de datos de gestión de identidades y accesos.
Para configurar una réplica de lectura para la autenticación de bases de datos de gestión de identidades y accesos, sigue estos pasos:
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- En la tarjeta Configuración, busca la marca
cloudsql.iam_authentication
. Si la marca no está en la lista, no es necesario habilitarla en la réplica de lectura. Si la marca está en la lista, debes habilitarla en la réplica de lectura. Si necesitas habilitar la marca en la réplica de lectura, continúa con el siguiente paso. - Selecciona Réplicas en el menú de navegación de SQL.
- Haz clic en el nombre de la réplica que quieras editar.
- Haz clic en Editar.
- En la sección Opciones de configuración, despliega Flags (Marcas).
- Selecciona + Añadir elemento.
- Introduce
cloudsql.iam_authentication
como nombre de la marca. Asegúrate de que la opción Activado esté seleccionada para esta marca. - Haz clic en Guardar.
Crear réplicas en cascada
En esta sección se describe cómo crear y gestionar réplicas en cascada.
Para obtener información sobre cómo funcionan las réplicas en cascada, consulta Réplicas en cascada.
Pasos para crear una réplica en cascada
Consola
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Haz clic en la pestaña Réplicas de la réplica que actuará como elemento superior de la réplica que quieras crear.
- Haz clic en Crear réplica.
- En la página Crear réplica de lectura, actualice el ID de la instancia y cualquier otra opción de configuración, como el nombre, la región y la zona.
- Haz clic en Crear.
Cloud SQL crea una réplica. Se te redirigirá a la página de la instancia de la réplica principal.
- Sigue los pasos del 4 al 6 para cada réplica en cascada que quieras crear.
gcloud
- Crea la nueva réplica especificando tu réplica principal como instancia principal con la marca
--master-instance-name
: - REPLICA_NAME: ID único de la réplica que estás creando.
- PARENT_REPLICA_NAME: el nombre de la réplica principal
- Después de crear la réplica en cascada, verás que los cambios que se hagan en la instancia principal se replican en todas las réplicas de la cadena de réplicas en cascada.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- Para crear una réplica en la réplica principal, edita el siguiente código JSON de ejemplo y guárdalo en un archivo llamado
request.json
:{ "masterInstanceName": "PARENT_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"
Solucionar problemas
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. |
Siguientes pasos
- Más información sobre cómo administrar réplicas
- Consulte información sobre las réplicas entre regiones.