Configuración heredada para alta disponibilidad

En esta página, se describe la configuración heredada de una instancia de MySQL para alta disponibilidad.

En una configuración de HA heredada, una instancia de Cloud SQL para MySQL usa una réplica de conmutación por error para agregar alta disponibilidad a la instancia. Esta función no está disponible en la consola de Google Cloud. La nueva configuración no usa réplicas de conmutación por error. En su lugar, usa los discos persistentes regionales de Google, que replican los datos a nivel de bloque de forma síncrona entre dos zonas de una región.

Si deseas obtener más información sobre la configuración actual de alta disponibilidad, consulta Descripción general de la configuración de alta disponibilidad.

Actualiza una instancia de heredada a alta disponibilidad actual

Para actualizar tu instancia de la configuración de alta disponibilidad heredada a la nueva, haz lo siguiente:

  1. Borra la réplica de conmutación por error en las instancias de MySQL que quieres actualizar. Consulta Inhabilita la alta disponibilidad en una instancia
  2. Configura la instancia para usar la versión actual de alta disponibilidad. Consulta la sección sobre cómo configurar una instancia existente para que tenga alta disponibilidad.

Configuración heredada: Crea una nueva instancia configurada para alta disponibilidad

Cuando creas una instancia, puedes configurarla para alta disponibilidad; Cloud SQL crea la réplica de conmutación por error al mismo tiempo que crea la instancia principal. La función heredada no está disponible en la consola de Google Cloud. En su lugar, usa los comandos de gcloud CLI o cURL.

Para crear una instancia que tenga alta disponibilidad configurada, realiza los siguientes pasos:

gcloud

  1. Crea la instancia principal y su réplica de conmutación por error:
    gcloud sql instances create PRIMARY_INSTANCE_NAME \
    --backup-start-time=BACKUP_WINDOW_START_TIME \
    --failover-replica-name=FAILOVER_REPLICA_NAME \
    --cpu=CPU \
    --database-version=DATABASE_VERSION \
    --memory=MEMORY \
    --enable-bin-log
    

    La hora de inicio de la ventana de la copia de seguridad tiene el formato HH:MM.

    Asegúrate de reemplazar el marcador de posición DATABASE_VERSION por MySQL 5.6 o MySQL 5.7 (--database-version=MYSQL_5_6 o
    --database-version=MYSQL_5_7).

    Si no especificas una versión para el parámetro database-version, se seleccionará MySQL 8.0 de forma predeterminada. La configuración heredada para la alta disponibilidad de MySQL no admite la versión 8.0.

    Para obtener una lista completa de los parámetros disponibles, visita la página de referencias gcloud sql instances create.

  2. Configura el usuario raíz en la instancia principal:
    gcloud sql users set-password root --host=% \
    --instance PRIMARY_INSTANCE_NAME \
    --password PASSWORD
    

    La réplica de conmutación por error se crea con la misma CPU y MEMORIA que la instancia principal. Puedes cambiar la CPU y la MEMORIA de la réplica de conmutación por error más tarde, pero debe ser al menos tan grande como la instancia principal.

curl

  1. Crea la instancia principal y su réplica de conmutación por error:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name":"PRIMARY_INSTANCE_NAME", "region":"REGION",
                  "settings": {
                               "tier":"MACHINE_TYPE",
                               "backupConfiguration": {"binaryLogEnabled": true, "enabled": true}},
                               "failoverReplica": {"name": "FAILOVER_REPLICA_NAME"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
    
    Si quieres obtener la lista completa de los parámetros de esta solicitud, visita la página instances:insert.
  2. Una vez que la instancia principal termina de inicializarse, actualiza la contraseña raíz en la instancia principal:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "root", "host": "%", "password": "ROOT_PASSWORD"}' \
         'https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/users?host=%25&name=root'
    
    Este cambio se propaga automáticamente a la réplica.

Configuración heredada: Configura una instancia existente para alta disponibilidad

Configurar una instancia existente de alta disponibilidad ocasiona algunos minutos de tiempo de inactividad mientras la instancia se configura de nuevo.

Si deseas configurar una instancia existente para alta disponibilidad, sigue estos pasos:

gcloud

  1. Verifica 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 puedes crear una réplica de conmutación por error para una réplica.

  2. Si la propiedad enabled en backupConfiguration es false, habilita las copias de seguridad para la instancia principal:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time HH:MM
    

    El parámetro backup-start-time se establece en el formato de 24 horas, en la zona horaria UTC±00, y especifica el inicio de un período de copia de seguridad de 4 horas. Las copias de seguridad pueden iniciarse en cualquier momento durante el período de copia de seguridad.

  3. Si la propiedad binaryLogEnabled es false, habilita los registros binarios:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    

    La instancia se reinicia cuando se habilitan los registros binarios.

  4. Crea la réplica:
    gcloud sql instances create FAILOVER_REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME \
    --replica-type=FAILOVER
    

curl

  1. Verifica el estado de la instancia principal:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME?fields=settings
    

    El resultado contendrá la backupConfiguration, por ejemplo:

    "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
    }
    
  2. Si enabled o binaryLogEnabled son false, usa el método patch del recurso de las instancias para habilitarlos a ambos. Especifica las propiedades de la configuración de la copia de seguridad que quieres mantener y las que quieres cambiar.

    Para habilitar las copias de seguridad, configura enabled en true y startTime en un valor que sea el inicio del período de copia de seguridad. Para habilitar el registro binario, establece binaryLogEnabled en true.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"settings" : {"backupConfiguration" : {"startTime": "HH:MM", "enabled": true, "binaryLogEnabled": true}}}' \
         -X PATCH \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/
    
  3. Usa el método insert del recurso de las instancias para crear la réplica de conmutación por error.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "REPLICA_NAME", "masterInstanceName": "PRIMARY_INSTANCE_NAME",
                  "region": "PRIMARY_IMSTANCE_REGION", "databaseVersion": "PRIMARY_DATABASE_VERSION",
                  "replicaConfiguration": {"failoverTarget": true},
                  "settings": {"tier":"MACHINE_TYPE"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
    

    MACHINE_TYPE debe ser al menos tan grande como el tipo de máquina de la instancia principal.

Inicia la conmutación por error

Realizar pruebas sobre la conmutación por error es opcional, pero se recomienda para probar cómo responde tu aplicación en caso de que ocurra una conmutación por error.

Para obtener más información sobre las conmutaciones por error, consulta la Descripción general de conmutaciones por error.

gcloud

Inicia la conmutación por error:

gcloud sql instances failover PRIMARY_INSTANCE_NAME

curl

  1. Describe la instancia principal para obtener el valor del campo settingsVersion.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME
    
  2. Inicia la conmutación por error:
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"failoverContext":{"settingsVersion":"SETTINGS_VERSION"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/failover
    

La instancia se conmuta por error y no estará disponible para entregar datos durante algunos minutos.

Configuración heredada: Crea una alerta para el retraso de replicación

El tiempo necesario para realizar una operación de conmutación por error depende del retraso de replicación cuando se inicia la operación. Puedes usar Cloud Monitoring en la consola de Google Cloud para que te avise cuando el retraso de replicación supera un umbral.

Para obtener más información sobre el retraso de replicación, busca “seconds_behind_master” en la página sobre la sintaxis SHOW SLAVE STATUS en la documentación de MySQL.

Consulta la documentación de Cloud Monitoring para obtener más información.

Configuración heredada: Configura una alerta para una réplica de conmutación por error específica

  1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego, Alertas.
  2. Haz clic en Crear una política de alertas.
  3. Ingresa un nombre descriptivo para tu alerta.
  4. Selecciona Límite de métrica y haz clic en Siguiente para abrir la pestaña Objetivo.
  5. En Tipo de recursos, selecciona Cloud SQL.
  6. En Aplicar a, selecciona Único y, luego, selecciona la réplica de conmutación por error.
  7. Haz clic en Siguiente para abrir la pestaña Configuración.
  8. Ingresa los siguientes valores:

    Campo Valor
    Métrica Segundos de retraso en relación con la principal
    Condición Más de
    Límites 120 (o cualquier valor que sea apropiado para tu entorno)
    Duración 3 minutos

  9. Selecciona los métodos de Notificación y haz clic en Guardar condición.

Configuración heredada: Configura una alerta para un grupo de réplicas de conmutación por error

Si deseas crear varias réplicas de conmutación por error en el mismo proyecto, podría ser más fácil configurar la alerta para todo el grupo, en lugar de hacerlo en cada réplica de conmutación por error de forma individual. A fin de crear un grupo de supervisión, utiliza un sufijo para los nombres de las réplicas de conmutación por error, como "-failover". Asegúrate de no usar este sufijo para ningún otro tipo de instancias de Cloud SQL.

Crea un grupo de réplica de conmutación por error:

  1. En la consola de Google Cloud, ve a la página Supervisión.

    Ir a Monitoring

  2. En la barra de menú superior, selecciona Grupos > Crear….
  3. Ingresa un nombre descriptivo para tu grupo.
  4. Selecciona Nombre y Contiene y, luego, ingresa el nombre de la subcadena.
  5. Haz clic en Guardar grupo. Se abre la página de resumen para el grupo nuevo.
  6. Confirma que se incluyan las instancias esperadas en el grupo.

Crea la alerta para el grupo de réplica de conmutación por error:

  1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego, Alertas.
  2. Haz clic en Crear una política de alertas.
  3. Ingresa un nombre descriptivo para tu alerta de grupo.
  4. Selecciona Límite de métrica y haz clic en Siguiente para abrir la pestaña Objetivo.
  5. En Tipo de recursos, selecciona Cloud SQL.
  6. En Aplicar a, selecciona Grupo y, luego, selecciona el grupo de conmutación por error.
  7. Selecciona Cualquier miembro que infrinja y haz clic en Siguiente para abrir la pestaña Configuración.
  8. Ingresa los siguientes valores:

    Campo Valor
    Métrica Segundos de retraso en relación con la principal
    Condición Más de
    Límites 120 (o cualquier valor que sea apropiado para tu entorno)
    Duración 3 minutos

  9. Selecciona los métodos de Notificación deseados y haz clic en Guardar condición.

Configuración heredada: Inhabilita la alta disponibilidad en una instancia

Debes borrar la instancia de réplica de conmutación por error para quitar la alta disponibilidad de la instancia principal.

Antes de realizar este procedimiento, asegúrate de que, en el momento, no haya operaciones en ejecución en la instancia principal.

Para inhabilitar la alta disponibilidad, sigue estos pasos:

Console

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

    Ir a Instancias de Cloud SQL

  2. Selecciona la instancia de conmutación por error asociada a la instancia en la que deseas inhabilitar la alta disponibilidad.
  3. En la página Detalles de la instancia, haz clic en Borrar.
  4. En la ventana Borrar réplica, vuelve a escribir el nombre de la instancia de conmutación por error.
  5. Haz clic en Borrar. La configuración para la instancia original cambia a zonal.

gcloud

Para obtener información de referencia, consulta gcloud sql instances delete.
gcloud sql instances delete FAILOVER_REPLICA_NAME

curl

La siguiente solicitud usa el método instances:delete para borrar la instancia.
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json'\
      -X DELETE\
https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME

¿Qué sigue?