Crear réplicas de lectura

Esta página describe cómo crear una réplica de lectura para una instancia de Cloud SQL.

Una réplica de lectura es una copia de la instancia principal que refleja los cambios en esta casi en tiempo real, en circunstancias normales. Puede usar una réplica de lectura para descargar solicitudes de lectura o tráfico analítico de la instancia principal.

Además, para la recuperación ante desastres, puede realizar una migración regional. Si una réplica es interregional , puede realizar una conmutación por error a otra región; en concreto, puede convertir una réplica en una instancia independiente (en cuyo caso, las réplicas existentes no la considerarán principal).

Para obtener más información sobre cómo funciona la replicación, consulte Replicación en Cloud SQL .

Antes de empezar

Si va a crear la primera réplica de esta instancia, asegúrese de que cumpla los requisitos de las instancias principales. Más información .

Crear una réplica de lectura

Los pasos para crear una réplica de lectura se detallan a continuación.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Busque la instancia para la que desea crear una réplica y luego abra el menú more actions junto a la lista.
  3. Seleccione Crear réplica de lectura .

    Si no ve esa opción, entonces la instancia es una réplica; no puede crear una réplica de una réplica.

  4. Si la instancia tenía habilitadas las copias de seguridad y el registro binario, continúe con el siguiente paso. De lo contrario, seleccione Automatizar copias de seguridad y Habilitar registro binario , haga 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 su instancia ", actualice la configuración de su réplica. Para empezar, haga clic en "Mostrar opciones de configuración" para ver los grupos de configuración. A continuación, expanda los grupos que desee para revisar y personalizar la configuración. A la derecha, aparecerá un resumen de todas las opciones seleccionadas. Personalizar esta configuración es opcional. Si no se personaliza, se asignan los valores predeterminados.

    Para obtener más detalles sobre cada configuración, consulte la página Acerca de la configuración de instancia .

    Por ejemplo, para permitir que otros Google Cloud servicios, como BigQuery, para acceder a datos en Cloud SQL y realizar consultas sobre estos datos a través de una conexión interna, expanda el grupo Conexiones y desmarque la casilla de verificación IP pública .

  6. Haga clic en Crear réplica .

    Cloud SQL crea una copia de seguridad, si es necesario, y crea la réplica. Regresará a la página de la instancia principal.

nube g

  1. Verifique 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; no se puede crear una réplica de una réplica.

  2. Si la propiedad enabled en backupConfiguration es false , habilite las copias de seguridad para 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 especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante esta ventana.
  3. Si la propiedad binaryLogEnabled es false , habilite los registros binarios en la instancia principal:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    Al habilitar registros binarios se reinicia la instancia.
  4. Crear la réplica:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    Si es necesario, puede especificar un tamaño de nivel diferente con el parámetro --tier . Si crea una réplica a partir de una instancia principal para MySQL 8.4 y versiones posteriores, y la edición de Cloud SQL de la instancia es Enterprise o Enterprise Plus, no es necesario especificar un valor para este parámetro. La réplica hereda el tipo de máquina de la instancia principal.

    Puede especificar una región diferente utilizando el parámetro --region .

    Puedes agregar más parámetros para otras configuraciones de instancia. Para obtener más información, consulta "gcloud sql instances create" .

    Si la instancia principal solo tiene una dirección IP interna y desea permitir que otras Google Cloud servicios, como BigQuery, para acceder a datos en Cloud SQL y realizar consultas sobre estos datos a través de una conexión interna, luego agregue el parámetro --enable-google-private-path al comando.

    Debe 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 rango, la réplica se crea en un rango aleatorio.

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

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

    No se pueden habilitar las copias de seguridad en instancias de réplica, pero se puede habilitar el registro binario en una réplica incluso cuando las copias de seguridad están deshabilitadas, a diferencia de la instancia principal.

    El período de retención de binlog en las instancias de réplica se establece automáticamente en un día, a diferencia de los siete días en las instancias principales.

Terraformar

Para crear una réplica de lectura, utilice el recurso 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
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si establece 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 , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

  1. Obtener la configuración de respaldo actual

    Utilice el método get del recurso de instancias para devolver la versión de la base de datos y la configuración de respaldo actual para la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice 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 su solicitud, expanda una de estas opciones:

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

  2. Verifique que los campos de replicación estén configurados

    Si enabled o pointInTimeEnabled son false , utilice el método patch del recurso de instancias para habilitarlos. En la solicitud, especifique las propiedades de la configuración de copia de seguridad que desee modificar.

    Para habilitar las copias de seguridad, configure enabled como true y la startTime como 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 especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante la ventana de copia de seguridad.

    Para habilitar la recuperación en un punto en el tiempo, establezca pointInTimeEnabled en true .

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : el nombre de la instancia de réplica principal o de lectura que está configurando para 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 su solicitud, expanda una de estas opciones:

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

  3. Crear la réplica de lectura

    Utilice el método insert del recurso "instances" para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la de la instancia principal. Si la instancia principal usa una dirección IP interna, puede especificar un allocatedIpRange de la misma forma que al crear una instancia principal . Si no se especifica ningún rango, la réplica se crea en un rango aleatorio. Para una réplica de lectura entre regiones, especifique una región distinta a la de la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : cadena de versión de enumeración (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 : El nombre de la instancia de réplica
    • machine-type : Cadena de enumeración del tipo de máquina. Por ejemplo: "db-custom-1-3840"
    • private-network : la red autorizada que estás agregando o seleccionando para crear una conexión privada.

    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
        }
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

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

REST v1beta4

  1. Obtener la configuración de respaldo actual

    Utilice el método get del recurso de instancias para devolver la versión de la base de datos y la configuración de respaldo actual para el maestro.

    Antes de utilizar cualquiera de los datos solicitados, realice 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 su solicitud, expanda una de estas opciones:

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

  2. Verifique que los campos de replicación estén configurados

    Si enabled o binaryLogEnabled son false en la instancia principal, utilice el método patch del recurso de instancias para habilitarlos. En la solicitud, especifique las propiedades de la configuración de copia de seguridad que desee modificar.

    Para habilitar las copias de seguridad, configure enabled como true y la startTime como 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 especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante la ventana de copia de seguridad.

    Para habilitar la recuperación en un punto en el tiempo, configure binaryLogEnabled como true en la instancia principal.

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

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

    No se pueden habilitar las copias de seguridad en instancias de réplica, pero se puede habilitar el registro binario en una réplica incluso cuando las copias de seguridad están deshabilitadas, a diferencia de la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : el nombre de la instancia de réplica principal o de lectura que está configurando para 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 su solicitud, expanda una de estas opciones:

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

  3. Crear la réplica de lectura

    Utilice el método insert del recurso "instances" para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la de la instancia principal. Si la instancia principal usa una dirección IP interna, puede especificar un allocatedIpRange de la misma forma que al crear una instancia principal . Para una réplica de lectura entre regiones, especifique una región distinta a la de la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : cadena de versión de enumeración (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 : El nombre de la instancia de réplica
    • machine-type : Cadena de enumeración del tipo de máquina. Por ejemplo: "db-custom-1-3840"
    • private-network : la red autorizada que estás agregando o seleccionando para crear una conexión privada.

    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
        }
        
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

    Debería 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 Conexión de servicio privado habilitada, utilice La CLI o la API de gcloud . Puede crear esta réplica en la misma región o en una diferente a la de la instancia principal ( 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 la Conexión de Servicio Privado habilitada solo puede replicar desde otra instancia con Conexión de Servicio Privado. Tampoco puede replicar desde una instancia que admita conexiones IP externas ni desde una instancia configurada con acceso a servicios privados .

nube g

Para crear una réplica de lectura de una instancia, utilice 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

Realice 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 número de proyecto del Google Cloud proyecto que contiene la instancia.
  • REGION_NAME : el nombre de la región para la instancia de réplica.
  • ALLOWED_PROJECTS : lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no figura en esta lista, no podrá usarlo para crear una instancia ni habilitar la Conexión de Servicio Privado.

    Cloud SQL no copia los proyectos permitidos para la instancia principal a la réplica. Para cada réplica, debe crear un punto de conexión de servicio privado . Si utiliza el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL , cree una zona DNS y un registro DNS para las réplicas.

  • AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilita la alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada.
    • ZONAL : no proporciona conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : el nombre de la instancia principal.
  • PROJECT_ID : el ID o 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 para la instancia de réplica.
  • MACHINE_TYPE : el tipo de máquina para la instancia.
  • AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilita la alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada.
    • ZONAL : no proporciona conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no figura en esta lista, no podrá usarlo para crear una instancia ni habilitar la Conexión de Servicio Privado.

    Cloud SQL no copia los proyectos permitidos para la instancia principal a la réplica. Para cada réplica, debe crear un punto de conexión de servicio privado . Si utiliza el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL , debe 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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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 utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : el nombre de la instancia principal.
  • PROJECT_ID : el ID o 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 para la instancia de réplica.
  • MACHINE_TYPE : el tipo de máquina para la instancia.
  • AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilita la alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada.
    • ZONAL : no proporciona conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no figura en esta lista, no podrá usarlo para crear una instancia ni habilitar la Conexión de Servicio Privado.

    Cloud SQL no copia los proyectos permitidos para la instancia principal a la réplica. Para cada réplica, debe crear un punto de conexión de servicio privado . Si utiliza el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL , debe 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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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 la base de datos IAM

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

Para configurar una réplica de lectura para la autenticación de la base de datos IAM:

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
  3. En el mosaico de Configuración, busque el indicador cloudsql_iam_authentication . Si no aparece en la lista, no es necesario habilitarlo en la réplica de lectura. Si aparece, debe habilitarlo en la réplica de lectura. Si necesita habilitarlo en la réplica de lectura, continúe con el siguiente paso.
  4. Seleccione Réplicas en el menú de navegación de SQL.
  5. Haga clic en el nombre de la réplica que desea editar.
  6. Haga clic en Editar .
  7. En la sección Opciones de configuración , expanda Banderas .
  8. Seleccionar + Agregar elemento.
  9. Introduzca cloudsql_iam_authentication como nombre de la bandera. Asegúrese de que esté activada.
  10. Haga clic en Guardar .

Crear réplicas en cascada

Esta sección describe cómo crear y administrar réplicas en cascada.

Para obtener información sobre cómo funcionan las réplicas en cascada, consulte Réplicas en cascada .

Pasos para crear una réplica en cascada

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para MySQL 5.7 o posterior, habilite la replicación .
  3. Haga clic en la pestaña Réplicas de la réplica que actuará como padre de la réplica que desea crear.
  4. Haga clic en Crear réplica .
  5. En la página Crear réplica de lectura , actualice el ID de instancia y cualquier otra opción de configuración, incluido el nombre, la región y la zona.
  6. Haga clic en Crear .

    Cloud SQL crea una réplica. Regresará a la página de la instancia de la réplica principal.

  7. Siga los pasos 4 a 6 para cada nueva réplica en cascada que desee crear.

nube g

  1. Si está utilizando MySQL versión 5.7 o posterior, habilite los binlogs para la réplica principal de la nueva:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Reemplace PARENT_REPLICA_NAME con el nombre de la réplica principal.
  2. Cree la nueva réplica especificando su réplica principal como la instancia principal utilizando el indicador --master-instance-name :
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Reemplace lo siguiente:
    • REPLICA_NAME : el ID único de la réplica que está creando
    • PARENT_REPLICA_NAME : el nombre de la réplica principal
  4. Después de crear la réplica en cascada, puede ver que los cambios realizados en la instancia principal se replican en todas las réplicas de la cadena de réplicas en cascada.

rizo

  1. Si está utilizando MySQL versión 5.7 o posterior, habilite el registro binario:

    Para habilitar el registro binario, guarde el siguiente JSON en un archivo llamado request.JSON y luego invoque el comando curl para habilitar el registro binario.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. Para crear una réplica bajo la réplica principal, edite el siguiente ejemplo de código JSON y guárdelo en un archivo llamado request.json :
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Ejecute 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

Asunto Solución de problemas
La réplica de lectura no comenzó a replicarse durante la creación. Probablemente haya un error más específico en los archivos de registro. Inspeccione los registros en Cloud Logging para encontrar el error real.
No se puede crear una réplica de lectura: error invalidFlagValue. Una de las banderas de la solicitud no es válida. Podría ser una bandera que usted proporcionó explícitamente o una que se configuró con un valor predeterminado.

Primero, verifique que el valor del indicador max_connections sea mayor o igual al valor del principal.

Si el indicador max_connections está configurado correctamente, inspeccione los registros en Cloud Logging para encontrar el error real.

No se puede crear una réplica de lectura: error desconocido. Probablemente haya un error más específico en los archivos de registro. Inspeccione 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 , deshabilite y vuelva a habilitar la 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 alcanzar su capacidad máxima durante la creación de la réplica. Edite la instancia principal para ampliarla a un disco de mayor capacidad.
La instancia de réplica está utilizando demasiada memoria. La réplica utiliza memoria temporal para almacenar en caché operaciones de lectura solicitadas con frecuencia, lo que puede provocar que utilice más memoria que la instancia principal.

Reinicie la instancia de réplica para recuperar el espacio de memoria temporal.

La replicación se detuvo. Se alcanzó el límite máximo de almacenamiento y el aumento automático de almacenamiento no está habilitado.

Edite la instancia para habilitar automatic storage increase .

El retraso en la replicación es constantemente alto. La carga de escritura es demasiado alta para que la réplica la pueda gestionar. El retraso de replicación 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 causar un retraso de replicación elevado, temporal o permanente, para un esquema determinado. Algunas de las causas típicas del retraso de replicación son:
  • Consultas lentas en la réplica. Encuéntrelas y corríjalas.
  • Todas las tablas deben tener una clave única/principal. Cualquier actualización en una tabla sin una clave única/principal provoca escaneos completos de la réplica.
  • Consultas como DELETE ... WHERE field < 50000000 provocan retrasos en la replicación con la replicación basada en filas, ya que una gran cantidad de actualizaciones se acumulan en la réplica.

Algunas posibles soluciones incluyen:

El retraso en la replicación aumenta repentinamente. Esto se debe a transacciones de larga duración. Cuando una transacción (de una sola sentencia o de varias sentencias) se confirma en la instancia de origen, la hora de inicio se registra en el registro binario. Cuando la réplica recibe este evento del registro binario, compara esa marca de tiempo con la marca de tiempo actual para calcular el retraso de replicación. Por lo tanto, una transacción de larga duración en el origen generaría un retraso de replicación considerable de inmediato en la réplica. Si la cantidad de cambios de fila en la transacción es grande, la réplica también tardaría mucho en ejecutarla. Durante este tiempo, el retraso de replicación aumenta. Una vez que la réplica finaliza esta transacción, el tiempo de recuperación dependerá de la carga de trabajo de escritura en el origen y de su velocidad de procesamiento.

Para evitar una transacción larga, algunas posibles soluciones incluyen:

  • Divida la transacción en varias transacciones pequeñas
  • Divida una única consulta de escritura grande en lotes más pequeños
  • Intente separar las consultas SELECT largas de una transacción mezclada con DML
Cambiar los indicadores de replicación paralela genera un error. Se ha establecido un valor incorrecto para uno o más de estos indicadores.

En la instancia principal que muestra el mensaje de error, configure los indicadores de replicación paralela:

  1. Modifique los indicadores binlog_transaction_dependency_tracking y transaction_write_set_extraction :
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Agregue el indicador slave_pending_jobs_size_max :

    slave_pending_jobs_size_max=33554432

  3. Modificar el indicador transaction_write_set_extraction :

    transaction_write_set_extraction=XXHASH64

  4. Modificar el indicador binlog_transaction_dependency_tracking :

    binlog_transaction_dependency_tracking=WRITESET

La creación de una réplica falla debido al tiempo de espera. Las transacciones no confirmadas de ejecución prolongada en la instancia principal pueden provocar que falle la creación de una réplica de lectura.

Vuelva a crear la réplica después de detener todas las consultas en ejecución.

¿Qué sigue?

,

Esta página describe cómo crear una réplica de lectura para una instancia de Cloud SQL.

Una réplica de lectura es una copia de la instancia principal que refleja los cambios en esta casi en tiempo real, en circunstancias normales. Puede usar una réplica de lectura para descargar solicitudes de lectura o tráfico analítico de la instancia principal.

Además, para la recuperación ante desastres, puede realizar una migración regional. Si una réplica es interregional , puede realizar una conmutación por error a otra región; en concreto, puede convertir una réplica en una instancia independiente (en cuyo caso, las réplicas existentes no la considerarán principal).

Para obtener más información sobre cómo funciona la replicación, consulte Replicación en Cloud SQL .

Antes de empezar

Si va a crear la primera réplica de esta instancia, asegúrese de que cumpla los requisitos de las instancias principales. Más información .

Crear una réplica de lectura

Los pasos para crear una réplica de lectura se detallan a continuación.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Busque la instancia para la que desea crear una réplica y luego abra el menú more actions junto a la lista.
  3. Seleccione Crear réplica de lectura .

    Si no ve esa opción, entonces la instancia es una réplica; no puede crear una réplica de una réplica.

  4. Si la instancia tenía habilitadas las copias de seguridad y el registro binario, continúe con el siguiente paso. De lo contrario, seleccione Automatizar copias de seguridad y Habilitar registro binario , haga 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 su instancia ", actualice la configuración de su réplica. Para empezar, haga clic en "Mostrar opciones de configuración" para ver los grupos de configuración. A continuación, expanda los grupos que desee para revisar y personalizar la configuración. A la derecha, aparecerá un resumen de todas las opciones seleccionadas. Personalizar esta configuración es opcional. Si no se personaliza, se asignan los valores predeterminados.

    Para obtener más detalles sobre cada configuración, consulte la página Acerca de la configuración de instancia .

    Por ejemplo, para permitir que otros Google Cloud servicios, como BigQuery, para acceder a datos en Cloud SQL y realizar consultas sobre estos datos a través de una conexión interna, expanda el grupo Conexiones y desmarque la casilla de verificación IP pública .

  6. Haga clic en Crear réplica .

    Cloud SQL crea una copia de seguridad, si es necesario, y crea la réplica. Regresará a la página de la instancia principal.

nube g

  1. Verifique 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; no se puede crear una réplica de una réplica.

  2. Si la propiedad enabled en backupConfiguration es false , habilite las copias de seguridad para 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 especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante esta ventana.
  3. Si la propiedad binaryLogEnabled es false , habilite los registros binarios en la instancia principal:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    Al habilitar registros binarios se reinicia la instancia.
  4. Crear la réplica:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    Si es necesario, puede especificar un tamaño de nivel diferente con el parámetro --tier . Si crea una réplica a partir de una instancia principal para MySQL 8.4 y versiones posteriores, y la edición de Cloud SQL de la instancia es Enterprise o Enterprise Plus, no es necesario especificar un valor para este parámetro. La réplica hereda el tipo de máquina de la instancia principal.

    Puede especificar una región diferente utilizando el parámetro --region .

    Puedes agregar más parámetros para otras configuraciones de instancia. Para obtener más información, consulta "gcloud sql instances create" .

    Si la instancia principal solo tiene una dirección IP interna y desea permitir que otras Google Cloud servicios, como BigQuery, para acceder a datos en Cloud SQL y realizar consultas sobre estos datos a través de una conexión interna, luego agregue el parámetro --enable-google-private-path al comando.

    Debe 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 rango, la réplica se crea en un rango aleatorio.

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

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

    No se pueden habilitar las copias de seguridad en instancias de réplica, pero se puede habilitar el registro binario en una réplica incluso cuando las copias de seguridad están deshabilitadas, a diferencia de la instancia principal.

    El período de retención de binlog en las instancias de réplica se establece automáticamente en un día, a diferencia de los siete días en las instancias principales.

Terraformar

Para crear una réplica de lectura, utilice el recurso 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
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si establece 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 , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

  1. Obtener la configuración de respaldo actual

    Utilice el método get del recurso de instancias para devolver la versión de la base de datos y la configuración de respaldo actual para la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice 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 su solicitud, expanda una de estas opciones:

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

  2. Verifique que los campos de replicación estén configurados

    Si enabled o pointInTimeEnabled son false , utilice el método patch del recurso de instancias para habilitarlos. En la solicitud, especifique las propiedades de la configuración de copia de seguridad que desee modificar.

    Para habilitar las copias de seguridad, configure enabled como true y la startTime como 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 especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante la ventana de copia de seguridad.

    Para habilitar la recuperación en un punto en el tiempo, establezca pointInTimeEnabled en true .

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : el nombre de la instancia de réplica principal o de lectura que está configurando para 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 su solicitud, expanda una de estas opciones:

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

  3. Crear la réplica de lectura

    Utilice el método insert del recurso "instances" para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la de la instancia principal. Si la instancia principal usa una dirección IP interna, puede especificar un allocatedIpRange de la misma forma que al crear una instancia principal . Si no se especifica ningún rango, la réplica se crea en un rango aleatorio. Para una réplica de lectura entre regiones, especifique una región distinta a la de la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : cadena de versión de enumeración (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 : El nombre de la instancia de réplica
    • machine-type : Cadena de enumeración del tipo de máquina. Por ejemplo: "db-custom-1-3840"
    • private-network : la red autorizada que estás agregando o seleccionando para crear una conexión privada.

    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
        }
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

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

REST v1beta4

  1. Obtener la configuración de respaldo actual

    Utilice el método get del recurso de instancias para devolver la versión de la base de datos y la configuración de respaldo actual para el maestro.

    Antes de utilizar cualquiera de los datos solicitados, realice 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 su solicitud, expanda una de estas opciones:

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

  2. Verifique que los campos de replicación estén configurados

    Si enabled o binaryLogEnabled son false en la instancia principal, utilice el método patch del recurso de instancias para habilitarlos. En la solicitud, especifique las propiedades de la configuración de copia de seguridad que desee modificar.

    Para habilitar las copias de seguridad, configure enabled como true y la startTime como 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 especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante la ventana de copia de seguridad.

    Para habilitar la recuperación en un punto en el tiempo, configure binaryLogEnabled como true en la instancia principal.

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

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

    No se pueden habilitar las copias de seguridad en instancias de réplica, pero se puede habilitar el registro binario en una réplica incluso cuando las copias de seguridad están deshabilitadas, a diferencia de la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : el nombre de la instancia de réplica principal o de lectura que está configurando para 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 su solicitud, expanda una de estas opciones:

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

  3. Crear la réplica de lectura

    Utilice el método insert del recurso "instances" para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la de la instancia principal. Si la instancia principal usa una dirección IP interna, puede especificar un allocatedIpRange de la misma forma que al crear una instancia principal . Para una réplica de lectura entre regiones, especifique una región distinta a la de la instancia principal.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : cadena de versión de enumeración (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 : el 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 está agregando o seleccionando para crear una conexión privada.

    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
        }
        
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

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

Cree una réplica de lectura de una instancia con el servicio privado Connect habilitado

Para crear una réplica de lectura de una instancia con el servicio privado Connect habilitado, use GCLOUD CLI o la API. Puede crear esta réplica en la misma región o en una región diferente de la instancia primaria ( réplica de lectura de región cruzada ).

La réplica de lectura no puede replicarse de una instancia con un tipo de conectividad diferente. Por ejemplo, una instancia con servicio privado Connect habilitado solo puede replicarse desde otra instancia de servicio privado Connect. Tampoco puede replicarse desde una instancia que admite conexiones IP externas o desde una instancia configurada con acceso a servicios privados .

nube g

Para crear una réplica de lectura de una instancia, use 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

Realice las siguientes sustituciones:

  • REPLICA_INSTANCE_NAME : el nombre de la instancia de réplica.
  • PRIMARY_INSTANCE_NAME : el nombre de la instancia primaria.
  • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene la instancia.
  • REGION_NAME : el nombre de la región para la instancia de réplica.
  • ALLOWED_PROJECTS : una lista de ID o números de proyecto permitidos, separados por comas. Si un proyecto no está contenido en esta lista, entonces no puede usarlo para crear una instancia y habilitar el servicio privado Connect para ella.

    Cloud SQL no copia los proyectos permitidos para la instancia primaria a la réplica. Para cada réplica, debe crear un punto final de servicio privado Connect . Si está utilizando los conectores de lenguaje Cloud SQL Auth o Language SQL , cree una zona DNS y un registro DNS para las réplicas.

  • AVAILABILITY_TYPE : habilite una alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilite la alta disponibilidad y se recomienda para instancias de producción. La instancia falla a otra zona dentro de su región seleccionada.
    • ZONAL : no proporcione capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar una alta disponibilidad para instancias, consulte Configurar una instancia existente para obtener una alta disponibilidad y desactivar la alta disponibilidad para una instancia .

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : el nombre de la instancia primaria.
  • PROJECT_ID : el ID o 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 para la instancia de réplica.
  • MACHINE_TYPE : el tipo de máquina para la instancia.
  • AVAILABILITY_TYPE : habilite una alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilite la alta disponibilidad y se recomienda para instancias de producción. La instancia falla a otra zona dentro de su región seleccionada.
    • ZONAL : no proporcione capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar una alta disponibilidad para instancias, consulte Configurar una instancia existente para obtener una alta disponibilidad y desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : una lista de ID o números de proyecto permitidos, separados por comas. Si un proyecto no está contenido en esta lista, entonces no puede usarlo para crear una instancia y habilitar el servicio privado Connect para ella.

    Cloud SQL no copia los proyectos permitidos para la instancia primaria a la réplica. Para cada réplica, debe crear un punto final de servicio privado Connect . Si está utilizando los conectores de lenguaje Cloud SQL Auth o Cloud SQL SQL , debe crear un registro DNS Zone y 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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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 utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : el nombre de la instancia primaria.
  • PROJECT_ID : el ID o 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 para la instancia de réplica.
  • MACHINE_TYPE : el tipo de máquina para la instancia.
  • AVAILABILITY_TYPE : habilite una alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilite la alta disponibilidad y se recomienda para instancias de producción. La instancia falla a otra zona dentro de su región seleccionada.
    • ZONAL : no proporcione capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar una alta disponibilidad para instancias, consulte Configurar una instancia existente para obtener una alta disponibilidad y desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : una lista de ID o números de proyecto permitidos, separados por comas. Si un proyecto no está contenido en esta lista, entonces no puede usarlo para crear una instancia y habilitar el servicio privado Connect para ella.

    Cloud SQL no copia los proyectos permitidos para la instancia primaria a la réplica. Para cada réplica, debe crear un punto final de servicio privado Connect . Si está utilizando los conectores de lenguaje Cloud SQL Auth o Cloud SQL SQL , debe crear un registro DNS Zone y 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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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 replicas de lectura para la autenticación de la base de datos IAM

Leer las réplicas no tienen el indicador cloudsql_iam_authentication habilitado automáticamente cuando está habilitado en la instancia principal.

Para configurar una réplica de lectura para la autenticación de la base de datos IAM:

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
  3. En el mosaico de configuración, busque el indicador cloudsql_iam_authentication . Si la bandera no está en la lista, habilitar la bandera en la réplica de lectura es innecesario. Si la bandera está en la lista, debe habilitar la bandera en la réplica de lectura. Si necesita habilitar la bandera en la réplica de lectura, continúe con el siguiente paso.
  4. Seleccione Replicas en el menú de navegación SQL.
  5. Haga clic en el nombre de la réplica que desea editar.
  6. Haga clic en Editar .
  7. En la sección Opciones de configuración , expandir los indicadores .
  8. Seleccione + Agregar elemento.
  9. Ingrese cloudsql_iam_authentication para el nombre del indicador. Asegúrese de que ON esté seleccionado para esta bandera.
  10. Haga clic en Guardar .

Crear réplicas en cascada

Esta sección describe cómo crear y administrar réplicas en cascada.

Para obtener información sobre cómo funcionan las réplicas en cascada, consulte las réplicas en cascada .

Pasos para crear una réplica en cascada

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para MySQL 5.7 o posterior, habilite la replicación .
  3. Haga clic en la pestaña Replicas para la réplica que actuará como padre para la réplica que desea crear.
  4. Haga clic en Crear réplica .
  5. En la página Crear réplica de lectura , actualice el ID de instancia y cualquier otra opción de configuración, incluidos el nombre, la región y la zona.
  6. Haga clic en Crear .

    Cloud SQL crea una réplica. Te devuelven a la página de instancia para la réplica principal.

  7. Siga los pasos 4-6 para cada nueva réplica en cascada que desea crear.

nube g

  1. Si está utilizando MySQL versión 5.7 o posterior, habilite binlogs para la primaria de la nueva réplica:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Reemplace PARENT_REPLICA_NAME con el nombre de la réplica principal.
  2. Cree la nueva réplica especificando su réplica principal como la instancia principal utilizando el indicador --master-instance-name :
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Reemplace lo siguiente:
    • REPLICA_NAME : la identificación única para la réplica que está creando
    • PARENT_REPLICA_NAME : el nombre de la réplica principal
  4. Después de crear la réplica en cascada, puede ver que los cambios realizados en la instancia primaria se replican a través de todas las réplicas en la cadena de réplicas en cascada.

rizo

  1. Si está utilizando MySQL versión 5.7 o posterior, habilite el registro binario:

    Para habilitar el registro binario, guarde el siguiente JSON en un archivo llamado request.json, luego invoque 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, edite la siguiente muestra del código JSON y guárdela en un archivo llamado request.json :
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Ejecute 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

Asunto Solución de problemas
Leer réplica no comenzó a replicar en la creación. Probablemente haya un error más específico en los archivos de registro. Inspeccione los registros de registro en la nube para encontrar el error real.
No se puede crear la réplica de lectura: error de FlagValue inválido. Una de las banderas en la solicitud no es válida. Podría ser una bandera que proporcionó explícitamente o una que se estableció en un valor predeterminado.

Primero, verifique que el valor del indicador max_connections sea mayor o igual que el valor en el primario.

Si el indicador max_connections se establece adecuadamente, inspeccione los registros de registros en la nube para encontrar el error real.

No se puede crear la réplica de lectura - error desconocido. Probablemente haya un error más específico en los archivos de registro. Inspeccione los registros de registro en la nube para encontrar el error real.

Si el error es: set Service Networking service account as servicenetworking.serviceAgent role on consumer project . Esta acción crea la cuenta de Service Networking API necesaria para continuar con el proceso.

El disco está lleno. El tamaño del disco de instancia principal puede llenarse durante la creación de réplicas. Edite la instancia principal para actualizarlo a un tamaño de disco más grande.
La instancia de réplica está usando demasiada memoria. La réplica utiliza la memoria temporal para almacenar en caché las operaciones de lectura a menudo solicitadas, lo que puede llevarla a usar más memoria que la instancia principal.

Reinicie la instancia de réplica para recuperar el espacio de memoria temporal.

La replicación se detuvo. Se alcanzó el límite de almacenamiento máximo y el aumento de almacenamiento automático no está habilitado.

Edite la instancia para habilitar automatic storage increase .

El retraso de replicación es consistentemente alto. La carga de escritura es demasiado alta para que la réplica maneje. El retraso de la replicación tiene lugar cuando el hilo SQL en una réplica no puede mantenerse al día con el hilo IO. Algunos tipos de consultas o cargas de trabajo pueden causar retraso de replicación alta o permanente para un esquema dado. Algunas de las causas típicas del retraso de replicación son:
  • Consultas lentas en la réplica. Encontrarlos y arreglarlos.
  • Todas las tablas deben tener una clave única/primaria. Cada actualización en una tabla de este tipo sin una clave única/primaria provoca escaneos de mesa completos en la réplica.
  • Consultas como DELETE ... WHERE field < 50000000 causa retraso de replicación con replicación basada en la fila ya que una gran cantidad de actualizaciones se acumulan en la réplica.

Algunas posibles soluciones incluyen:

La replicación retrasa repentinamente. Esto es causado por transacciones de larga duración. Cuando una transacción (declaración única o estados múltiples) se compromete 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 Binlog, 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 daría como resultado un retraso de replicación grande inmediato en la réplica. Si la cantidad de cambios de fila en la transacción es grande, la réplica también pasaría mucho tiempo para ejecutarla. Durante el tiempo, el retraso de la replicación está aumentando. Una vez que la réplica termine esta transacción, el período de recuperación dependería de la carga de trabajo de escritura en la fuente y la velocidad de procesamiento de la réplica.

Para evitar una transacción larga, algunas soluciones posibles incluyen:

  • Dividir la transacción en múltiples transacciones pequeñas
  • Frage una sola consulta de escritura grande en lotes más pequeños
  • Intente separar las consultas de selección larga de una transacción mezclada con DMLS
Cambiar los indicadores de replicación paralela da como resultado un error. Se establece un valor incorrecto para una de o más de estas banderas.

En la instancia primaria que muestra el mensaje de error, configure los indicadores de replicación paralelo:

  1. Modifique los flags binlog_transaction_dependency_tracking y transaction_write_set_extraction :
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Agregue el indicador slave_pending_jobs_size_max :

    slave_pending_jobs_size_max=33554432

  3. Modifique el indicador transaction_write_set_extraction :

    transaction_write_set_extraction=XXHASH64

  4. Modificar el indicador binlog_transaction_dependency_tracking :

    binlog_transaction_dependency_tracking=WRITESET

La creación de réplica falla con el tiempo de espera. Las transacciones no comprometidas de larga duración en la instancia primaria pueden hacer que la creación de réplica de lectura falle.

Recrea la réplica después de detener todas las consultas de carrera.

¿Qué sigue?

,

Esta página describe cómo crear una réplica de lectura para una instancia de SQL en la nube.

Una réplica de lectura es una copia de la instancia primaria que refleja los cambios en el primario en tiempo casi real, en circunstancias normales. Puede usar una réplica de lectura para descargar solicitudes de lectura o tráfico de análisis desde la instancia principal.

Además, para la recuperación ante desastres, puede realizar una migración regional. Si una réplica es una réplica de región cruzada , puede realizar una conmutación por error a otra región; Específicamente, puede promover una réplica a una instancia independiente (en cuyo caso, las réplicas existentes no considerarían esa instancia como primaria).

Para obtener más información sobre cómo funciona la replicación, consulte Replicación en Cloud SQL .

Antes de empezar

Si está creando la primera réplica para esta instancia, asegúrese de que la instancia cumpla con los requisitos para las instancias primarias. Aprende más .

Crear una réplica de lectura

Los pasos para crear una réplica de lectura están a continuación.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Encuentre la instancia para la que desea crear una réplica y luego abra el menú more actions junto al listado.
  3. Seleccione Crear réplica de lectura .

    Si no ve esa opción, entonces la instancia es una réplica; No puedes crear una réplica de una réplica.

  4. Si la instancia tenía copias de seguridad y registro binario habilitado, continúe con el siguiente paso. De lo contrario, seleccione automatizar copias de seguridad y habilite el registro binario , haga clic en Continuar y luego haga clic en Guardar y reiniciar para reiniciar la instancia.

    Habilitar el registro binario hace que la instancia se reinicie.

  5. En la sección Personalizar su instancia de la página, actualice la configuración de su réplica. Comience haciendo clic en Mostrar opciones de configuración para mostrar los grupos de configuraciones. Luego, expanda los grupos deseados para revisar y personalizar la configuración. Un resumen de todas las opciones que selecciona aparece a la derecha. Personalizar estas configuraciones es opcional. Los valores predeterminados se asignan en todos los casos donde no se realizan personalizaciones.

    Para obtener más detalles sobre cada configuración, consulte la página Configuración de Instance .

    Por ejemplo, para permitir otro Google Cloud Servicios, como BigQuery, para acceder a los datos en la nube SQL y hacer consultas contra estos datos a través de una conexión interna, expandir el grupo de conexiones y luego anular la selección de la casilla de verificación Pública IP .

  6. Haga clic en Crear réplica .

    Cloud SQL crea una copia de seguridad, si es necesario, y crea la réplica. Te devuelven a la página de instancia para la primaria.

nube g

  1. Verifique el estado de la instancia primaria:
    gcloud sql instances describe PRIMARY_INSTANCE_NAME
          

    Si la propiedad databaseReplicationEnabled es true , la instancia es una réplica; No puede crear una réplica de una réplica.

  2. Si la propiedad enabled en backupConfiguration es false , habilite las copias de seguridad para la instancia primaria ahora:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time=>HH:MM
          
    El parámetro de backup-start-time se especifica en tiempo de 24 horas, en la zona horaria de UTC ± 00, y especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante la ventana de copia de seguridad.
  3. Si la propiedad binaryLogEnabled es false , habilite los registros binarios en la instancia primaria:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    Habilitar registros binarios hace que la instancia se reinicie.
  4. Crea la réplica:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    Puede especificar un tamaño de nivel diferente utilizando el parámetro --tier , si es necesario. Si está creando una réplica a partir de una instancia primaria para MySQL 8.4 y más tarde, y la edición SQL Cloud para la instancia es Enterprise o es Enterprise Plus, entonces no tiene que especificar un valor para este parámetro. La réplica hereda el tipo de máquina de la instancia primaria.

    Puede especificar una región diferente utilizando el parámetro --region .

    Puede agregar más parámetros para otras configuraciones de instancias. Para obtener más información, vea las instancias de GCLOUD SQL Create .

    Si la instancia primaria tiene solo una dirección IP interna y desea permitir que otros Google Cloud Servicios, como BigQuery, para acceder a los datos en la nube SQL y hacer consultas contra estos datos a través de una conexión interna, luego agregue el parámetro --enable-google-private-path al comando.

    Debe crear la réplica en la misma red VPC que la instancia principal. También puede especificar un allocated-ip-range-name en esa red VPC. Si no se especifica un rango, la réplica se crea en un rango aleatorio.

  • El registro binario es compatible con instancias de réplicas de lectura (MySQL 5.7 y luego solo. No es compatible con las réplicas de conmutación por error Legacy HA). Habilite el registro binario en una réplica con el mismo comando gcloud CLI , utilizando el nombre de instancia de la réplica en lugar del nombre de la instancia de la primaria.
    gcloud sql instances patch REPLICA_INSTANCE_NAME \
    --enable-bin-log
        

    La durabilidad de registro binario en la instancia de réplica (pero no en la primaria) se puede configurar con el indicador sync_binlog , que controla con qué frecuencia el servidor MySQL sincroniza el registro binario al disco.

    Las copias de seguridad no se pueden habilitar en instancias de réplicas, pero el registro binario se puede habilitar en una réplica incluso cuando las copias de seguridad están deshabilitadas, a diferencia de la primaria.

    El período de retención de Binlog en instancias de réplicas se establece automáticamente en un día, a diferencia de los siete días en instancias principales.

Terraformar

Para crear una réplica de lectura, use el recurso 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
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si establece 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 , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

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

    Use 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 para la primaria.

    Antes de utilizar cualquiera de los datos solicitados, realice 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 su solicitud, expanda una de estas opciones:

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

  2. Verifique que los campos de replicación estén establecidos

    Si enabled o pointInTimeEnabled es false , use el método patch del recurso de instancias para habilitarlos a ambos. En la solicitud, especifique cualquier propiedad de la configuración de copia de seguridad que desee cambiar.

    Para habilitar las copias de seguridad, establezca enabled para true y la startTime a una hora del día en formato HH:MM . El parámetro de startTime se especifica en tiempo de 24 horas, en la zona horaria de UTC ± 00, y especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante la ventana de copia de seguridad.

    Para habilitar la recuperación de punto en el tiempo, establezca pointInTimeEnabled a true .

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : el nombre de la instancia de réplica primaria o de lectura que está configurando para 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 su solicitud, expanda una de estas opciones:

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

  3. Crea la réplica de lectura

    Use el método insert del recurso de instancias para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la primaria. Si la instancia primaria usa una dirección IP interna, puede especificar un allocatedIpRange de la misma manera que cuando crea una instancia primaria . Si no se especifica un rango, la réplica se crea en un rango aleatorio. Para una réplica de lectura de región cruzada, especifique una región que no sea la región de la instancia primaria.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : cadena de versión enum (por ejemplo, mysql_8_0)
    • primary-instance-name : el nombre de la instancia principal
    • primary-instance-region : la región de la instancia primaria
    • replica-region : la región de la instancia de réplica
    • replica-name : el 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 está agregando o seleccionando para crear una conexión privada.

    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
        }
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

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

REST v1beta4

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

    Use 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 para el maestro.

    Antes de utilizar cualquiera de los datos solicitados, realice 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 su solicitud, expanda una de estas opciones:

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

  2. Verifique que los campos de replicación estén establecidos

    Si enabled o binaryLogEnabled es false en la instancia primaria, use el método patch del recurso de instancias para habilitarlos a ambos. En la solicitud, especifique cualquier propiedad de la configuración de copia de seguridad que desee cambiar.

    Para habilitar las copias de seguridad, establezca enabled para true y la startTime a una hora del día en formato HH:MM . El parámetro de startTime se especifica en tiempo de 24 horas, en la zona horaria de UTC ± 00, y especifica el inicio de una ventana de copia de seguridad de 4 horas. Las copias de seguridad pueden comenzar en cualquier momento durante la ventana de copia de seguridad.

    Para habilitar la recuperación de punto en el tiempo, establezca binaryLogEnabled en true en la instancia primaria.

    El registro binario es compatible con instancias de réplica de lectura (MySQL 5.7 y más tarde solo). Habilite el registro binario en una réplica con la misma API, utilizando la ID de instancia de la réplica en lugar de la ID de instancia de la primaria.

    La durabilidad de registro binario en la instancia de réplica (pero no en la primaria) se puede configurar con el indicador sync_binlog , que controla con qué frecuencia el servidor MySQL sincroniza el registro binario al disco.

    Las copias de seguridad no se pueden habilitar en instancias de réplicas, pero el registro binario se puede habilitar en una réplica incluso cuando las copias de seguridad están deshabilitadas, a diferencia de la primaria.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : el nombre de la instancia de réplica primaria o de lectura que está configurando para 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 su solicitud, expanda una de estas opciones:

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

  3. Crea la réplica de lectura

    Use el método insert del recurso de instancias para crear la réplica de lectura. La propiedad databaseVersion debe ser la misma que la primaria. Si la instancia primaria usa una dirección IP interna, puede especificar un allocatedIpRange de la misma manera que cuando crea una instancia primaria . Para una réplica de lectura de región cruzada, especifique una región que no sea la región de la instancia primaria.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : cadena de versión enum (por ejemplo, mysql_8_0)
    • primary-instance-name : el nombre de la instancia principal
    • primary-instance-region : la región de la instancia primaria
    • replica-region : la región de la instancia de réplica
    • replica-name : el 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 está agregando o seleccionando para crear una conexión privada.

    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
        }
        
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

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

Cree una réplica de lectura de una instancia con el servicio privado Connect habilitado

Para crear una réplica de lectura de una instancia con el servicio privado Connect habilitado, use GCLOUD CLI o la API. Puede crear esta réplica en la misma región o en una región diferente de la instancia primaria ( réplica de lectura de región cruzada ).

La réplica de lectura no puede replicarse de una instancia con un tipo de conectividad diferente. Por ejemplo, una instancia con servicio privado Connect habilitado solo puede replicarse desde otra instancia de servicio privado Connect. Tampoco puede replicarse desde una instancia que admite conexiones IP externas o desde una instancia configurada con acceso a servicios privados .

nube g

Para crear una réplica de lectura de una instancia, use 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

Realice las siguientes sustituciones:

  • REPLICA_INSTANCE_NAME : el nombre de la instancia de réplica.
  • PRIMARY_INSTANCE_NAME : el nombre de la instancia primaria.
  • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene la instancia.
  • REGION_NAME : el nombre de la región para la instancia de réplica.
  • ALLOWED_PROJECTS : una lista de ID o números de proyecto permitidos, separados por comas. Si un proyecto no está contenido en esta lista, entonces no puede usarlo para crear una instancia y habilitar el servicio privado Connect para ella.

    Cloud SQL no copia los proyectos permitidos para la instancia primaria a la réplica. Para cada réplica, debe crear un punto final de servicio privado Connect . Si está utilizando los conectores de lenguaje Cloud SQL Auth o Language SQL , cree una zona DNS y un registro DNS para las réplicas.

  • AVAILABILITY_TYPE : habilite una alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilite la alta disponibilidad y se recomienda para instancias de producción. La instancia falla a otra zona dentro de su región seleccionada.
    • ZONAL : no proporcione capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar una alta disponibilidad para instancias, consulte Configurar una instancia existente para obtener una alta disponibilidad y desactivar la alta disponibilidad para una instancia .

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : el nombre de la instancia primaria.
  • PROJECT_ID : el ID o 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 para la instancia de réplica.
  • MACHINE_TYPE : el tipo de máquina para la instancia.
  • AVAILABILITY_TYPE : habilite una alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilite la alta disponibilidad y se recomienda para instancias de producción. La instancia falla a otra zona dentro de su región seleccionada.
    • ZONAL : no proporcione capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar una alta disponibilidad para instancias, consulte Configurar una instancia existente para obtener una alta disponibilidad y desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : una lista de ID o números de proyecto permitidos, separados por comas. Si un proyecto no está contenido en esta lista, entonces no puede usarlo para crear una instancia y habilitar el servicio privado Connect para ella.

    Cloud SQL no copia los proyectos permitidos para la instancia primaria a la réplica. Para cada réplica, debe crear un punto final de servicio privado Connect . Si está utilizando los conectores de lenguaje Cloud SQL Auth o Cloud SQL SQL , debe crear un registro DNS Zone y 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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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 utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : el nombre de la instancia primaria.
  • PROJECT_ID : el ID o 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 para la instancia de réplica.
  • MACHINE_TYPE : el tipo de máquina para la instancia.
  • AVAILABILITY_TYPE : habilite una alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : habilite la alta disponibilidad y se recomienda para instancias de producción. La instancia falla a otra zona dentro de su región seleccionada.
    • ZONAL : no proporcione capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar una alta disponibilidad para instancias, consulte Configurar una instancia existente para obtener una alta disponibilidad y desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : una lista de ID o números de proyecto permitidos, separados por comas. Si un proyecto no está contenido en esta lista, entonces no puede usarlo para crear una instancia y habilitar el servicio privado Connect para ella.

    Cloud SQL no copia los proyectos permitidos para la instancia primaria a la réplica. Para cada réplica, debe crear un punto final de servicio privado Connect . Si está utilizando los conectores de lenguaje Cloud SQL Auth o Cloud SQL SQL , debe crear un registro DNS Zone y 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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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 replicas de lectura para la autenticación de la base de datos IAM

Leer las réplicas no tienen el indicador cloudsql_iam_authentication habilitado automáticamente cuando está habilitado en la instancia principal.

Para configurar una réplica de lectura para la autenticación de la base de datos IAM:

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
  3. En el mosaico de configuración, busque el indicador cloudsql_iam_authentication . Si la bandera no está en la lista, habilitar la bandera en la réplica de lectura es innecesario. Si la bandera está en la lista, debe habilitar la bandera en la réplica de lectura. Si necesita habilitar la bandera en la réplica de lectura, continúe con el siguiente paso.
  4. Seleccione Replicas en el menú de navegación SQL.
  5. Haga clic en el nombre de la réplica que desea editar.
  6. Haga clic en Editar .
  7. En la sección Opciones de configuración , expandir los indicadores .
  8. Seleccione + Agregar elemento.
  9. Ingrese cloudsql_iam_authentication para el nombre del indicador. Asegúrese de que ON esté seleccionado para esta bandera.
  10. Haga clic en Guardar .

Crear réplicas en cascada

Esta sección describe cómo crear y administrar réplicas en cascada.

Para obtener información sobre cómo funcionan las réplicas en cascada, consulte las réplicas en cascada .

Pasos para crear una réplica en cascada

Consola

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

    Ir a Instancias de Cloud SQL

  2. Para MySQL 5.7 o posterior, habilite la replicación .
  3. Haga clic en la pestaña Replicas para la réplica que actuará como padre para la réplica que desea crear.
  4. Haga clic en Crear réplica .
  5. En la página Crear réplica de lectura , actualice el ID de instancia y cualquier otra opción de configuración, incluidos el nombre, la región y la zona.
  6. Haga clic en Crear .

    Cloud SQL crea una réplica. Te devuelven a la página de instancia para la réplica principal.

  7. Siga los pasos 4-6 para cada nueva réplica en cascada que desea crear.

nube g

  1. Si está utilizando MySQL versión 5.7 o posterior, habilite binlogs para la primaria de la nueva réplica:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Reemplace PARENT_REPLICA_NAME con el nombre de la réplica principal.
  2. Cree la nueva réplica especificando su réplica principal como la instancia principal utilizando el indicador --master-instance-name :
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Reemplace lo siguiente:
    • REPLICA_NAME : la identificación única para la réplica que está creando
    • PARENT_REPLICA_NAME : el nombre de la réplica principal
  4. Después de crear la réplica en cascada, puede ver que los cambios realizados en la instancia primaria se replican a través de todas las réplicas en la cadena de réplicas en cascada.

rizo

  1. Si está utilizando MySQL versión 5.7 o posterior, habilite el registro binario:

    Para habilitar el registro binario, guarde el siguiente JSON en un archivo llamado request.json, luego invoque 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, edite la siguiente muestra del código JSON y guárdela en un archivo llamado request.json :
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Ejecute 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

Asunto Solución de problemas
Leer réplica no comenzó a replicar en la creación. Probablemente haya un error más específico en los archivos de registro. Inspeccione los registros de registro en la nube para encontrar el error real.
No se puede crear la réplica de lectura: error de FlagValue inválido. Una de las banderas en la solicitud no es válida. Podría ser una bandera que proporcionó explícitamente o una que se estableció en un valor predeterminado.

Primero, verifique que el valor del indicador max_connections sea mayor o igual que el valor en el primario.

Si el indicador max_connections se establece adecuadamente, inspeccione los registros de registros en la nube para encontrar el error real.

No se puede crear la réplica de lectura - error desconocido. Probablemente haya un error más específico en los archivos de registro. Inspeccione los registros de registro en la nube para encontrar el error real.

Si el error es: set Service Networking service account as servicenetworking.serviceAgent role on consumer project . Esta acción crea la cuenta de Service Networking API necesaria para continuar con el proceso.

El disco está lleno. El tamaño del disco de instancia principal puede llenarse durante la creación de réplicas. Edite la instancia principal para actualizarlo a un tamaño de disco más grande.
La instancia de réplica está usando demasiada memoria. La réplica utiliza la memoria temporal para almacenar en caché las operaciones de lectura a menudo solicitadas, lo que puede llevarla a usar más memoria que la instancia principal.

Reinicie la instancia de réplica para recuperar el espacio de memoria temporal.

La replicación se detuvo. Se alcanzó el límite de almacenamiento máximo y el aumento de almacenamiento automático no está habilitado.

Edite la instancia para habilitar automatic storage increase .

El retraso de replicación es consistentemente alto. La carga de escritura es demasiado alta para que la réplica maneje. El retraso de la replicación tiene lugar cuando el hilo SQL en una réplica no puede mantenerse al día con el hilo IO. Algunos tipos de consultas o cargas de trabajo pueden causar retraso de replicación alta o permanente para un esquema dado. Algunas de las causas típicas del retraso de replicación son:
  • Consultas lentas en la réplica. Encontrarlos y arreglarlos.
  • Todas las tablas deben tener una clave única/primaria. Cada actualización en una tabla de este tipo sin una clave única/primaria provoca escaneos de mesa completos en la réplica.
  • Consultas como DELETE ... WHERE field < 50000000 causa retraso de replicación con replicación basada en la fila ya que una gran cantidad de actualizaciones se acumulan en la réplica.

Algunas posibles soluciones incluyen:

Replication lag suddenly spikes. This is caused by long-running transaction(s). When a transaction (single statement or multi-statements) commits on the source instance, the start time of the transaction is recorded in the binary log. When the replica receives this binlog event, it compares that timestamp with the current timestamp to calculate replication lag. Hence, a long-running transaction on the source would result in an immediate large replication lag on the replica. If the amount of row changes in the transaction is large, the replica would also spend a long time to execute it. During the time, replication lag is increasing. Once the replica finishes this transaction, the catch up period would depend on the write workload on the source and the replica's processing speed.

To avoid a long transaction, some possible solutions include:

  • Break the transaction into multiple small transactions
  • Chunk a single large write query into smaller batches
  • Try to separate long SELECT queries from a transaction mixed with DMLs
Changing parallel replication flags results in an error. An incorrect value is set for one of or more of these flags.

On the primary instance that's displaying the error message, set the parallel replication flags:

  1. Modify the binlog_transaction_dependency_tracking and transaction_write_set_extraction flags:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Add the slave_pending_jobs_size_max flag:

    slave_pending_jobs_size_max=33554432

  3. Modify the transaction_write_set_extraction flag:

    transaction_write_set_extraction=XXHASH64

  4. Modify the binlog_transaction_dependency_tracking flag:

    binlog_transaction_dependency_tracking=WRITESET

Replica creation fails with timeout. Long-running uncommitted transactions on the primary instance can cause read replica creation to fail.

Recreate the replica after stopping all running queries.

¿Qué sigue?

,

This page describes how to create a read replica for a Cloud SQL instance.

A read replica is a copy of the primary instance that reflects changes to the primary in almost real time, in normal circumstances. You can use a read replica to offload read requests or analytics traffic from the primary instance.

Additionally, for disaster recovery, you can perform a regional migration. If a replica is a cross-region replica , you can perform a failover to another region; specifically, you can promote a replica to a standalone instance (in which case, existing replicas would not consider that instance as primary).

For more information about how replication works, see Replication in Cloud SQL .

Antes de empezar

If you are creating the first replica for this instance, ensure that the instance meets the requirements for primary instances. Learn more .

Create a read replica

The steps for creating a read replica are below.

Consola

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

    Ir a Instancias de Cloud SQL

  2. Find the instance for which you want to create a replica, and then open the more actions menu next to the listing.
  3. Select Create read replica .

    If you don't see that choice, then the instance is a replica; you can't create a replica of a replica.

  4. If the instance had backups and binary logging enabled, continue with the next step. Otherwise, select Automate backups and Enable binary logging , click Continue , and then click Save and restart to restart the instance.

    Enabling binary logging causes the instance to be restarted.

  5. In the Customize your instance section of the page, update settings for your replica. Begin by clicking Show configuration options to display the groups of settings. Then, expand the desired groups to review and customize the settings. A Summary of all the options you select appears on the right. Customizing these settings is optional. Defaults are assigned in every case where no customizations are made.

    For more details about each setting, see the About instance settings page.

    For example, to allow other Google Cloud services, such as BigQuery, to access data in Cloud SQL and make queries against this data over an internal connection, expand the Connections group, and then deselect the Public IP check box.

  6. Click Create replica .

    Cloud SQL creates a backup, if needed, and creates the replica. You are returned to the instance page for the primary.

nube g

  1. Check the status of the primary instance:
    gcloud sql instances describe PRIMARY_INSTANCE_NAME
          

    If the databaseReplicationEnabled property is true , the instance is a replica; you cannot create a replica of a replica.

  2. If the enabled property under backupConfiguration is false , enable backups for the primary instance now:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time=>HH:MM
          
    The backup-start-time parameter is specified in 24-hour time, in the UTC±00 time zone, and specifies the start of a 4-hour backup window. Backups can start any time during the backup window.
  3. If the binaryLogEnabled property is false , enable binary logs on the primary instance:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    Enabling binary logs causes the instance to be restarted.
  4. Create the replica:
    gcloud sql instances create REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME

    You can specify a different tier size using the --tier parameter, if needed. If you're creating a replica from a primary instance for MySQL 8.4 and later, and the Cloud SQL edition for the instance is either Enterprise or is Enterprise Plus, then you don't have to specify a value for this parameter. The replica inherits the machine type from the primary instance.

    You can specify a different region using the --region parameter.

    You can add more parameters for other instance settings. To learn more, see gcloud sql instances create .

    If the primary instance has an internal IP address only, and you want to allow other Google Cloud services, such as BigQuery, to access data in Cloud SQL and make queries against this data over an internal connection, then add the --enable-google-private-path parameter to the command.

    You must create the replica in the same VPC network as the primary instance. You can also specify an allocated-ip-range-name in that VPC network. If no range is specified, the replica is created in a random range.

  • Binary logging is supported on read replica instances (MySQL 5.7 and later only. Not supported on legacy HA failover replicas). Enable binary logging on a replica with the same gcloud CLI command, using the replica's instance name instead of the primary's instance name.
    gcloud sql instances patch REPLICA_INSTANCE_NAME \
    --enable-bin-log
        

    Binary logging durability on the replica (but not on the primary) instance can be set with the sync_binlog flag, which controls how often the MySQL server synchronizes the binary log to disk.

    Backups cannot be enabled on replica instances, but binary logging can be enabled on a replica even when backups are disabled, unlike the primary.

    The binlog retention period on replica instances is automatically set to one day, unlike seven days on primary instances.

Terraformar

To create a read replica, use Terraform resource .

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
}

Aplicar los cambios

Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Set the default Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si establece 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 , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

Eliminar los cambios

Para eliminar sus cambios, haga lo siguiente:

  1. Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento deletion_protection en false .
    deletion_protection =  "false"
  2. Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:
    terraform apply
  1. Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando yes en el mensaje:

    terraform destroy

REST versión 1

  1. Get the current backup configuration

    Use the get method of the instances resource to return the database version and current backup configuration for the primary.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • primary-instance-name : The name of the primary instance

    Método HTTP y URL:

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

    Para enviar su solicitud, expanda una de estas opciones:

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

  2. Verify that the replication fields are set

    If either enabled or pointInTimeEnabled are false , use the patch method of the instances resource to enable them both. In the request, specify any properties of the backup configuration that you wish to change.

    To enable backups, set enabled to true and the startTime to a time of day in HH:MM format. The startTime parameter is specified in 24-hour time, in the UTC±00 time zone, and specifies the start of a 4-hour backup window. Backups can start any time during the backup window.

    To enable point-in-time recovery, set pointInTimeEnabled to true .

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : the name of the primary or read replica instance that you're configuring for high availability
    • START_TIME : the time (in hours and minutes)

    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 su solicitud, expanda una de estas opciones:

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

  3. Create the read replica

    Use the insert method of the instances resource to create the read replica. The databaseVersion property must be the same as the primary. If the primary instance uses an internal IP address, you can specify an allocatedIpRange the same way as when you create a primary instance . If no range is specified, the replica is created in a random range. For a cross-region read replica, specify a region other than the primary instance's region.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : Enum version string (for example, MYSQL_8_0)
    • primary-instance-name : The name of the primary instance
    • primary-instance-region : The region of the primary instance
    • replica-region : The region of the replica instance
    • replica-name : The name of the replica instance
    • machine-type : Enum string of the machine type. For example: "db-custom-1-3840"
    • private-network : The authorized network that you're adding or selecting to create a private connection.

    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
        }
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

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

REST v1beta4

  1. Get the current backup configuration

    Use the get method of the instances resource to return the database version and current backup configuration for the master.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • primary-instance-name : The name of the primary instance

    Método HTTP y URL:

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

    Para enviar su solicitud, expanda una de estas opciones:

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

  2. Verify that the replication fields are set

    If either enabled or binaryLogEnabled are false on the primary instance, use the patch method of the instances resource to enable them both. In the request, specify any properties of the backup configuration that you want to change.

    To enable backups, set enabled to true and the startTime to a time of day in HH:MM format. The startTime parameter is specified in 24-hour time, in the UTC±00 time zone, and specifies the start of a 4-hour backup window. Backups can start any time during the backup window.

    To enable point-in-time recovery, set binaryLogEnabled to true on the primary instance.

    Binary logging is supported on read replica instances (MySQL 5.7 and later only). Enable binary logging on a replica with the same API, using the replica's instance ID instead of the primary's instance ID.

    Binary logging durability on the replica (but not on the primary) instance can be set with the sync_binlog flag, which controls how often the MySQL server synchronizes the binary log to disk.

    Backups cannot be enabled on replica instances, but binary logging can be enabled on a replica even when backups are disabled, unlike the primary.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
    • INSTANCE_NAME : the name of the primary or read replica instance that you're configuring for high availability
    • START_TIME : the time (in hours and minutes)

    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 su solicitud, expanda una de estas opciones:

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

  3. Create the read replica

    Use the insert method of the instances resource to create the read replica. The databaseVersion property must be the same as the primary. If the primary instance uses an internal IP address, you can specify an allocatedIpRange the same way as when you create a primary instance . For a cross-region read replica, specify a region other than the primary instance's region.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • project-id : El ID del proyecto
    • database-version : Enum version string (for example, MYSQL_8_0)
    • primary-instance-name : The name of the primary instance
    • primary-instance-region : The region of the primary instance
    • replica-region : The region of the replica instance
    • replica-name : The name of the replica instance
    • machine-type : Enum string of the machine type. For example: "db-custom-1-3840"
    • private-network : The authorized network that you're adding or selecting to create a private connection.

    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
        }
        
      }
    }
    

    Para enviar su solicitud, expanda una de estas opciones:

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

Create a read replica of an instance with Private Service Connect enabled

To create a read replica of an instance with Private Service Connect enabled, use gcloud CLI or the API. You can create this replica in either the same region or in a different region from the primary instance ( cross-region read replica ).

The read replica can't replicate from an instance with a different connectivity type. For example, an instance with Private Service Connect enabled can replicate only from another Private Service Connect instance. It also can't replicate from an instance that supports external IP connections or from an instance that's configured with private services access .

nube g

To create a read replica of an instance, use the gcloud sql instances create command:

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

Realice las siguientes sustituciones:

  • REPLICA_INSTANCE_NAME : the name of the replica instance.
  • PRIMARY_INSTANCE_NAME : the name of the primary instance.
  • PROJECT_ID : el ID o número de proyecto del Google Cloud project that contains the instance.
  • REGION_NAME : the region name for the replica instance.
  • ALLOWED_PROJECTS : a list of allowed project IDs or numbers, separated by commas. If a project isn't contained in this list, then you can't use it to create an instance and enable Private Service Connect for it.

    Cloud SQL doesn't copy the allowed projects for the primary instance over to the replica. For each replica, you must create a Private Service Connect endpoint . If you're using the Cloud SQL Auth Proxy or Cloud SQL Language Connectors , then create a DNS zone and DNS record for the replicas.

  • AVAILABILITY_TYPE : enable high availability for the instance. For this parameter, specify one of the following values:
    • REGIONAL : enable high availability and is recommended for production instances. The instance fails over to another zone within your selected region.
    • ZONAL : provide no failover capability. This is the default value.

    For more information about setting and removing high availability for instances, see Configure an existing instance for high availability and Deactivate high availability for an instance .

REST versión 1

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : the name of the primary instance.
  • PROJECT_ID : el ID o número de proyecto del Google Cloud project that contains the instance.
  • REPLICA_INSTANCE_NAME : the name of the replica instance.
  • REGION_NAME : the region name for the replica instance.
  • MACHINE_TYPE : the machine type for the instance.
  • AVAILABILITY_TYPE : enable high availability for the instance. For this parameter, specify one of the following values:
    • REGIONAL : enable high availability and is recommended for production instances. The instance fails over to another zone within your selected region.
    • ZONAL : provide no failover capability. This is the default value.

    For more information about setting and removing high availability for instances, see Configure an existing instance for high availability and Deactivate high availability for an instance .

  • ALLOWED_PROJECTS : a list of allowed project IDs or numbers, separated by commas. If a project isn't contained in this list, then you can't use it to create an instance and enable Private Service Connect for it.

    Cloud SQL doesn't copy the allowed projects for the primary instance over to the replica. For each replica, you must create a Private Service Connect endpoint . If you're using the Cloud SQL Auth proxy or Cloud SQL Language Connectors , then you must create a DNS zone and DNS record for the replicas.

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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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 utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PRIMARY_INSTANCE_NAME : the name of the primary instance.
  • PROJECT_ID : el ID o número de proyecto del Google Cloud project that contains the instance.
  • REPLICA_INSTANCE_NAME : the name of the replica instance.
  • REGION_NAME : the region name for the replica instance.
  • MACHINE_TYPE : the machine type for the instance.
  • AVAILABILITY_TYPE : enable high availability for the instance. For this parameter, specify one of the following values:
    • REGIONAL : enable high availability and is recommended for production instances. The instance fails over to another zone within your selected region.
    • ZONAL : provide no failover capability. This is the default value.

    For more information about setting and removing high availability for instances, see Configure an existing instance for high availability and Deactivate high availability for an instance .

  • ALLOWED_PROJECTS : a list of allowed project IDs or numbers, separated by commas. If a project isn't contained in this list, then you can't use it to create an instance and enable Private Service Connect for it.

    Cloud SQL doesn't copy the allowed projects for the primary instance over to the replica. For each replica, you must create a Private Service Connect endpoint . If you're using the Cloud SQL Auth proxy or Cloud SQL Language Connectors , then you must create a DNS zone and DNS record for the replicas.

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 su solicitud, expanda una de estas opciones:

Debería 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": "[email protected]",
  "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"
}

Configure read replicas for IAM database authentication

Read replicas do not have the cloudsql_iam_authentication flag enabled automatically when it is enabled on the primary instance.

To configure a read replica for IAM database authentication:

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
  3. In the Configuration tile, look for the cloudsql_iam_authentication flag. If the flag isn't on the list, enabling the flag in the read replica is unnecessary. If the flag is on the list, you must enable the flag on the read replica. If you need to enable the flag on the read replica, continue with the next step..
  4. Select Replicas from the SQL navigation menu.
  5. Click the name of the replica you want to edit.
  6. Haga clic en Editar .
  7. In the Configuration options section, expand Flags .
  8. Select + Add item.
  9. Enter cloudsql_iam_authentication for the flag name. Make sure that On is selected for this flag.
  10. Haga clic en Guardar .

Create cascading replicas

This section describes how to create and manage cascading replicas.

For information about how cascading replicas work, see Cascading replicas .

Steps to create a cascading replica

Consola

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

    Ir a Instancias de Cloud SQL

  2. For MySQL 5.7 or later, enable replication .
  3. Click the Replicas tab for the replica that will act as a parent for the replica that you want to create.
  4. Click Create replica .
  5. On the Create read replica page, update the instance ID, and any other configuration options, including the name, region, and zone.
  6. Haga clic en Crear .

    Cloud SQL creates a replica. You're returned to the instance page for the parent replica.

  7. Follow steps 4-6 for each new cascading replica that you want to create.

nube g

  1. If you're using MySQL version 5.7 or later, then enable binlogs for the primary of the new replica:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Replace PARENT_REPLICA_NAME with the name of the parent replica.
  2. Create the new replica by specifying your primary replica as the primary instance using the --master-instance-name flag:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Reemplace lo siguiente:
    • REPLICA_NAME : the unique ID for the replica that you are creating
    • PARENT_REPLICA_NAME : the name of the parent replica
  4. After you create the cascading replica, you can see that the changes made to the primary instance are replicated through all the replicas in the cascading replicas chain.

rizo

  1. If you are using MySQL version 5.7 or later, enable binary logging:

    To enable binary logging, save the following JSON in a file named request.JSON, then invoke the curl command to enable binary logging.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. To create a replica under the parent replica, edit the following JSON code sample, and save it to a file called request.json :
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Ejecute 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

Asunto Solución de problemas
Read replica didn't start replicating on creation. There's probably a more specific error in the log files. Inspect the logs in Cloud Logging to find the actual error.
Unable to create read replica - invalidFlagValue error. One of the flags in the request is invalid. It could be a flag you provided explicitly or one that was set to a default value.

First, check that the value of the max_connections flag is greater than or equal to the value on the primary.

If the max_connections flag is set appropriately, inspect the logs in Cloud Logging to find the actual error.

Unable to create read replica - unknown error. There's probably a more specific error in the log files. Inspect the logs in Cloud Logging to find the actual error.

If the error is: set Service Networking service account as servicenetworking.serviceAgent role on consumer project , then disable and re-enable the Service Networking API . This action creates the service account necessary to continue with the process.

Disk is full. The primary instance disk size can become full during replica creation. Edit the primary instance to upgrade it to a larger disk size.
The replica instance is using too much memory. The replica uses temporary memory to cache often-requested read operations, which can lead it to use more memory than the primary instance.

Restart the replica instance to reclaim the temporary memory space.

Replication stopped. The maximum storage limit was reached and automatic storage increase isn't enabled.

Edit the instance to enable automatic storage increase .

Replication lag is consistently high. The write load is too high for the replica to handle. Replication lag takes place when the SQL thread on a replica is unable to keep up with the IO thread. Some kinds of queries or workloads can cause temporary or permanent high replication lag for a given schema. Some of the typical causes of replication lag are:
  • Slow queries on the replica. Find and fix them.
  • All tables must have a unique/primary key. Every update on such a table without a unique/primary key causes full table scans on th replica.
  • Queries like DELETE ... WHERE field < 50000000 cause replication lag with row-based replication since a huge number of updates are piled up on the replica.

Some possible solutions include:

Replication lag suddenly spikes. This is caused by long-running transaction(s). When a transaction (single statement or multi-statements) commits on the source instance, the start time of the transaction is recorded in the binary log. When the replica receives this binlog event, it compares that timestamp with the current timestamp to calculate replication lag. Hence, a long-running transaction on the source would result in an immediate large replication lag on the replica. If the amount of row changes in the transaction is large, the replica would also spend a long time to execute it. During the time, replication lag is increasing. Once the replica finishes this transaction, the catch up period would depend on the write workload on the source and the replica's processing speed.

To avoid a long transaction, some possible solutions include:

  • Break the transaction into multiple small transactions
  • Chunk a single large write query into smaller batches
  • Try to separate long SELECT queries from a transaction mixed with DMLs
Changing parallel replication flags results in an error. An incorrect value is set for one of or more of these flags.

On the primary instance that's displaying the error message, set the parallel replication flags:

  1. Modify the binlog_transaction_dependency_tracking and transaction_write_set_extraction flags:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Add the slave_pending_jobs_size_max flag:

    slave_pending_jobs_size_max=33554432

  3. Modify the transaction_write_set_extraction flag:

    transaction_write_set_extraction=XXHASH64

  4. Modify the binlog_transaction_dependency_tracking flag:

    binlog_transaction_dependency_tracking=WRITESET

Replica creation fails with timeout. Long-running uncommitted transactions on the primary instance can cause read replica creation to fail.

Recreate the replica after stopping all running queries.

¿Qué sigue?