Récupérer un flux

Vous pouvez récupérer une diffusion ayant échoué définitivement sans avoir à en créer une autre. Pour ce faire, spécifiez la position à partir de laquelle Datastream tente de reprendre la lecture des modifications à partir de la source.

Présentation de la récupération de flux

Un flux en cours d'exécution peut rencontrer des erreurs irrécupérables et faire passer son état à FAILED_PERMANENTLY. De telles erreurs empêchent le flux de continuer à s'exécuter et peuvent entraîner des pertes de données.

Vous pouvez récupérer un flux ayant échoué définitivement en le configurant pour qu'il ignore l'erreur et continue à lire les événements en cours au lieu de recréer le flux et de remplir les données historiques. Pour récupérer un flux en échec permanent, réinitialisez la réplication afin de commencer la lecture à partir d'une position de réplication différente. Chaque type de source compatible a sa propre définition de ce qu'est une position de réplication:

  • Pour les sources Oracle, une position de réplication correspond à un fichier journal de rétablissement dans la base de données et au numéro de modification système (SCN) contenu dans ce fichier.
  • Pour les sources MySQL, la position de réplication correspond au fichier binlog (journal binaire de la base de données) et à la position dans ce fichier.
  • Pour les sources PostgreSQL (y compris AlloyDB pour PostgreSQL), la position de réplication correspond au numéro de séquence du journal (LSN) dans l'emplacement de réplication. Pendant la récupération, le flux commence à lire à partir du premier LSN dans l'emplacement de réplication.

Pour récupérer un flux pour une source MySQL ou Oracle, vous disposez des options suivantes:

  • Réessayer à partir de la position actuelle (recommandé): sélectionnez cette option pour tenter d'exécuter la diffusion à partir de la position actuelle, à l'endroit où le flux a échoué. Vous devez d'abord corriger le fichier journal ou le récupérer à partir d'une sauvegarde. Il s'agit de l'option recommandée.

  • Ignorer la position actuelle et diffuser à partir de la prochaine position disponible: si un ou plusieurs fichiers journaux sont manquants, sélectionnez cette option pour ignorer ces fichiers et reprendre la diffusion à partir de la première position du fichier disponible suivant. Les modifications apportées aux fichiers journaux manquants sont perdues, mais vous pouvez les récupérer en effectuant un remplissage.

  • Ignorer la position actuelle et diffuser à partir de la position la plus récente: s'il manque un ou plusieurs fichiers journaux, sélectionnez cette option pour ignorer ces fichiers et reprendre la diffusion à partir de la position la plus récente du fichier journal le plus récent. Les modifications apportées aux fichiers journaux manquants sont perdues, mais vous pouvez les récupérer en effectuant un remplissage.

  • Reprendre le flux à partir de la position et du fichier de streaming de votre choix: sélectionnez cette option pour reprendre le flux à partir d'un fichier journal et d'une position de journal spécifiques. Certaines modifications peuvent être perdues si la position dans le journal spécifiée ne chevauche pas ou ne suit pas immédiatement la position perdue. Vous pouvez récupérer ces modifications en effectuant un remplissage.

Pour récupérer un flux pour une source PostgreSQL, vous devez fournir le nom de l'emplacement de réplication. Le serveur utilise cet emplacement de réplication pour envoyer des événements à Datastream. Le nom de l'emplacement de réplication peut être identique à celui utilisé pour le flux en échec ou différent:

  • Si le nouvel emplacement de réplication porte un nom différent, indiquez le nom du nouvel emplacement de réplication à Datastream. Pour en savoir plus, consultez la section Récupérer un flux pour une source PostgreSQL.
  • Si vous ne fournissez pas de nom d'emplacement de réplication, Datastream utilise le nom de l'emplacement de réplication spécifié dans la configuration source. Pour en savoir plus, consultez la page Configurer une base de données PostgreSQL source.

Tous les événements de modification de la source qui se sont produits entre la perte de position dans le journal et le premier LSN dans le nouvel emplacement de réplication sont perdus. Vous pouvez récupérer ces modifications en effectuant un remplissage.

Récupérer un flux pour une source MySQL ou Oracle

Pour récupérer une diffusion ayant échoué définitivement, procédez comme suit:

  1. Accédez à la page Flux dans Google Cloud.

    Accéder à la page "Flux"

  2. Cochez la case située à gauche du flux à récupérer.

  3. Cliquez sur Récupérer.

  4. Le volet Sélectionner une stratégie de récupération s'ouvre. Sélectionnez une option. Si vous sélectionnez Reprendre à partir de la position et du fichier de streaming de votre choix, saisissez les valeurs suivantes:

    • Pour une source MySQL: nom du fichier journal dans le champ Nom du fichier et position du journal dans le champ Position. Si vous ne spécifiez pas de position, le flux reprend à partir de la première position du fichier journal indiqué.
    • Pour une source Oracle: le numéro de modification du système (SCN) dans le champ System Change Number (SCN) (Numéro de modification du système) Ce champ est obligatoire.
  5. Cliquez sur Appliquer.

  6. Lorsque le flux est récupéré, un horodatage apparaît dans la colonne Récupérer de la page Flux.

Récupérer un flux pour une source PostgreSQL

Pour récupérer une diffusion ayant échoué définitivement, procédez comme suit:

  1. Accédez à la page Flux dans Google Cloud.

    Accéder à la page "Flux"

  2. Cochez la case située à gauche du flux à récupérer.

  3. Cliquez sur Récupérer.

  4. Le volet Définir un nouvel emplacement de réplication s'ouvre.

  5. Dans le champ Nom de l'emplacement de réplication, indiquez le nom du nouvel emplacement de réplication à partir duquel le flux tentera de récupérer les données. Si vous avez recréé l'emplacement de réplication en utilisant le même nom ou si vous souhaitez réutiliser l'emplacement spécifié lors de la configuration de votre source, vous pouvez laisser ce champ vide.

  6. Cliquez sur Appliquer.

  7. Lorsque le flux est récupéré, un horodatage apparaît dans la colonne Récupérer de la page Flux.

Vous pouvez également récupérer des diffusions ayant échoué définitivement depuis la page Détails du flux. Pour ce faire, cliquez sur Récupérer le flux lorsque vous consultez les informations détaillées sur votre flux.

Utiliser la récupération de flux pour une source MySQL dans un scénario de basculement manuel

Vous pouvez effectuer un basculement manuel et utiliser la récupération de flux pour éviter de recréer entièrement vos flux en cas de maintenance ou de défaillance de l'instance principale. En règle générale, Datastream n'est pas compatible avec les basculements vers les instances répliquées, car ils interrompent la continuité des binlogs. Toutefois, vous pouvez suivre ces étapes pour récupérer le flux et vous assurer que vos données modifiées sont capturées:

  1. Arrêtez toutes les opérations en écriture sur l'instance principale.
  2. Assurez-vous que la métrique de fraîcheur des données est définie sur 0. Cela signifie que Datastream a capturé toutes les modifications et qu'il n'y a aucun nouvel événement à lire à partir de la source. Pour en savoir plus, consultez la page Surveiller un flux.
  3. Basculez vers la nouvelle instance de base de données.
  4. Si nécessaire, mettez à jour le profil de connexion du flux sur la nouvelle instance de base de données (par exemple, vous devrez peut-être modifier le nom d'hôte ou l'adresse IP de la base de données). Pour en savoir plus, consultez Modifier les profils de connexion.
  5. Récupérez le flux à partir d'une position spécifique sur l'instance de basculement pour assurer la continuité de la CDC.