Crear réplicas de lectura

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

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Busca la instancia de la que quieras crear una réplica y, a continuación, abre el menú more actions situado junto a la lista.
  3. 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.

  4. Si la instancia tenía copias de seguridad y el registro binario habilitado, continúa con el siguiente paso. De lo contrario, selecciona Automatizar copias de seguridad y Habilitar registro binario, haz clic en Continuar y, a continuación, en Guardar y reiniciar para reiniciar la instancia.

    Al habilitar el registro binario, se reinicia la instancia.

  5. 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.

  6. 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

  1. Comprueba el estado de la instancia principal:
    gcloud sql instances describe PRIMARY_INSTANCE_NAME
          

    Si la propiedad databaseReplicationEnabled es true, la instancia es una réplica y no puedes crear una réplica de una réplica.

  2. Si la propiedad enabled de backupConfiguration es false, habilita las copias de seguridad de la instancia principal ahora:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time=>HH:MM
          
    El parámetro backup-start-time se especifica en formato de 24 horas, en la zona horaria UTC±00, y determina el inicio de un periodo de copia de seguridad de 4 horas. Las copias de seguridad pueden iniciarse en cualquier momento del periodo de copia de seguridad.
  3. Si la propiedad binaryLogEnabled es false, habilita los registros binarios en la instancia principal:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    Si habilitas los registros binarios, la instancia se reiniciará.
  4. Crea la réplica:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    Si es necesario, puedes especificar otro tamaño de nivel con el parámetro --tier. Si creas una réplica a partir de una instancia principal de MySQL 8.4 o versiones posteriores, y la edición de Cloud SQL de la instancia es Enterprise o Enterprise Plus, 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.

    Puede añadir más parámetros para otros ajustes de la instancia. Para obtener más información, consulta gcloud sql instances create.

    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 puedes 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.

  • El registro binario es compatible con las instancias de réplica de lectura (solo MySQL 5.7 y versiones posteriores). No se admite en réplicas de conmutación por error de alta disponibilidad antiguas). Habilita el registro binario en una réplica con el mismo comando gcloud CLI, usando el nombre de instancia de la réplica en lugar del nombre de instancia de la principal.
    gcloud sql instances patch REPLICA_INSTANCE_NAME \
    --enable-bin-log \
    --enforce-new-network-architecture
        

    La durabilidad del registro binario en la instancia réplica (pero no en la principal) se puede definir con la marca sync_binlog, que controla la frecuencia con la que el servidor MySQL sincroniza el registro binario en el disco.

    No se pueden habilitar las copias de seguridad en las instancias de réplica, pero sí el registro binario en una réplica aunque las copias de seguridad estén inhabilitadas, a diferencia de la instancia principal.

    El periodo de retención de binlogs en las instancias réplica se define automáticamente en un día, a diferencia de los siete días de las instancias principales.

  • Usa la marca enforce-new-network-architecture 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.

Terraform

Para crear una réplica de lectura, usa el recurso de Terraform.

resource "google_sql_database_instance" "read_replica" {
  name                 = "mysql-replica-instance-name"
  master_instance_name = google_sql_database_instance.primary.name
  region               = "europe-west4"
  database_version     = "MYSQL_8_0"

  replica_configuration {
    failover_target = false
  }

  settings {
    tier              = "db-n1-standard-2"
    availability_type = "ZONAL"
    disk_size         = "100"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplica los cambios

Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

Preparar el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

Eliminar los cambios

Para eliminar los cambios, sigue estos pasos:

  1. Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor false al argumento deletion_protection.
    deletion_protection =  "false"
  2. Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply
  1. Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce yes en la petición:

    terraform destroy

REST v1

  1. Obtener la configuración de copia de seguridad actual

    Usa el método get del recurso de instancias para devolver la versión de la base de datos y la configuración de copia de seguridad actual de la principal.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • primary-instance-name: el nombre de la instancia principal

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/primary-instance-name

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  2. Verificar que los campos de replicación estén definidos

    Si enabled o pointInTimeEnabled son false, usa el método patch del recurso de instancias para habilitarlos. En la solicitud, especifica las propiedades de la configuración de la copia de seguridad que quieras cambiar.

    Para habilitar las copias de seguridad, asigna el valor enabled a true y el valor startTime a una hora del día en formato HH:MM. El parámetro startTime se especifica en formato de 24 horas, en la zona horaria UTC±00, y determina el inicio de un periodo de 4 horas para crear copias de seguridad. Las copias de seguridad pueden iniciarse en cualquier momento del periodo de copia de seguridad.

    Para habilitar la recuperación a un momento dado, asigna el valor true a pointInTimeEnabled.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME: el nombre de la instancia principal o de réplica de lectura que estás configurando para la alta disponibilidad
    • START_TIME: la hora (en horas y minutos)

    Método HTTP y URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Cuerpo JSON de la solicitud:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  3. Crea la réplica de lectura

    Usa el método insert del recurso instances para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la principal. Si la instancia principal usa una dirección IP interna, puedes especificar una allocatedIpRange de la misma forma que cuando creas una instancia principal. Si no se especifica ningún intervalo, la réplica se crea en un intervalo aleatorio. En el caso de una réplica de lectura entre regiones, especifica una región distinta a la de la instancia 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, MYSQL_8_0)
    • 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

  1. Obtener la configuración de copia de seguridad actual

    Usa el método get del recurso instances para devolver la versión de la base de datos y la configuración de copia de seguridad actual del elemento principal.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • project-id: el ID del proyecto
    • primary-instance-name: el nombre de la instancia principal

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/primary-instance-name

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  2. Verificar que los campos de replicación estén definidos

    Si enabled o binaryLogEnabled están false en la instancia principal, usa el método patch del recurso de instancias para habilitarlos. En la solicitud, especifica las propiedades de la configuración de la copia de seguridad que quieras cambiar.

    Para habilitar las copias de seguridad, asigna el valor enabled a true y el valor startTime a una hora del día en formato HH:MM. El parámetro startTime se especifica en formato de 24 horas, en la zona horaria UTC±00, y determina el inicio de un periodo de 4 horas para crear copias de seguridad. Las copias de seguridad pueden iniciarse en cualquier momento del periodo de copia de seguridad.

    Para habilitar la recuperación a un momento dado, asigna el valor true a binaryLogEnabled en la instancia principal.

    El registro binario es compatible con las instancias de réplica de lectura (solo MySQL 5.7 y versiones posteriores). Habilita el registro binario en una réplica con la misma API, pero usando el ID de instancia de la réplica en lugar del ID de instancia de la principal.

    La durabilidad del registro binario en la instancia réplica (pero no en la principal) se puede definir con la marca sync_binlog, que controla la frecuencia con la que el servidor MySQL sincroniza el registro binario en el disco.

    No se pueden habilitar las copias de seguridad en las instancias de réplica, pero sí el registro binario en una réplica aunque las copias de seguridad estén inhabilitadas, a diferencia de la instancia principal.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME: el nombre de la instancia principal o de réplica de lectura que estás configurando para la alta disponibilidad
    • START_TIME: la hora (en horas y minutos)

    Método HTTP y URL:

    PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Cuerpo JSON de la solicitud:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

  3. Crea la réplica de lectura

    Usa el método insert del recurso instances para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la principal. Si la instancia principal usa una dirección IP interna, puedes especificar una allocatedIpRange de la misma forma que cuando creas una instancia principal. En el caso de una réplica de lectura entre regiones, especifica una región distinta a la de la instancia 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, MYSQL_8_0)
    • 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": "MYSQL_8_0",
  "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": "MYSQL_8_0",
  "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

Las réplicas de lectura no tienen la marca cloudsql_iam_authentication habilitada automáticamente cuando se habilita en la instancia principal.

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:

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. 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.
  4. Selecciona Réplicas en el menú de navegación de SQL.
  5. Haz clic en el nombre de la réplica que quieras editar.
  6. Haz clic en Editar.
  7. En la sección Opciones de configuración, despliega Flags (Marcas).
  8. Selecciona + Añadir elemento.
  9. Introduce cloudsql_iam_authentication como nombre de la marca. Asegúrate de que la opción Activado esté seleccionada para esta marca.
  10. 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

  1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. En MySQL 5.7 o versiones posteriores, habilita la replicación.
  3. Haz clic en la pestaña Réplicas de la réplica que actuará como elemento superior de la réplica que quieras crear.
  4. Haz clic en Crear réplica.
  5. 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.
  6. 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.

  7. Sigue los pasos del 4 al 6 para cada réplica en cascada que quieras crear.

gcloud

  1. Si usas MySQL 5.7 o una versión posterior, habilita los registros binarios de la instancia principal de la nueva réplica:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Sustituye PARENT_REPLICA_NAME por el nombre de la réplica principal.
  2. Crea la nueva réplica especificando tu réplica principal como instancia principal con la marca --master-instance-name:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Sustituye lo siguiente:
    • REPLICA_NAME: ID único de la réplica que estás creando.
    • PARENT_REPLICA_NAME: el nombre de la réplica principal
  4. 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.

curl

  1. Si usas la versión 5.7 o posterior de MySQL, habilita el registro binario:

    Para habilitar el registro binario, guarda el siguiente JSON en un archivo llamado request.JSON y, a continuación, invoca el comando curl para habilitar el registro binario.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. 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",
        }
    }
  3. 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 max_connections sea mayor o igual que el del elemento principal.

Si la marca max_connections está configurada correctamente, inspecciona los registros en Cloud Logging para encontrar el error real.

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 set Service Networking service account as servicenetworking.serviceAgent role on consumer project, inhabilita y vuelve a habilitar Service Networking API. Esta acción crea la cuenta de servicio necesaria para continuar con el proceso.

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.
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 automatic storage increase.

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:
  • Consultas lentas en la réplica. Identifícalos y corrígelos.
  • Todas las tablas deben tener una clave principal o única. Cada actualización de una tabla de este tipo sin una clave única o principal provoca análisis completos de la tabla en la réplica.
  • Las consultas como DELETE ... WHERE field < 50000000 provocan un retraso en la replicación basada en filas, ya que se acumula un gran número de actualizaciones en la réplica.

Estas son algunas posibles soluciones:

El retraso de la replicación aumenta de repente. Esto se debe a transacciones de larga duración. Cuando se confirma una transacción (una o varias instrucciones) en la instancia de origen, la hora de inicio de la transacción se registra en el registro binario. Cuando la réplica recibe este evento de registro binario, compara esa marca de tiempo con la marca de tiempo actual para calcular el retraso de la replicación. Por lo tanto, una transacción de larga duración en la fuente provocaría un retraso de replicación grande e inmediato en la réplica. Si el número de cambios en las filas de la transacción es elevado, la réplica también tardará mucho en ejecutarla. Durante ese tiempo, la latencia de replicación aumenta. Una vez que la réplica finalice esta transacción, el periodo de puesta al día dependerá de la carga de trabajo de escritura en el origen y de la velocidad de procesamiento de la réplica.

Para evitar que la transacción se prolongue, puedes probar estas soluciones:

  • Dividir la transacción en varias transacciones pequeñas
  • Dividir una consulta de escritura grande en lotes más pequeños
  • Intenta separar las consultas SELECT largas de una transacción mixta con DMLs
Si se cambian las marcas de replicación paralela, se produce un error. Se ha asignado un valor incorrecto a una o varias de estas marcas.

En la instancia principal que muestra el mensaje de error, define las marcas de replicación en paralelo:

  1. Modifica las marcas binlog_transaction_dependency_tracking y transaction_write_set_extraction:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Añade la marca slave_pending_jobs_size_max:

    slave_pending_jobs_size_max=33554432

  3. Modifica la marca transaction_write_set_extraction:

    transaction_write_set_extraction=XXHASH64

  4. Modifica la marca binlog_transaction_dependency_tracking:

    binlog_transaction_dependency_tracking=WRITESET

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.

Siguientes pasos