Puedes recuperar una emisión que ha fallado permanentemente sin tener que crear una nueva. Para ello, especifica la posición desde la que Datastream intenta reanudar la lectura de los cambios de la fuente.
Información general sobre la recuperación de streams
Una emisión en curso puede sufrir 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 secuencia que ha fallado permanentemente configurándola para que ignore el error y siga leyendo los eventos en curso en lugar de volver a crear la secuencia y rellenar los datos históricos. Para recuperar un flujo que ha fallado de forma permanente, debes restablecer la replicación para empezar a leer desde una posición de replicación diferente. Cada tipo de fuente admitido tiene su propia definición de lo que es una posición de réplica:
- En las fuentes de Oracle, una posición de replicación es un archivo de registro de rehacer en la base de datos y el número de cambio del sistema (SCN) de este archivo.
- En el caso de las fuentes 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 (en la replicación basada en binlog) o un conjunto de identificadores de transacción global llamado conjunto de GTIDs (en la replicación basada en GTIDs, que solo se admite en la API de Datastream).
- En el caso de las fuentes de SQL Server, la posición de replicación es el número de secuencia de registro (LSN) de 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) de la ranura de replicación. Durante la recuperación, el flujo empieza a leer desde el primer LSN de 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.
Recuperar un flujo de una fuente MySQL u Oracle
Para recuperar un flujo de una fuente de MySQL (replicación basada en binlog) u Oracle, tienes las siguientes opciones:
Reintentar desde la posición actual (opción recomendada): selecciona esta opción para intentar reproducir el contenido en streaming desde la posición actual, donde se produjo el último error. Primero debes corregir el archivo de registro o recuperarlo de una copia de seguridad. Esta es la opción recomendada.
Saltar la posición actual y transmitir desde la siguiente posición disponible: si faltan uno o varios archivos de registro, selecciona esta opción para saltarlos y reanudar la transmisión desde la primera posición del siguiente archivo disponible. Los cambios de los archivos de registro que faltan se pierden, pero puedes recuperarlos realizando un relleno.
Saltar la posición actual y transmitir desde la posición más reciente: si faltan uno o varios archivos de registro, selecciona esta opción para saltarlos y reanudar la transmisión desde la posición más reciente del archivo de registro más actualizado. Los cambios de los archivos de registro que faltan se pierden, pero puedes recuperarlos realizando un relleno.
Reanudar desde el archivo de streaming y la posición que prefieras: selecciona esta opción para reanudar el streaming desde un archivo de registro y una posición de registro específicos. Es posible que se pierdan algunos cambios si la posición del registro especificada no se superpone con la posición del registro perdido o no la sigue inmediatamente. Puedes recuperar estos cambios realizando un relleno.
Para recuperar una secuencia que ha fallado de forma permanente en una fuente de MySQL u Oracle, sigue estos pasos:
Ve a la página Streams en Google Cloud.
Haga clic en Recuperar en la fila con el nombre del flujo que quiera recuperar.
Se abre el panel Elegir una estrategia de recuperación. Selecciona una opción. Si seleccionas Reanudar desde el archivo y la posición de streaming que prefieras, introduce lo siguiente:
- En el caso de una fuente 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, el flujo se reanudará desde la primera posición del archivo de registro indicado.
- En el caso de un origen de Oracle, el número de cambio del sistema (SCN) en el campo Número de cambio del sistema (SCN). Este campo es obligatorio.
Haz clic en Aplicar.
Cuando se recupera la emisión, aparece una marca de tiempo en la columna Recuperada de la página Emisiones.
Recuperar un flujo de una fuente de PostgreSQL
Para recuperar un flujo de una fuente de PostgreSQL, debes proporcionar el nombre del espacio de replicación. El servidor usa este espacio 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 usada para la secuencia fallida o puede ser diferente:
- Si la nueva ranura de replicación tiene un nombre diferente, proporcione el nuevo nombre de ranura de replicación a Datastream.
Si no proporciona un nombre de ranura de replicación, Datastream usará el nombre de ranura de replicación especificado en la configuración de la fuente.
Para obtener más información sobre los slots de replicación, consulta Configurar una base de datos PostgreSQL de origen.
Se perderán los eventos de cambio del origen que se hayan producido entre la pérdida de la posición del registro y el primer LSN de la nueva ranura de replicación. Puedes recuperar estos cambios realizando un relleno.
Para recuperar un flujo que ha fallado de forma permanente en una fuente de PostgreSQL, sigue estos pasos:
Ve a la página Streams en Google Cloud.
Haga clic en Recuperar en la fila con el nombre del flujo que quiera recuperar.
Se abre el panel Define a new replication slot (Definir un nuevo espacio de réplica).
En el campo Nombre de la ranura de replicación, indique el nombre de una nueva ranura de replicación desde la que el flujo intentará recuperarse. Si has vuelto a crear el espacio de replicación con el mismo nombre o quieres reutilizar el espacio que especificaste al configurar la fuente, puedes dejar este campo vacío.
Haz clic en Aplicar.
Cuando se recupera la emisión, aparece una marca de tiempo en la columna Recuperada de la página Emisiones.
También puedes recuperar los flujos que hayan fallado permanentemente en la página Detalles del flujo. Para hacerlo, haz clic en Recuperar flujo cuando veas la información detallada de tu flujo.
Recuperar una secuencia de una fuente de SQL Server
Para recuperar una secuencia de una fuente de SQL Server, tiene las siguientes opciones:
Reanudar desde la primera posición disponible: selecciona esta opción si el registro se ha truncado o faltan algunos registros en las tablas de cambios y quieres reanudar desde el primer evento disponible. Los eventos que faltan se pierden, pero puedes recuperarlos realizando una reposición.
Reanudar desde el número de secuencia de registro (LSN) que prefieras: selecciona esta opción para reanudar el flujo desde un LSN específico de los registros de transacciones o las tablas de cambios. Es posible que se pierdan algunos eventos si el LSN especificado no se superpone o no sigue inmediatamente al último LSN que Datastream ha podido recuperar. Puedes recuperar estos eventos realizando un relleno.
El LSN de los registros de transacciones y de las tablas de cambios contiene 20 caracteres hexadecimales, pero en los registros de transacciones está separado por un delimitador. Por ejemplo:
- LSN en los registros de transacciones:
0000123C:0000BA78:0004
- LSN en tablas de cambios:
0000123C0000BA780004
- LSN en los registros de transacciones:
Para recuperar un flujo que ha fallado permanentemente de una fuente de SQL Server, sigue estos pasos:
Ve a la página Streams en Google Cloud.
Haga clic en Recuperar en la fila con el nombre del flujo que quiera recuperar.
Se abre el panel Elegir una estrategia de recuperación. Selecciona una opción.
Haz clic en Aplicar.
Cuando se recupera la emisión, aparece una marca de tiempo en la columna Recuperada de la página Emisiones.
Recuperar una emisión de una fuente de MongoDB
La recuperación de flujos de fuentes de MongoDB está disponible mediante 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 quieres reanudar tu flujo desde la marca de tiempo actual del oplog de MongoDB. Los eventos que faltan se pierden, pero puedes recuperarlos realizando un relleno.
Posición de inicio específica: selecciona esta opción para reanudar la emisión desde una marca de tiempo concreta. La marca de tiempo que uses 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 futura.
Para obtener información sobre cómo crear una solicitud para recuperar un flujo 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.
Usar la recuperación de la secuencia para una fuente de MySQL en un escenario de conmutación por error manual
Puedes realizar una conmutación por error manual y usar la recuperación de la secuencia para evitar tener que volver a crear tus secuencias desde cero durante el mantenimiento o si falla la instancia principal. Por lo general, Datastream no admite conmutaciones por error a réplicas porque interrumpen la continuidad del archivo de registro binario, pero puedes seguir estos pasos para recuperar el flujo y asegurarte de que se capturen los datos de cambio:
- Detener todas las escrituras en la instancia principal.
- Asegúrate de que la métrica de actualización de los datos esté definida en 0. Esto significa que Datastream ha registrado todos los cambios y que no hay eventos nuevos que leer de la fuente. Para obtener más información, consulta Monitorizar un flujo.
- Conmuta por error a la nueva instancia de base de datos.
- Si es necesario, actualiza el perfil de conexión de la emisión a la nueva instancia de base de datos (por ejemplo, puede que tengas que cambiar el nombre de host o la dirección IP de la base de datos). Para obtener más información, consulta Modificar perfiles de conexión.
- Recupera el flujo desde una posición específica en la instancia de conmutación por error para asegurar la continuidad de CDC.
Siguientes pasos
- Para obtener más información sobre los estados de las emisiones, consulta Ciclo de vida de las emisiones.
- Para saber cómo ver información sobre tu emisión, consulta Ver una emisión.
- Para saber cómo monitorizar una emisión, consulta Monitorizar una emisión.
- Para saber cómo gestionar el backfill de un flujo, consulte Gestionar backfill para objetos de un flujo.
- Para saber cómo eliminar una emisión, consulta Eliminar una emisión.