Pode recuperar uma stream com falha permanente sem ter de criar uma nova stream. Pode fazê-lo especificando a posição a partir da qual o fluxo de dados tenta retomar a leitura das alterações da origem.
Vista geral da recuperação de streams
Uma stream em execução pode encontrar alguns erros irrecuperáveis e alterar o respetivo estado para
FAILED_PERMANENTLY
. Estes erros impedem a continuação da execução da stream e podem causar a perda de dados.
Pode recuperar uma stream com falhas permanentes definindo-a para ignorar o erro e continuar a ler os eventos em curso, em vez de recriar a stream e preencher os dados do histórico. Para recuperar uma stream com falhas permanentes, repõe a replicação para começar a ler a partir de uma posição de replicação diferente. Cada tipo de origem suportado tem a sua própria definição do que é uma posição de replicação:
- Para origens Oracle, uma posição de replicação é um ficheiro de registo de repetição na base de dados e o número de alteração do sistema (SCN) neste ficheiro.
- Para origens MySQL, uma posição de replicação é o ficheiro de registo binário (binlog) da base de dados e a posição neste ficheiro (para replicação baseada em binlog) ou um conjunto de identificadores de transações globais denominado conjunto GTID (para replicação baseada em GTID, suportada apenas na API Datastream).
- Para origens do SQL Server, uma posição de replicação é o número de sequência do registo (LSN) nos registos de transações ou nas tabelas de alterações.
- Para origens do PostgreSQL (incluindo o AlloyDB para PostgreSQL), uma posição de replicação é o número de sequência de registo (LSN) na ranhura de replicação. Durante a recuperação, a stream começa a ler a partir do primeiro LSN no espaço de replicação.
- Para origens do MongoDB, uma posição de replicação é uma data/hora no registo de operações (oplog) do MongoDB.
Recupere uma stream para uma origem MySQL ou Oracle
Para recuperar um stream de uma origem MySQL (replicação baseada em binlog) ou Oracle, tem as seguintes opções:
Tentar novamente a partir da posição atual (recomendado): selecione esta opção para tentar fazer streaming a partir da posição atual, onde o streaming falhou pela última vez. Primeiro, tem de corrigir o ficheiro de registo ou recuperá-lo a partir da cópia de segurança. Esta é a opção recomendada.
Ignorar a posição atual e fazer stream a partir da próxima posição disponível: se faltarem um ou mais ficheiros de registo, selecione esta opção para ignorar estes ficheiros e retomar a stream a partir da primeira posição no ficheiro disponível subsequente. As alterações dos ficheiros de registo em falta são perdidas, mas pode recuperá-las fazendo um preenchimento.
Ignorar a posição atual e fazer stream a partir da posição mais recente: se faltarem um ou mais ficheiros de registo, selecione esta opção para ignorar estes ficheiros e retomar a stream a partir da posição mais recente no ficheiro de registo mais atualizado. As alterações dos ficheiros de registo em falta são perdidas, mas pode recuperá-las fazendo um preenchimento.
Retomar a partir do ficheiro de streaming e da posição preferidos: selecione esta opção para retomar o streaming a partir de um ficheiro de registo e de uma posição de registo específicos. Algumas alterações podem ser perdidas se a posição do registo especificada não se sobrepor ou não seguir imediatamente a posição do registo perdida. Pode recuperar estas alterações fazendo um preenchimento.
Para recuperar uma stream com falha permanente para uma origem MySQL ou Oracle, execute os seguintes passos:
Aceda à página Streams em Google Cloud.
Clique em Recuperar na linha com o nome da stream que quer recuperar.
O painel Escolha uma estratégia de recuperação é aberto. Selecione uma opção. Se selecionar Retomar a partir do ficheiro de streaming e da posição preferidos, introduza o seguinte:
- Para uma origem MySQL: o nome do ficheiro de registo no campo Nome do ficheiro e a posição do registo no campo Posição. Se não especificar a posição, a transmissão retoma-se a partir da primeira posição no ficheiro de registo indicado.
- Para uma origem Oracle: o número de alteração do sistema (SCN) no campo Número de alteração do sistema (SCN). Este campo é obrigatório.
Clique em Aplicar.
Quando a stream é recuperada, é apresentada uma data/hora na coluna Recuperado na página Streams.
Recupere uma stream para uma origem PostgreSQL
Para recuperar uma stream de uma origem PostgreSQL, tem de indicar o nome do espaço de replicação. O servidor usa este espaço de replicação para enviar eventos para o Datastream. O nome do slot de replicação pode ser igual ao do slot usado para a stream com falhas ou diferente:
- Se o novo espaço de replicação tiver um nome diferente, indique o novo nome do espaço de replicação ao Datastream.
Se não fornecer um nome de espaço de replicação, o Datastream usa o nome de espaço de replicação especificado na configuração de origem.
Para mais informações sobre as posições de replicação, consulte o artigo Configure uma base de dados PostgreSQL de origem.
Todos os eventos de alteração à origem que ocorreram entre a perda da posição do registo e o primeiro LSN no novo espaço de replicação são perdidos. Pode recuperar estas alterações fazendo um preenchimento.
Para recuperar uma stream com falha permanente para uma origem do PostgreSQL, execute os seguintes passos:
Aceda à página Streams em Google Cloud.
Clique em Recuperar na linha com o nome da stream que quer recuperar.
É aberto o painel Definir um novo espaço de replicação.
No campo Nome do espaço de replicação, indique o nome de um novo espaço de replicação a partir do qual a stream vai tentar recuperar. Se recriou o espaço de replicação com o mesmo nome ou quiser reutilizar o espaço especificado quando configurou a origem, pode deixar este campo vazio.
Clique em Aplicar.
Quando a stream é recuperada, é apresentada uma data/hora na coluna Recuperado na página Streams.
Também pode recuperar streams com falhas permanentes na página Detalhes da stream. Para tal, clique em Recuperar stream quando vir informações detalhadas acerca da sua stream.
Recupere uma stream para uma origem do SQL Server
Para recuperar uma stream de uma origem do SQL Server, tem as seguintes opções:
Retomar a partir da primeira posição disponível: selecione esta opção se o registo tiver sido truncado ou se faltarem alguns registos nas tabelas de alterações e quiser retomar a partir do primeiro evento disponível. Os eventos em falta são perdidos, mas pode recuperá-los fazendo um preenchimento.
Retomar a partir do número de sequência de registo (LSN) preferido: selecione esta opção para retomar a stream a partir de um LSN específico nos registos de transações ou nas tabelas de alterações. Alguns eventos podem ser perdidos se o LSN especificado não se sobrepor ou não seguir imediatamente o último LSN que o Datastream conseguiu obter. Pode recuperar estes eventos fazendo um preenchimento.
O LSN nos registos de transações e nas tabelas de alterações contém 20 carateres hexadecimais, mas, para os registos de transações, está separado por um delimitador. Por exemplo:
- LSN nos registos de transações:
0000123C:0000BA78:0004
- LSN nas tabelas de alterações:
0000123C0000BA780004
- LSN nos registos de transações:
Para recuperar uma stream com falha permanente para uma origem do SQL Server, siga os passos seguintes:
Aceda à página Streams em Google Cloud.
Clique em Recuperar na linha com o nome da stream que quer recuperar.
O painel Escolha uma estratégia de recuperação é aberto. Selecione uma opção.
Clique em Aplicar.
Quando a stream é recuperada, é apresentada uma data/hora na coluna Recuperado na página Streams.
Recupere uma stream para uma origem do MongoDB
A recuperação de streams para origens do MongoDB está disponível através da API Datastream. Pode recuperar uma stream do MongoDB através das seguintes opções:
Posição de início mais recente: selecione esta opção se quiser retomar a stream a partir da data/hora atual no oplog do MongoDB. Os eventos em falta são perdidos, mas pode recuperá-los fazendo um preenchimento.
Posição de início específica: selecione esta opção para retomar a stream a partir de uma data/hora selecionada. A data/hora usada no seu pedido tem de ser válida, o que significa que não pode ser anterior à posição mais antiga disponível no oplog do MongoDB nem pode ser no futuro.
Para obter informações sobre como criar um pedido de recuperação de uma stream do MongoDB, consulte a documentação de referência da API Datastream.
Para informações sobre o registo de operações do MongoDB, consulte a documentação do MongoDB.
Use a recuperação de streams para uma origem MySQL num cenário de comutação por falha manual
Pode fazer uma comutação por falha manual e usar a recuperação de streams para evitar recriar as streams de raiz durante a manutenção ou a falha da instância principal. Geralmente, o Datastream não suporta failovers para réplicas porque interrompem a continuidade do binlog, mas pode seguir estes passos para recuperar o stream e garantir que os dados de alteração são capturados:
- Pare todas as gravações na instância principal.
- Certifique-se de que a métrica de atualidade dos dados está definida como 0. Isto significa que o fluxo de dados capturou todas as alterações e não existem novos eventos para ler a partir da origem. Para mais informações, consulte o artigo Monitorize uma stream.
- Efetue a comutação por falha para a nova instância de base de dados.
- Se necessário, atualize o perfil de ligação da stream para a nova instância da base de dados (por exemplo, pode ter de alterar o nome de anfitrião da base de dados ou o endereço IP). Para mais informações, consulte o artigo Modifique perfis de ligação.
- Recuperar a stream de uma posição específica na instância de comutação por falha para garantir a continuidade da CDC.
O que se segue?
- Para saber mais sobre os estados das streams, consulte o artigo Ciclo de vida da stream.
- Para saber como ver informações sobre a sua stream, consulte o artigo Veja uma stream.
- Para saber como monitorizar uma stream, consulte o artigo Monitorize uma stream.
- Para saber como gerir o preenchimento para um fluxo, consulte o artigo Faça a gestão do preenchimento para os objetos de um fluxo.
- Para saber como eliminar uma stream existente, consulte o artigo Elimine uma stream.