Reprise après sinistre gérée

Ce document présente la reprise après sinistre gérée de BigQuery et explique comment la mettre en œuvre pour vos données et vos charges de travail.

Présentation

BigQuery est compatible avec les scénarios de reprise après sinistre en cas de panne régionale totale. La reprise après sinistre de BigQuery repose sur la réplication interrégionale d'ensembles de données pour gérer le basculement du stockage. Après avoir créé une instance répliquée de l'ensemble de données dans une région secondaire, vous pouvez contrôler le comportement de basculement pour le calcul et le stockage afin de maintenir la continuité des activités en cas de panne. Après un basculement, vous pouvez accéder à la capacité de calcul (emplacements) et aux ensembles de données répliqués dans la région promue. La reprise après sinistre n'est disponible qu'avec l'édition Enterprise Plus.

La reprise après sinistre gérée effectue un basculement forcé lorsqu'un basculement est initié. Lors d'un basculement forcé, la réservation et les instances répliquées de l'ensemble de données de la région secondaire sont immédiatement promues en tant qu'instances principales, même si la région principale précédente est indisponible, sans attendre la réplication des données non répliquées. De ce fait, des pertes de données peuvent survenir lors du basculement forcé. Tous les jobs ayant validé des données dans la région source avant la valeur replication_time de l'instance répliquée devront être réexécutés dans la région de destination après le basculement.

Pour activer la reprise après sinistre, vous devez créer une réservation de l'édition Enterprise Plus dans la région principale, qui correspond à la région dans laquelle se trouve l'ensemble de données avant le basculement. La capacité de calcul de secours dans la région associée est incluse dans la réservation Enterprise Plus. Vous devez ensuite associer un ensemble de données à cette réservation afin d'activer le basculement pour cet ensemble de données. Vous ne pouvez associer un ensemble de données à une réservation que s'il est rempli et s'il possède les mêmes emplacements principal et secondaire associés que la réservation. Une fois qu'un ensemble de données est associé à une réservation de basculement, seules les réservations Enterprise Plus peuvent écrire dans ces ensembles de données, et vous ne pouvez pas effectuer de promotion de la réplication interrégionale sur l'ensemble de données. Vous pouvez lire à partir d'ensembles de données associés à une réservation de basculement avec n'importe quel modèle de capacité. Pour en savoir plus sur les réservations, consultez la page Présentation de la gestion des charges de travail.

La capacité de calcul de votre région principale est disponible dans la région secondaire rapidement après un basculement. Cette disponibilité s'applique à votre réservation de référence, qu'elle soit utilisée ou non.

Vous devez choisir activement d'effectuer un basculement lors des tests ou en réponse à un véritable sinistre. Vous ne devez pas effectuer de basculement plus d'une fois dans une fenêtre de 10 minutes. Dans les scénarios de réplication de données, le remplissage fait référence au processus qui consiste à renseigner une instance répliquée d'un ensemble de données à l'aide de données historiques qui existaient avant la création ou l'activation de l'instance répliquée. Les ensembles de données doivent terminer leur remplissage avant de pouvoir basculer vers l'ensemble de données.

Le schéma suivant illustre l'architecture de reprise après sinistre gérée :

Architecture de reprise après sinistre gérée.

Limites

Les limites suivantes s'appliquent à la reprise après sinistre de BigQuery :

  • La reprise après sinistre de BigQuery est soumise aux mêmes limites que la réplication interrégionale d'ensembles de données.

  • L'autoscaling après un basculement dépend de la disponibilité de la capacité de calcul dans la région secondaire. Seule la référence de réservation est disponible dans la région secondaire.

  • La vue INFORMATION_SCHEMA.RESERVATIONS ne comporte pas de détails sur le basculement.

  • Si vous disposez de plusieurs réservations de basculement avec le même projet d'administration, mais dont les ensembles de données associés utilisent des emplacements secondaires différents, n'utilisez pas une réservation de basculement avec les ensembles de données associés à une autre réservation de basculement.

  • Si vous souhaitez convertir des réservations existantes en réservation de basculement, les réservations existantes ne peuvent pas comporter plus de 1 000 attributions.

Emplacements

Les régions suivantes sont disponibles lorsque vous créez une réservation de basculement:

Code d'emplacement Nom de la région Description de la région
ASIA
ASIA-EAST1 Taïwan
ASIA-SOUTHEAST1 Singapour
AU
AUSTRALIA-SOUTHEAST1 Sydney
AUSTRALIA-SOUTHEAST2 Melbourne
CA
NORTHAMERICA-NORTHEAST1 Montréal
NORTHAMERICA-NORTHEAST2 Toronto
EU
EU UE (multirégional)
EUROPE-CENTRAL2 Varsovie
EUROPE-NORTH1 Finlande
EUROPE-SOUTHWEST1 Madrid
EUROPE-WEST1 Belgique
EUROPE-WEST3 Francfort
EUROPE-WEST4 Pays-Bas
EUROPE-WEST8 Milan
EUROPE-WEST9 Paris
IN
ASIA-SOUTH1 Mumbai
ASIA-SOUTH2 Delhi
US
US États-Unis (multirégional)
US-CENTRAL1 Iowa
US-EAST1 Caroline du Sud
US-EAST4 Virginie du Nord
US-SOUTH1 Dallas
US-WEST1 Oregon
US-WEST2 Los Angeles
US-WEST3 Salt Lake City
US-WEST4 Las Vegas

Les paires de régions doivent être sélectionnées dans ASIA, AU, CA, EU, IN ou US. Par exemple, une région de US ne peut pas être associée à une région de EU.

Si votre ensemble de données BigQuery se trouve dans une zone multirégionale, vous ne pouvez pas utiliser les paires de régions suivantes. Cette limitation garantit que votre réservation de basculement et vos données sont séparées géographiquement après la réplication. Pour en savoir plus sur les régions incluses dans des zones multirégionales, consultez la section Zones multirégionales.

  • us-central1 - us (multirégional)
  • us-west1 - us (multirégional)
  • eu-west1 - eu (multirégional)
  • eu-west4 - eu (multirégional)

Avant de commencer

  1. Assurez-vous de disposer de l'autorisation IAM (Identity and Access Management) bigquery.reservations.update pour mettre à jour les réservations.
  2. Assurez-vous que vous disposez d'ensembles de données existants configurés pour la réplication. Pour en savoir plus, consultez la page Créer un ensemble de données

Réplication turbo

La reprise après sinistre utilise la réplication turbo pour répliquer les données plus rapidement entre les régions, ce qui réduit le risque d'exposition aux pertes de données, minimise le temps d'arrêt du service et permet d'assurer la continuité des services en cas de panne régionale.

La réplication turbo ne s'applique pas à l'opération de remplissage initiale. Une fois l'opération de remplissage initial terminée, la réplication turbo vise à répliquer les ensembles de données dans une seule paire de régions de basculement avec une réplication secondaire dans un délai de 15 minutes, à condition que le quota de bande passante ne soit pas dépassé et qu'il n'y ait pas d'erreurs utilisateur.

Objectif de temps de récupération

Un objectif de temps de récupération (RTO) correspond au délai cible autorisé pour la récupération dans BigQuery en cas de sinistre. Pour en savoir plus sur le RTO, consultez la section Principes de base de la planification de la reprise après sinistre.La reprise après sinistre gérée offre un RTO de cinq minutes après le déclenchement d'un basculement. En raison du RTO, la capacité est disponible dans la région secondaire dans les cinq minutes suivant le début du processus de basculement.

Objectif de point de reprise après sinistre

Un objectif de point de récupération (RPO) correspond au point temporel le plus récent à partir duquel les données doivent pouvoir être restaurées. Pour en savoir plus sur le RPO, consultez la page Principes de base d'un plan de reprise après sinistre. La reprise après sinistre gérée a un RPO défini par ensemble de données. L'objectif de point de récupération vise à maintenir la réplication secondaire dans un délai de 15 minutes par rapport à la réplication principale. Pour respecter ce RPO, vous ne devez pas dépasser le quota de bande passante et aucune erreur utilisateur ne doit se produire.

Quota

Vous devez disposer de la capacité de calcul choisie dans la région secondaire avant de configurer une réservation de basculement. Si aucun quota n'est disponible dans la région secondaire, vous ne pouvez pas configurer la réservation. Pour en savoir plus, consultez la page Quotas et limites.

La bande passante de la réplication turbo est soumise à des quotas. Pour en savoir plus, consultez la page Quotas et limites.

Tarifs

La configuration de la reprise après sinistre gérée nécessite les forfaits suivants :

Les clients ne doivent payer que la capacité de calcul dans la région principale. La capacité de calcul secondaire (basée sur la référence de réservation) est disponible dans la région secondaire sans frais supplémentaires. Les emplacements inactifs ne peuvent pas utiliser la capacité de calcul secondaire, sauf si la réservation a basculé.

Si vous devez effectuer des lectures non actualisées dans la région secondaire, vous devez acheter de la capacité de calcul supplémentaire.

Créer ou modifier une réservation Enterprise Plus

Avant d'associer un ensemble de données à une réservation, vous devez créer une réservation Enterprise Plus ou modifier une réservation existante et la configurer pour la reprise après sinistre.

Créer une réservation

Sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le menu de navigation, cliquez sur Gestion de la capacité, puis sur Créer une réservation.

  3. Dans le champ Nom de la réservation, saisissez un nom pour la réservation.

  4. Dans la liste Emplacement, sélectionnez un emplacement.

  5. Dans la liste Édition, sélectionnez l'édition Enterprise Plus.

  6. Dans la liste Sélecteur de taille de réservation maximale, sélectionnez la taille de réservation maximale.

  7. Facultatif : dans le champ Emplacements de référence, saisissez le nombre d'emplacements de référence pour la réservation.

    Le nombre d'emplacements d'autoscaling disponibles est déterminé en soustrayant la valeur Emplacements de référence de la taille maximale de réservation. Par exemple, si vous créez une réservation avec 100 emplacements de référence et une taille de réservation maximale de 400, votre réservation comporte 300 emplacements d'autoscaling. Pour en savoir plus sur les emplacements de référence, consultez la section Utiliser des réservations avec des emplacements de référence et d'autoscaling.

  8. Dans la liste Emplacement secondaire, sélectionnez l'emplacement secondaire.

  9. Pour désactiver le partage d'emplacements inactifs et n'utiliser que la capacité d'emplacements spécifiée, cliquez sur le bouton Ignorer les emplacements inactifs.

  10. Pour développer la section Paramètres avancés, cliquez sur la flèche de développement .

  11. Facultatif : Pour définir la simultanéité de job cible, cliquez sur le bouton Ignorer la simultanéité de job cible automatique, puis saisissez une valeur pour la simultanéité de job cible. La répartition des emplacements est affichée dans le tableau Estimation des coûts. Un résumé de la réservation est affiché dans le tableau Récapitulatif de la capacité.

  12. Cliquez sur Enregistrer.

La nouvelle réservation est visible dans l'onglet Réservations d'emplacements.

SQL

Pour créer une réservation, utilisez l'instruction LDD (langage de définition de données) CREATE RESERVATION.

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

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

    Remplacez les éléments suivants :

    • ADMIN_PROJECT_ID : ID du projet d'administration propriétaire de la ressource de réservation.
    • LOCATION : emplacement de la réservation. Si vous sélectionnez un emplacement BigQuery Omni, votre option d'édition est limitée à l'édition Enterprise.
    • RESERVATION_NAME : nom de la réservation.

      Le nom doit commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des tirets.

    • NUMBER_OF_BASELINE_SLOTS : nombre d'emplacements de référence à allouer à la réservation. Vous ne pouvez pas définir les options slot_capacity et edition dans la même réservation.
    • SECONDARY_LOCATION : emplacement secondaire de la réservation. En cas de panne, tous les ensembles de données associés à cette réservation basculeront vers cet emplacement.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

Modifier une réservation existante

Sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud, accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Dans le panneau de navigation, accédez à la section Gestion de la capacité.

  3. Cliquez sur l'onglet Réservations d'emplacements.

  4. Recherchez la réservation que vous souhaitez mettre à jour.

  5. Développez l'option Actions.

  6. Cliquez sur Modifier.

  7. Dans le champ Emplacement secondaire, saisissez l'emplacement secondaire.

  8. Cliquez sur Enregistrer.

SQL

Pour ajouter ou modifier un emplacement secondaire dans une réservation, utilisez l'instruction LDD ALTER RESERVATION SET OPTIONS.

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

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

    Remplacez les éléments suivants :

    • ADMIN_PROJECT_ID : ID du projet d'administration propriétaire de la ressource de réservation.
    • LOCATION : emplacement de la réservation, par exemple europe-west9.
    • RESERVATION_NAME : nom de la réservation. Le nom doit commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des tirets.

    • SECONDARY_LOCATION : emplacement secondaire de la réservation. En cas de panne, tous les ensembles de données associés à cette réservation basculeront vers cet emplacement.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

Associer un ensemble de données à une réservation

Pour activer la reprise après sinistre pour la réservation créée précédemment, procédez comme suit : L'ensemble de données doit déjà être configuré pour la réplication dans les mêmes régions principale et secondaire que la réservation. Pour en savoir plus, consultez la page Réplication interrégionale d'ensembles de données.

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le menu de navigation, cliquez sur Gestion de la capacité, puis sur l'onglet Réservations d'emplacements.

  3. Cliquez sur la réservation à laquelle vous souhaitez associer un ensemble de données.

  4. Cliquez sur l'onglet Reprise après sinistre.

  5. Cliquez sur Ajouter un ensemble de données de basculement.

  6. Saisissez le nom de l'ensemble de données que vous souhaitez associer à la réservation.

  7. Cliquez sur Ajouter.

SQL

Pour associer un ensemble de données à une réservation, utilisez l'instruction LDD ALTER SCHEMA SET OPTIONS.

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

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

    Remplacez les éléments suivants :

    • DATASET_NAME : nom de l'ensemble de données.

    • ADMIN_PROJECT_ID.RESERVATION_NAME : nom de la réservation à laquelle vous souhaitez associer l'ensemble de données.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

Dissocier un ensemble de données d'une réservation

Pour arrêter de gérer le comportement de basculement d'un ensemble de données via une réservation, dissociez-le de la réservation. Cette opération ne modifie pas l'instance répliquée principale actuelle de l'ensemble de données et ne supprime aucune instance répliquée existante de l'ensemble de données. Pour en savoir plus sur la suppression des instances répliquées d'un ensemble de données après l'avoir dissocié, consultez Supprimer une instance répliquée d'un ensemble de données.

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le menu de navigation, cliquez sur Gestion de la capacité, puis sur l'onglet Réservations d'emplacements.

  3. Cliquez sur la réservation contenant un ensemble de données que vous souhaitez dissocier.

  4. Cliquez sur l'onglet Reprise après sinistre.

  5. Développez l'option  Actions pour l'instance répliquée principale de l'ensemble de données.

  6. Cliquez sur Supprimer.

SQL

Pour dissocier un ensemble de données d'une réservation, utilisez l'instruction LDD ALTER SCHEMA SET OPTIONS.

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

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

    Remplacez les éléments suivants :

    • DATASET_NAME : nom de l'ensemble de données.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

Initier un basculement

En cas de panne régionale, vous devez faire basculer manuellement votre réservation vers l'emplacement utilisé par l'instance répliquée. Le basculement de la réservation inclut également tous les ensembles de données associés. Pour basculer manuellement une réservation, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le menu de navigation, cliquez sur Reprise après sinistre.

  3. Cliquez sur le nom de la réservation vers laquelle vous souhaitez basculer.

  4. Cliquez sur Basculement.

SQL

Pour ajouter ou modifier un emplacement secondaire dans une réservation, utilisez l'instruction LDD ALTER RESERVATION SET OPTIONS et définissez is_primary sur TRUE.

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

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

    Remplacez les éléments suivants :

    • ADMIN_PROJECT_ID : ID du projet d'administration propriétaire de la ressource de réservation.
    • LOCATION : emplacement de la réservation, par exemple europe-west9.
    • RESERVATION_NAME : nom de la réservation. Le nom doit commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des tirets.

    • PRIMARY_STATUS : état booléen qui déclare si la réservation est l'instance répliquée principale.

  3. Cliquez sur Exécuter.

Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

Surveillance

Pour déterminer l'état de vos instances répliquées, interrogez la vue INFORMATION_SCHEMA.SCHEMATA_REPLICAS. Exemple :

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

La requête suivante renvoie les jobs des sept derniers jours qui échoueraient si les ensembles de données étaient des ensembles de données de basculement :

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']);

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • DATASET_ID : ID de l'ensemble de données
  • LOCATION : l'emplacement.

Étapes suivantes