Atualmente estamos usando MySQL. Idealmente, gostaríamos de replicação baseada em instrução ou linha para outro cluster completamente diferente que seja somente leitura, exceto para o fluxo de replicação que chega. As únicas instruções que não queremos replicadas são aquelas no formato DELETE.......WHERE arquivo = verdadeiro. Dessa forma, podemos manter nosso banco de dados transacional com 3 meses de dados para maior velocidade e nosso banco de dados de réplica pode ter 2,5 anos de dados.
Ainda não encontrei uma maneira de fazer isso, então apreciaria qualquer opção de fazer isso neste momento. Naturalmente, existem exclusões transacionais e queremos que elas sejam replicadas.
Existe uma maneira de configurar isso?
Estive pesquisando e conversando no Google para obter informações.
Ah, minha única outra opção que pensei é replicar primeiro e depois na réplica, adicionar gatilhos a todas as tabelas para depois copiar os dados para outra tabela, mas no gatilho filtrar todas as linhas para quando uma exclusão acontecer, então se a exclusão acontecer, acionamos e verificamos se archive=true|false. Se for falso, replicamos e se for verdadeiro, ignoramos e os dados são agora arquivados. Infelizmente, isso resulta em um tamanho de conjunto de dados bastante grande em nossa réplica, mas é uma opção que tenho em mente. Eu esperava filtrar antes que atingisse a réplica.
O problema aberto no gatilho é se eu realmente recebo os dados da linha para o valor.
Antes dessa consulta
SET VARIABLE @@log_bin=FALSE;
, `TRUE depois.O recurso de reescrita de consulta pode inserir essas duas instruções sempre que encontrar o teste relevante em
archive
.