Vous pouvez récupérer une diffusion qui a définitivement échoué sans avoir à en créer une autre. Pour ce faire, spécifiez la position à partir de laquelle Datastream tente pour 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
peut entraîner une perte de données.
Vous pouvez récupérer un flux qui a définitivement échoué en le configurant pour qu'il ignore l'erreur et continuez à lire les événements en cours au lieu de recréer la diffusion et de remplir les données historiques. Pour récupérer un flux qui a définitivement échoué, vous devez réinitialiser le la réplication pour commencer la lecture à partir d'une position de réplication différente. Chacune d'entre elles type de source 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) de ce fichier.
- Pour les sources MySQL, une position de réplication correspond au journal binaire de la base de données (binlog) et la position dans ce fichier.
- Pour les sources SQL Server, une position de réplication correspond au numéro de séquence du 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 est le numéro de séquence du journal (LSN) dans l'emplacement de réplication. Lors de la récupération, le flux commence à lire à partir du premier LSN dans l'emplacement de réplication.
Récupérer un flux pour une source MySQL ou Oracle
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 tentative de streaming à partir de la position actuelle, où le dernier échec du flux Vous devez d'abord corriger le fichier journal ou le récupérer à partir d'une sauvegarde. Il s'agit de la est 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 la diffusion à partir de la première position dans le fichier disponible suivant. La les modifications des fichiers journaux manquants sont perdues, mais vous pouvez les récupérer en 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 dans le fichier journal le plus récent. Les modifications contenues dans les fichiers journaux manquants sont perdues, mais vous pouvez les récupérer en 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 est perdue si la position dans le journal spécifiée ne chevauche pas suivre la position perdue dans le journal. Vous pouvez récupérer ces modifications en effectuant un remplissage.
Pour récupérer un flux en échec permanent pour une source MySQL ou Oracle, procédez comme suit : procédez comme suit:
Accédez à la page Flux dans Google Cloud.
Cliquez sur Récupérer sur la ligne contenant le 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 la commande suivante:
- 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 la position, le flux reprend à partir de la première position dans le fichier journal indiqué.
- Pour une source Oracle: le numéro de modification du système (SCN) dans le champ System Change Change Numéro (SCN). Ce champ est obligatoire.
Cliquez sur Appliquer.
Lorsque le flux est récupéré, un code temporel apparaît dans la colonne Recovered (Récupéré) sur 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 la réplication nom de l'emplacement. 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 de l'emplacement utilisé pour le flux en échec. différent:
- Si le nouvel emplacement de réplication a un nom différent, indiquez le nouvel emplacement de réplication le nom de l'emplacement à Datastream. Pour en savoir plus, consultez la section Récupérer un flux pour une source PostgreSQL.
- Si vous n'indiquez pas de nom d'emplacement de réplication, Datastream utilise le nom d'emplacement de réplication spécifié dans la configuration source. Pour plus d'informations, 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 du nouvel emplacement de réplication sont perdus. Vous pouvez récupérer ces modifications en effectuant un remplissage.
Pour récupérer un flux qui a définitivement échoué pour une source PostgreSQL, exécutez la en suivant les étapes ci-dessous:
Accédez à la page Flux dans Google Cloud.
Cliquez sur Récupérer sur la ligne contenant le 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'une nouvelle réplication emplacement à partir duquel le flux tentera de récupérer. Si vous avez recréé la réplication en utilisant le même nom, ou si vous souhaitez réutiliser celui que vous avez spécifié configuré votre source, vous pouvez laisser ce champ vide.
Cliquez sur Appliquer.
Lorsque le flux est récupéré, un code temporel apparaît dans la colonne Recovered (Récupéré) sur la page Flux.
Vous pouvez également récupérer des diffusions ayant définitivement échoué sur la page Détails du flux. . Pour ce faire, cliquez sur Récupérer le flux sur la page des informations détaillées. à propos de votre diffusion.
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:
Resume from the first available position (Reprendre à partir de la première position disponible) : sélectionnez cette option si le journal a été tronqués ou manquants dans les tableaux de modifications, et 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 de votre numéro de séquence de journal préféré: sélectionnez cette option pour reprendre le flux à partir d'un LSN spécifique dans les journaux de transactions ou modifier les tables. Certains événements peuvent être perdus si le LSN spécifié ne chevauche pas ou n'est pas immédiatement après le dernier LSN que Datastream a pu récupérer. Vous pouvez récupérer ces événements en effectuant un remplissage.
Le LSN dans les journaux de transactions et les tables de modifications contient 20 hexadécimaux caractères, 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 des modifications:
0000123C0000BA780004
- LSN dans les journaux de transactions:
Pour récupérer un flux en échec permanent pour une source SQL Server, exécutez la en suivant les étapes ci-dessous:
Accédez à la page Flux dans Google Cloud.
Cliquez sur Récupérer sur la ligne contenant le 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 apparaît dans la colonne Recovered (Récupéré) sur la page 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 votre lors de la maintenance ou en cas de défaillance de l'instance principale. En règle générale, Datastream n'accepte pas les basculements vers des instances répliquées, car ils rompent la continuité du binlog, mais vous pouvez suivre ces étapes pour récupérer flux et assurez-vous 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. Autrement dit, Datastream enregistré toutes les modifications et qu'il n'y a aucun nouvel événement à lire à partir de la source. Pour Pour en savoir plus, consultez Contrôler 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 des profils de connexion.
- Récupérer le flux à partir d'une position spécifique sur l'instance de basculement pour assurer la continuité des CDC.