Vous pouvez récupérer un flux ayant échoué de manière permanente sans avoir à en créer un 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 passer à l'état FAILED_PERMANENTLY
. Ces erreurs empêchent le flux de continuer à s'exécuter et peuvent entraîner une perte de données.
Vous pouvez récupérer un flux ayant échoué de manière permanente en le configurant pour qu'il ignore l'erreur et continue de 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 ayant échoué de manière permanente, vous devez réinitialiser la réplication afin de commencer la lecture à partir d'une autre position de réplication. 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 est un fichier journal de rétablissement dans la base de données et le numéro de modification du système (SCN) dans ce fichier.
- Pour les sources MySQL, une position de réplication correspond au fichier journal binaire (binlog) de la base de données et à la position dans ce fichier (pour la réplication basée sur binlog), ou à un ensemble d'identifiants de transaction globaux appelé ensemble GTID (pour la réplication basée sur GTID, compatible uniquement avec l'API Datastream).
- Pour les sources SQL Server, une position de réplication correspond au numéro de séquence de journal (LSN) dans les journaux de transactions ou les tables de modifications.
- Pour les sources PostgreSQL (y compris AlloyDB pour PostgreSQL), une position de réplication correspond au numéro de séquence de journal (LSN) dans l'emplacement de réplication. Lors de la récupération, le flux commence à lire les données à partir du premier LSN de l'emplacement de réplication.
- Pour les sources MongoDB, une position de réplication est un code temporel dans le journal des opérations MongoDB (oplog).
Récupérer un flux pour une source MySQL ou Oracle
Pour récupérer un flux pour une source MySQL (réplication basée sur binlog) ou Oracle, vous avez les options suivantes :
Réessayer à partir de la position actuelle (recommandé) : sélectionnez cette option pour tenter de reprendre le flux à partir de la position actuelle, où il a échoué pour la dernière fois. 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 lancer la diffusion à partir de la prochaine position disponible : si un ou plusieurs fichiers journaux sont manquants, sélectionnez cette option pour les ignorer et reprendre le flux à partir de la première position du fichier disponible suivant. Les modifications consignées dans les fichiers journaux manquants sont perdues, mais vous pouvez les récupérer en effectuant un remplissage.
Ignorer la position actuelle et lancer la diffusion à partir de la position la plus récente : si un ou plusieurs fichiers journaux sont manquants, sélectionnez cette option pour les ignorer et reprendre le flux à partir de la position la plus récente du fichier journal le plus récent. Les modifications consignées dans les fichiers journaux manquants sont perdues, mais vous pouvez les récupérer en effectuant un remplissage.
Reprendre la diffusion à partir du fichier et de la position 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 ayant échoué de manière permanente pour une source MySQL ou Oracle, procédez comme suit :
Accédez à la page Flux dans Google Cloud.
Cliquez sur Récupérer sur la ligne correspondant au nom du flux que vous souhaitez récupérer.
Le volet Choisir une stratégie de récupération s'ouvre. Sélectionnez une option. Si vous sélectionnez Reprendre la diffusion à partir du fichier et de la position de votre choix, saisissez les informations suivantes :
- Pour une source MySQL : le nom du fichier journal dans le champ Nom du fichier et la position du journal dans le champ Position. Si vous ne spécifiez pas la 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 Numéro de modification du système (SCN). Ce champ est obligatoire.
Cliquez sur Appliquer.
Lorsque le flux est récupéré, un code temporel s'affiche dans la colonne Récupéré de la page Flux.
Récupérer un flux pour une source PostgreSQL
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 ayant échoué ou différent :
- Si le nouvel emplacement de réplication porte un nom différent, indiquez-le à Datastream.
Si vous ne fournissez pas de nom d'emplacement de réplication, Datastream utilise celui spécifié dans la configuration source.
Pour en savoir plus sur les emplacements de réplication, consultez 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.
Pour récupérer un flux ayant échoué de manière permanente pour une source PostgreSQL, procédez comme suit :
Accédez à la page Flux dans Google Cloud.
Cliquez sur Récupérer sur la ligne correspondant au nom du flux que vous souhaitez récupérer.
Le volet Définir un nouvel emplacement de réplication s'ouvre.
Dans le champ Nom de l'emplacement de réplication, indiquez le nom d'un nouvel emplacement de réplication à partir duquel le flux va tenter la récupération. Si vous avez recréé l'emplacement de réplication avec le même nom ou si vous souhaitez réutiliser l'emplacement que vous avez spécifié lors de la configuration de votre source, vous pouvez laisser ce champ vide.
Cliquez sur Appliquer.
Lorsque le flux est récupéré, un code temporel s'affiche dans la colonne Récupéré de la page Flux.
Vous pouvez également récupérer les flux en échec permanent à partir de la page Détails du flux. Pour ce faire, cliquez sur Récupérer le flux lorsque vous consultez des informations détaillées sur votre flux.
Récupérer un flux pour une source SQL Server
Pour récupérer un flux pour une source SQL Server, vous disposez des options suivantes :
Reprendre à partir de la première position disponible : sélectionnez cette option si le journal a été tronqué ou si des enregistrements sont manquants dans les tables de modification, et que vous souhaitez reprendre à partir du premier événement disponible. Les événements manquants sont perdus, mais vous pouvez les récupérer en effectuant un remplissage.
Reprendre à partir du numéro de séquence de journal (LSN) de votre choix : sélectionnez cette option pour reprendre le flux à partir d'un LSN spécifique dans les journaux de transactions ou les tables de modifications. Vous risquez de perdre des événements si le LSN spécifié ne chevauche pas ou ne suit pas immédiatement le dernier LSN que Datastream a pu récupérer. Vous pouvez récupérer ces événements en effectuant un remplissage.
Le numéro LSN des journaux de transactions et des tables de modifications contient 20 caractères hexadécimaux, mais pour les journaux de transactions, il est séparé par un délimiteur. Exemple :
- LSN dans les journaux de transactions :
0000123C:0000BA78:0004
- LSN dans les tables de modifications :
0000123C0000BA780004
- LSN dans les journaux de transactions :
Pour récupérer un flux ayant échoué de manière permanente pour une source SQL Server, procédez comme suit :
Accédez à la page Flux dans Google Cloud.
Cliquez sur Récupérer sur la ligne correspondant au nom du flux que vous souhaitez récupérer.
Le volet Choisir une stratégie de récupération s'ouvre. Sélectionnez une option.
Cliquez sur Appliquer.
Lorsque le flux est récupéré, un code temporel s'affiche dans la colonne Récupéré de la page Flux.
Récupérer un flux pour une source MongoDB
La récupération de flux pour les sources MongoDB est disponible à l'aide de l'API Datastream. Vous pouvez récupérer un flux MongoDB à l'aide des options suivantes :
Position de départ la plus récente : sélectionnez cette option si vous souhaitez reprendre votre flux à partir du code temporel actuel dans l'oplog MongoDB. Les événements manquants sont perdus, mais vous pouvez les récupérer en effectuant un remplissage.
Position de départ spécifique : sélectionnez cette option pour reprendre le flux à partir d'un code temporel spécifique. L'horodatage que vous utilisez dans votre requête doit être valide. Cela signifie qu'il ne peut pas être antérieur à la position la plus ancienne disponible dans l'oplog MongoDB ni être dans le futur.
Pour savoir comment créer une demande de récupération d'un flux MongoDB, consultez la documentation de référence de l'API Datastream.
Pour en savoir plus sur le journal des opérations MongoDB, consultez la documentation MongoDB.
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 vos flux à partir de zéro lors d'une maintenance ou d'une défaillance de l'instance principale. En général, Datastream n'accepte pas les basculements vers des répliques, car ils interrompent la continuité du journal binaire. Toutefois, vous pouvez suivre ces étapes pour récupérer le flux et vous assurer que vos données de modification sont capturées :
- Arrêtez toutes les opérations en écriture sur l'instance principale.
- 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 pas de nouveaux événements à lire à partir de la source. Pour en savoir plus, consultez Surveiller un flux.
- Basculez vers la nouvelle instance de base de données.
- Si nécessaire, mettez à jour le profil de connexion du flux vers 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.
- Récupérez le flux à partir d'une position spécifique sur l'instance de basculement pour assurer la continuité de la CDC.
Étapes suivantes
- Pour en savoir plus sur les états des flux, consultez Cycle de vie des flux.
- Pour savoir comment afficher des informations sur votre flux, consultez Afficher un flux.
- Pour savoir comment surveiller un flux, consultez Surveiller un flux.
- Pour savoir comment gérer le remplissage d'un flux, consultez Gérer le remplissage pour les objets d'un flux.
- Pour savoir comment supprimer un flux existant, consultez Supprimer un flux.