Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O pesadelo final do banco de dados legado MySQL


Eu não sou uma pessoa do MySQL, então isso está saindo do campo esquerdo.

Mas acho que os arquivos de log podem ser a resposta.

Felizmente, você realmente só precisa saber 2 coisas do log.

Você precisa do registro/rowid e precisa da operação.

Na maioria dos bancos de dados, e presumo que no MySQL, há uma coluna implícita em cada linha, como um rowid ou recordid, ou qualquer outra coisa. É o número da linha interna usado pelo banco de dados. Esta é a sua chave primária "gratuita".

Em seguida, você precisa da operação. Principalmente se for uma operação de inserção, atualização ou exclusão na linha.

Você consolida todas essas informações, em ordem de tempo, e depois as analisa.

Para cada inserção/atualização, você seleciona a linha do banco de dados original e insere/atualiza essa linha no banco de dados de destino. Se for uma exclusão, você exclui a linha.

Você não se importa com valores de campo, eles simplesmente não são importantes. Faça a linha inteira.

Espero que você não precise "analisar" arquivos de log binários, o MySQL já deve ter rotinas para fazer isso, você só precisa encontrar e descobrir como usá-los (pode até haver algum utilitário prático de "log de despejo" que você possa usar ).

Isso permite que você mantenha o sistema bastante simples e deve depender apenas de sua atividade real durante o dia, em vez do tamanho total do banco de dados. Finalmente, você pode otimizá-lo posteriormente, tornando-o "mais inteligente". Por exemplo, talvez eles insiram uma linha, atualizem e excluam. Você saberia que pode simplesmente ignorar essa linha completamente em seu replay.

Obviamente, isso requer um pouco de conhecimento arcano para realmente ler os arquivos de log, mas o resto deve ser direto. Eu gostaria de pensar que os arquivos de log também têm carimbo de data/hora, para que você possa trabalhar nas linhas "a partir de hoje" ou em qualquer intervalo de datas que desejar.