Cómo recuperar una transmisión

Puedes recuperar una transmisión que falló de forma permanente sin tener que crear una nueva. Para ello, especifica la posición desde la que Datastream intenta reanudar la lectura de los cambios del origen.

Descripción general de la recuperación de la transmisión

Una transmisión en ejecución puede encontrar algunos errores irrecuperables y cambiar su estado a FAILED_PERMANENTLY. Estos errores impiden que el flujo siga ejecutándose y pueden provocar la pérdida de datos.

Puedes recuperar una transmisión que falló de forma permanente configurándola para que ignore el error y siga leyendo los eventos en curso en lugar de volver a crear la transmisión y completar los datos históricos. Para recuperar una transmisión que falló de forma permanente, restablece la replicación para comenzar a leer desde una posición de replicación diferente. Cada tipo de fuente compatible tiene su propia definición de lo que es una posición de replicación:

  • En el caso de las fuentes de Oracle, una posición de replicación es un archivo de registro redo en la base de datos y el número de cambio del sistema (SCN) en este archivo.
  • En el caso de las fuentes de MySQL, una posición de replicación es el archivo de registro binario (binlog) de la base de datos y la posición en este archivo (para la replicación basada en binlog) o un conjunto de identificadores de transacciones globales llamado conjunto de GTID (para la replicación basada en GTID, que solo se admite en la API de Datastream).
  • En el caso de las fuentes de SQL Server, una posición de replicación es el número de secuencia de registro (LSN) en los registros de transacciones o las tablas de cambios.
  • En el caso de las fuentes de PostgreSQL (incluido AlloyDB para PostgreSQL), la posición de replicación es el número de secuencia de registro (LSN) en la ranura de replicación. Durante la recuperación, la transmisión comienza a leer desde el primer LSN en la ranura de replicación.
  • En el caso de las fuentes de MongoDB, una posición de replicación es una marca de tiempo en el registro de operaciones (oplog) de MongoDB.

Recupera una transmisión para una fuente de MySQL o de Oracle

Para recuperar una transmisión de una fuente de MySQL (replicación basada en binlogs) o de Oracle, tienes las siguientes opciones:

  • Reintentar desde la posición actual (recomendado): Selecciona esta opción para intentar transmitir desde la posición actual, en la que falló la transmisión por última vez. Primero debes corregir el archivo de registro o recuperarlo de una copia de seguridad. Esta es la opción recomendada.

  • Salta la posición actual y transmite desde la siguiente posición disponible: Si faltan uno o más archivos de registro, elige esta opción para saltarlos y reanudar la transmisión desde la primera posición en el siguiente archivo disponible. Se perderán los cambios de los archivos de registro faltantes, pero podrás recuperarlos si realizas un reabastecimiento.

  • Salta la posición actual y transmite desde la posición más reciente: Si faltan uno o más archivos de registro, selecciona esta opción para saltarlos y reanudar la transmisión desde la posición más reciente en el archivo de registro más actualizado. Se perderán los cambios de los archivos de registro faltantes, pero podrás recuperarlos si realizas un reabastecimiento.

  • Reanuda desde tu posición y archivo de transmisión preferidos: Selecciona esta opción para reanudar la transmisión desde un archivo de registro y una posición de registro específicos. Algunos cambios pueden perderse si la posición del registro especificada no se superpone con la posición del registro perdida o no la sigue de inmediato. Puedes recuperar estos cambios realizando un reabastecimiento.

Para recuperar una transmisión que falló de forma permanente para una fuente de MySQL o de Oracle, sigue estos pasos:

  1. Ve a la página Streams en Google Cloud.

    Ir a la página Flujos

  2. Haz clic en Recuperar en la fila con el nombre de la transmisión que deseas recuperar.

  3. Se abrirá el panel Elige una estrategia de recuperación. Selecciona una opción. Si seleccionas Reanuda desde tu posición y archivo de transmisión preferidos, ingresa lo siguiente:

    • Para una fuente de MySQL, el nombre del archivo de registro en el campo Nombre de archivo y la posición del registro en el campo Posición Si no especificas la posición, la transmisión se reanuda desde la primera posición del archivo de registro indicado.
    • Para una fuente de Oracle, el número de cambio del sistema (SCN) en el campo System Change Number (SCN) Este campo es obligatorio.
  4. Haz clic en Aplicar.

  5. Cuando se recupera la transmisión, aparece una marca de tiempo en la columna Recuperada de la página Transmisiones.

Recupera una transmisión para una fuente de PostgreSQL

Para recuperar un flujo de una fuente de PostgreSQL, debes proporcionar el nombre de la ranura de replicación. El servidor usa esta ranura de replicación para enviar eventos a Datastream. El nombre de la ranura de replicación puede ser el mismo que el de la ranura que se usó para la transmisión con errores o puede ser diferente:

  • Si la nueva ranura de replicación tiene un nombre diferente, proporciona el nuevo nombre de la ranura de replicación a Datastream.
  • Si no proporcionas un nombre de ranura de replicación, Datastream usará el nombre de ranura de replicación especificado en la configuración de origen.

    Para obtener más información sobre las ranuras de replicación, consulta Configura una base de datos de PostgreSQL de origen.

Se perderán los eventos de cambio de la fuente que se produjeron entre la pérdida de posición del registro y el primer LSN de la ranura de replicación nueva. Puedes recuperar estos cambios si realizas un reabastecimiento.

Para recuperar una transmisión con errores permanentes de una fuente de PostgreSQL, sigue estos pasos:

  1. Ve a la página Streams en Google Cloud.

    Ir a la página Flujos

  2. Haz clic en Recuperar en la fila con el nombre de la transmisión que deseas recuperar.

  3. Se abrirá el panel Define a new replication slot.

  4. En el campo Nombre de la ranura de replicación, proporciona el nombre de una nueva ranura de replicación desde la que se intentará recuperar la transmisión. Si volviste a crear la ranura de replicación con el mismo nombre o quieres volver a usar la ranura que especificaste cuando configuraste tu fuente, puedes dejar este campo vacío.

  5. Haz clic en Aplicar.

  6. Cuando se recupera la transmisión, aparece una marca de tiempo en la columna Recuperada de la página Transmisiones.

También puedes recuperar transmisiones con errores permanentes desde la página Detalles de la transmisión. Para ello, haz clic en Recuperar transmisión cuando veas la información detallada sobre tu transmisión.

Recupera una transmisión para una fuente de SQL Server

Para recuperar una transmisión de una fuente de SQL Server, tienes las siguientes opciones:

  • Reanudar desde la primera posición disponible: Selecciona esta opción si el registro se truncó o faltan algunos registros en las tablas de cambios, y deseas reanudar desde el primer evento disponible. Los eventos faltantes se perderán, pero puedes recuperarlos realizando un reabastecimiento.

  • Reanudar la transmisión desde el número de secuencia de registro (LSN) que prefieras: Selecciona esta opción para reanudar la transmisión desde un LSN específico en los registros de transacción o tablas de modificaciones. Es posible que se pierdan algunos eventos si el LSN especificado no se superpone con el último LSN que Datastream pudo recuperar o no lo sigue inmediatamente. Puedes recuperar estos eventos realizando un reabastecimiento.

    El LSN en los registros de transacciones y en las tablas de cambios contiene 20 caracteres hexadecimales, pero, en el caso de los registros de transacciones, está separado por un delimitador. Por ejemplo:

    • LSN en los registros de transacciones: 0000123C:0000BA78:0004
    • LSN en las tablas de cambios: 0000123C0000BA780004

Para recuperar una transmisión que falló de forma permanente para una fuente de SQL Server, sigue estos pasos:

  1. Ve a la página Streams en Google Cloud.

    Ir a la página Flujos

  2. Haz clic en Recuperar en la fila con el nombre de la transmisión que deseas recuperar.

  3. Se abrirá el panel Elige una estrategia de recuperación. Selecciona una opción.

  4. Haz clic en Aplicar.

  5. Cuando se recupera la transmisión, aparece una marca de tiempo en la columna Recuperada de la página Transmisiones.

Recupera una transmisión para una fuente de MongoDB

La recuperación de transmisiones para fuentes de MongoDB está disponible a través de la API de Datastream. Puedes recuperar un flujo de MongoDB con las siguientes opciones:

  • Posición de inicio más reciente: Selecciona esta opción si deseas reanudar tu transmisión desde la marca de tiempo actual en el oplog de MongoDB. Los eventos faltantes se perderán, pero puedes recuperarlos si realizas un reabastecimiento.

  • Posición de inicio específica: Selecciona esta opción para reanudar la transmisión desde una marca de tiempo seleccionada. La marca de tiempo que usas en tu solicitud debe ser válida, lo que significa que no puede ser anterior a la posición más antigua disponible en el oplog de MongoDB ni puede ser en el futuro.

Para obtener información sobre cómo crear una solicitud para recuperar una transmisión de MongoDB, consulta la documentación de referencia de la API de Datastream.

Para obtener información sobre el registro de operaciones de MongoDB, consulta la documentación de MongoDB.

Usa la recuperación de transmisión para una fuente de MySQL en una situación de conmutación por error manual

Puedes realizar una conmutación por error manual y usar la recuperación de transmisiones para evitar tener que volver a crear tus transmisiones desde cero durante el mantenimiento o la falla de la instancia principal. En general, Datastream no admite conmutaciones por error a réplicas porque interrumpen la continuidad del registro binario, pero puedes seguir estos pasos para recuperar la transmisión y asegurarte de que se capturen tus datos de cambio:

  1. Detén todas las operaciones de escritura en la instancia principal.
  2. Asegúrate de que la métrica de actualidad de los datos esté establecida en 0. Esto significa que Datastream capturó todos los cambios y no hay eventos nuevos para leer de la fuente. Para obtener más información, consulta Cómo supervisar una transmisión.
  3. Conmuta por error a la nueva instancia de base de datos.
  4. Si es necesario, actualiza el perfil de conexión de la transmisión a la nueva instancia de la base de datos (por ejemplo, es posible que debas cambiar el nombre de host o la dirección IP de la base de datos). Para obtener más información, consulta Cómo modificar perfiles de conexión.
  5. Recupera la transmisión desde una posición específica en la instancia de conmutación por error para garantizar la continuidad de la CDC.

¿Qué sigue?