Recuperación ante desastres administrada

En este documento, se proporciona una descripción general de la recuperación ante desastres administrada de BigQuery y cómo implementarla para tus datos y cargas de trabajo.

Descripción general

BigQuery admite situaciones de recuperación ante desastres en el caso de una interrupción regional total. La recuperación ante desastres de BigQuery depende de la replicación de conjuntos de datos entre regiones para administrar la conmutación por error del almacenamiento. Después de crear una réplica de un conjunto de datos en una región secundaria, puedes controlar el comportamiento de la conmutación por error para el procesamiento y el almacenamiento a fin de mantener la continuidad del negocio durante una interrupción. Después de una conmutación por error, puedes acceder a la capacidad de procesamiento (ranuras) y a los conjuntos de datos replicados en la región promocionada. La recuperación ante desastres solo es compatible con la edición Enterprise Plus.

La recuperación ante desastres administrada realiza una conmutación por error completa cuando se inicia una conmutación por error. En una conmutación por error completa, las réplicas de reserva y del conjunto de datos en la región secundaria se ascienden de inmediato a la instancia principal, incluso si la región principal anterior está inactiva, sin esperar la replicación de ningún dato no replicado. Debido a esto, puede haber pérdida de datos durante una conmutación por error completa. Es posible que cualquier trabajo que haya confirmado los datos en la región de origen antes del valor de replication_time de la réplica deba volver a ejecutarse en la región de destino después de la conmutación por error.

Para habilitar la recuperación ante desastres, debes crear una reserva de edición de Enterprise Plus en la región principal, que es la región en la que se encuentra el conjunto de datos antes de la conmutación por error. La capacidad de procesamiento en espera en la región vinculada se incluye en la reserva de Enterprise Plus. Luego, debes conectar un conjunto de datos a esta reserva para habilitar la conmutación por error en él. Solo puedes adjuntar un conjunto de datos a una reserva si el conjunto de datos se reabastece y tiene las mismas ubicaciones principales y secundarias vinculadas que la reserva. Después de que un conjunto de datos se adjunta a una reserva de conmutación por error, solo las reservas de Enterprise Plus pueden leer o escribir en esos conjuntos de datos y no puedes realizar una promoción de replicación entre regiones en el conjunto de datos. Para obtener más información sobre las reservas, consulta Introducción a la administración de cargas de trabajo.

La capacidad de procesamiento de tu región principal estará disponible en la región secundaria inmediatamente después de una conmutación por error. Esta disponibilidad se aplica al modelo de referencia de la reserva, ya sea que se use o no.

Debes elegir directamente la conmutación por error como parte de las pruebas o como respuesta a un desastre real. No deberías realizar más de una conmutación por error en un período de 10 minutos. En situaciones de replicación de datos, el reabastecimiento se refiere al proceso de propagación de una réplica de un conjunto de datos con datos históricos que existían antes de que la réplica se creara o se activara. Los conjuntos de datos deben completar su reabastecimiento antes de que puedas realizar la conmutación por error al conjunto de datos.

En el siguiente diagrama, se muestra la arquitectura de la recuperación ante desastres administrada:

Arquitectura administrada de recuperación ante desastres.

Limitaciones

Las siguientes limitaciones se aplican a la recuperación ante desastres de BigQuery:

  • La recuperación ante desastres de BigQuery está sujeta a las mismas limitaciones que la replicación de conjuntos de datos entre regiones.

  • La compatibilidad regional se basa en buckets birregionales. No puedes configurar los siguientes pares de regiones:

    • us-central1 - us multirregional
    • us-west1 - us multirregional
    • eu-west1 - eu multirregional
    • eu-west4 - eu multirregional
  • El ajuste de escala automático después de una conmutación por error depende de la disponibilidad de la capacidad de procesamiento en la región secundaria. Solo el modelo de referencia de la reserva está disponible en la región secundaria.

  • La vista INFORMATION_SCHEMA.RESERVATIONS no tiene detalles de conmutación por error.

  • Si tienes varias reservas de conmutación por error con el mismo proyecto de administración, pero los conjuntos de datos adjuntos de este usan diferentes ubicaciones secundarias, no uses una reserva de conmutación por error con los conjuntos de datos adjuntos a otras reservas de conmutación por error.

  • Si deseas convertir las reservas existentes en una reserva de conmutación por error, las reservas existentes no pueden tener más de 1,000 asignaciones.

Antes de comenzar

  1. Asegúrate de tener el permiso bigquery.reservations.update de Identity and Access Management (IAM) para actualizar reservas.
  2. Asegúrate de tener conjuntos de datos existentes que estén configurados para la replicación. Para obtener más información, consulta Replica un conjunto de datos.

Cuota

Debes tener la capacidad de procesamiento elegida en la región secundaria antes de configurar una reserva de conmutación por error. Si no hay una cuota disponible en la región secundaria, no puedes configurar la reserva. Para obtener más información, consulta Cuotas y límites.

Precios

La configuración de la recuperación ante desastres administrada requiere los siguientes planes de precios:

  • Capacidad de procesamiento: Debes comprar la edición Enterprise Plus.

  • Replicación turbo: La recuperación ante desastres se basa en la replicación turbo durante la replicación. Se te cobra en función de bytes físicos y por GB físicos replicados. Para obtener más información, consulta los Precios de Cloud Storage.

  • Almacenamiento: Los bytes de almacenamiento en la región secundaria se facturan al mismo precio que los bytes de almacenamiento en la región principal. Para obtener más información, consulta los precios de almacenamiento.

Los clientes solo deben pagar por la capacidad de procesamiento en la región principal. La capacidad de procesamiento secundaria (según el modelo de referencia de la reserva) está disponible en la región secundaria sin costo adicional. Las ranuras inactivas no pueden usar la capacidad de procesamiento secundaria, a menos que la reserva haya fallado.

Si necesitas realizar operaciones de lectura inactiva en la región secundaria, puedes comprar capacidad de procesamiento empresarial adicional en la región secundaria.

Crea o modifica una reserva de Enterprise Plus

Antes de conectar un conjunto de datos a una reserva, debes crear una reserva de Enterprise Plus o modificar una reserva existente y configurarla para la recuperación ante desastres.

Crea una reserva

Seleccione una de las siguientes opciones:

Console

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

    Ir a BigQuery

  2. En el menú de navegación, haz clic en Administración de la capacidad y, luego, en Crear reserva.

  3. En el campo Nombre de la reserva, ingresa un nombre para la reserva.

  4. En la lista Ubicación, selecciona ubicación.

  5. En la lista Edición, selecciona la edición Enterprise Plus.

  6. En la lista Selector de tamaño máximo de reserva, selecciona el tamaño máximo de reserva.

  7. En el campo Ranuras de referencia, ingresa la cantidad de ranuras del modelo de referencia para la reserva (opcional).

    La cantidad de ranuras disponibles con ajuste de escala automático se determina restando el valor de las ranuras del modelo de referencia del valor del tamaño máximo de la reserva. Por ejemplo, si creas una reserva con 100 ranuras de referencia y un tamaño máximo de reserva de 400, la reserva tiene 300 ranuras de ajuste de escala automático. Para obtener más información sobre las ranuras de referencia, consulta Usa reservas con ranuras de referencia y de ajuste de escala automático.

  8. En la lista Ubicación secundaria, selecciona la ubicación secundaria.

  9. Para inhabilitar el uso compartido de ranuras inactivas y utilizar solamente la capacidad de ranura especificada, haz clic en el botón de activación Ignorar ranuras inactivas.

  10. Para expandir la sección Configuración avanzada, haz clic en la flecha de expansión .

  11. Opcional: Para configurar la simultaneidad de los trabajos de destino, haz clic en el botón de activación Anular la simultaneidad automática del trabajo de destino y, luego, ingresa un valor para la simultaneidad de los trabajos de destino. El desglose de ranuras se muestra en la tabla Estimación de costos. Se muestra un resumen de la reserva en la tabla Resumen de capacidad.

  12. Haz clic en Guardar.

La reserva nueva se puede ver en la pestaña Reservas de ranuras.

SQL

Para crear una reserva, usa la sentencia del lenguaje de definición de datos CREATE RESERVATION (DDL).

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

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente oración:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_SLOTS,
      edition = ENTERPRISE_PLUS,
      secondary_location = SECONDARY_LOCATION);
    

    Reemplaza lo siguiente:

    • ADMIN_PROJECT_ID por el ID del proyecto de administración que posee el recurso de reserva
    • LOCATION: Es la ubicación de la reserva. Si seleccionas una ubicación de BigQuery Omni, la opción de edición se limita a Enterprise Edition.
    • RESERVATION_NAME por el nombre de la reserva.

      El nombre comenzar y terminar con una letra minúscula o un número, y contener solo letras minúsculas, números y guiones.

    • NUMBER_OF_SLOTS es la cantidad de ranuras que asignarás a la reserva. Debe haber suficientes ranuras sin asignar en el compromiso. No puedes configurar las opciones slot_capacity y edition en la misma reserva.
    • SECONDARY_LOCATION: Es la ubicación secundaria de la reserva. En el caso de una interrupción, todos los conjuntos de datos adjuntos a esta reserva se conmutarán por error a esta ubicación.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

Modifica una reserva existente

Seleccione una de las siguientes opciones:

Console

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

    Ir a BigQuery

  2. En el panel de navegación, ve a la sección Administración de capacidad.

  3. Haz clic en la pestaña Reservas de ranuras.

  4. Busca la reserva que deseas actualizar.

  5. Expande la opción Actions.

  6. Haz clic en Editar.

  7. En el campo Ubicación secundaria, ingresa la ubicación secundaria.

  8. Haz clic en Guardar.

SQL

Para agregar o cambiar una ubicación secundaria a una reserva, usa la declaración DDL ALTER RESERVATION SET OPTIONS.

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

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente oración:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      secondary_location = SECONDARY_LOCATION);
    

    Reemplaza lo siguiente:

    • ADMIN_PROJECT_ID por el ID del proyecto de administración que posee el recurso de reserva
    • LOCATION por la ubicación de la reserva, por ejemplo, europe-west9.
    • RESERVATION_NAME por el nombre de la reserva. El nombre comenzar y terminar con una letra minúscula o un número, y contener solo letras minúsculas, números y guiones.

    • SECONDARY_LOCATION: Es la ubicación secundaria de la reserva. En el caso de una interrupción, todos los conjuntos de datos adjuntos a esta reserva se conmutarán por error a esta ubicación.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

Adjunta un conjunto de datos a una reserva

Si deseas habilitar la recuperación ante desastres para la reserva que creaste antes, completa los siguientes pasos. El conjunto de datos ya debe estar configurado para la replicación en las mismas regiones principales y secundarias de la reserva. Para obtener más información, consulta Replicación de conjuntos de datos entre regiones.

Console

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

    Ir a BigQuery

  2. En el menú de navegación, haz clic en Administración de la capacidad y, luego, en la pestaña Reservas de ranuras.

  3. Haz clic en la reserva a la que deseas conectar un conjunto de datos.

  4. Haz clic en la pestaña Recuperación ante desastres.

  5. Haz clic en Agregar conjunto de datos asociado.

  6. Ingresa el nombre del conjunto de datos que deseas asociar a la reserva.

  7. Haz clic en Agregar.

SQL

Para adjuntar un conjunto de datos a una reserva, usa la sentencia de DDL ALTER SCHEMA SET OPTIONS.

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

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente oración:

    ALTER SCHEMA
      `DATASET_NAME`
    SET OPTIONS (
      failover_reservation = RESERVATION_NAME);
    

    Reemplaza lo siguiente:

    • DATASET_NAME: El nombre del conjunto de datos.

    • RESERVATION_NAME: Es el nombre de la reserva a la que deseas asociar el conjunto de datos.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

Inicia una conmutación por error

Si se produce una interrupción regional, debes conmutar por error la reserva de forma manual a la ubicación que usa la réplica. En la conmutación por error de la reserva, también se incluyen los conjuntos de datos asociados. Para realizar una conmutación por error manual en una reserva, haz lo siguiente:

Console

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

    Ir a BigQuery

  2. En el menú de navegación, haga clic en Recuperación ante desastres.

  3. Haz clic en el nombre de la reserva a la que deseas realizar una conmutación por error.

  4. Haz clic en Conmutación por error.

SQL

Para agregar o cambiar una ubicación secundaria a una reserva, usa la sentencia de DDL ALTER RESERVATION SET OPTIONS y establece is_primary en TRUE.

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

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente oración:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      is_primary = TRUE);
    

    Reemplaza lo siguiente:

    • ADMIN_PROJECT_ID por el ID del proyecto de administración que posee el recurso de reserva
    • LOCATION por la ubicación de la reserva, por ejemplo, europe-west9.
    • RESERVATION_NAME por el nombre de la reserva. El nombre comenzar y terminar con una letra minúscula o un número, y contener solo letras minúsculas, números y guiones.

    • PRIMARY_STATUS: Es un estado booleano que declara si la reserva es la réplica principal.

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

Supervisión

Para determinar el estado de tus réplicas, consulta la vista INFORMATION_SCHEMA.SCHEMATA_REPLICAS. Por ejemplo:

SELECT
  schema_name,
  replica_name,
  creation_complete,
  replica_primary_assigned,
  replica_primary_assignment_complete
FROM
  `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
  schema_name="project2.my_dataset"

En la siguiente consulta, se muestran los trabajos de los últimos siete días que fallarían si sus conjuntos de datos fueran conjuntos de datos de conmutación por error:

WITH
  non_epe_reservations AS (
    SELECT project_id, reservation_name
    FROM `PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS
    WHERE edition != 'ENTERPRISE_PLUS'
  )
SELECT *
FROM
  (
    SELECT job_id
    FROM
      (
        SELECT
          job_id,
          reservation_id,
          ARRAY_CONCAT(referenced_tables, [destination_table]) AS all_referenced_tables,
          query
        FROM
          `PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.JOBS
        WHERE
          creation_time
          BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
          AND CURRENT_TIMESTAMP()
      ) A,
      UNNEST(all_referenced_tables) AS referenced_table
  ) jobs
LEFT OUTER JOIN non_epe_reservations
  ON (
    jobs.reservation_id = CONCAT(
      non_epe_reservations.project_id, ':', 'LOCATION', '.', non_epe_reservations.reservation_name))
WHERE
  CONCAT(jobs.project_id, ':', jobs.dataset_id)
  IN UNNEST(
    [
      'PROJECT_ID:DATASET_ID',
      'PROJECT_ID:DATASET_ID']);

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto.
  • DATASET_ID: El ID del conjunto de datos.
  • LOCATION: La ubicación.

¿Qué sigue?