Tenho algumas dúvidas sobre consistência no Mysql em dois cenários
1º cenário: como posso verificar se um backup restaurado corresponde aos dados originais do banco de dados em todas as tabelas?
Temos dois hosts com o mesmo banco de dados A e B (os mesmos dados, restaurados em bancos de dados diferentes), se houver alguma maneira de verificar se os dados são realmente os mesmos. Talvez o tipo de hash md5 na mesa ajude. Se existem soluções existentes? Claro que não é complicado fazer algo sozinho, tipo um validador.
2º cenário Digamos que temos um esquema lógico muito estrito para o banco de dados. Preciso verificar se nosso banco de dados funciona de acordo com o esquema. Digamos que cada pedido tenha ProductId e etc. Parece muito mais complicado, se você já enfrentou esses problemas, como lidar com eles.
Obrigado!
Execute o comando CHECKSUM TABLE em uma tabela.
Há uma ressalva para isso. De acordo com a documentação do MySQL em CHECKSUM TABLE :
OK,
CHECKSUM
TABLE é 99,99%, não 100%.Como você pode verificar agressivamente todos os itens de uma tabela em busca de correspondências e incompatibilidades? Na verdade, você pode executar uma ótima ferramenta do Percona Tools chamada pt-table-sync . Ele verificará diferenças nas tabelas entre Master e Slave, desde que a estrutura da tabela seja idêntica.
Por exemplo, para sincronizar a tabela
db.tb1
de um Escravo em relação ao seu Mestre, executept-table-sync
da seguinte forma:Quando você executa isso, a tabela
db.tb1
no Escravo é comparada com a do seu Mestre usando a Chave Primária (ou Chave Única se não houver Chave Primária) do Escravodb.tb1
. A saída será uma série de comandos SQL, geralmenteREPLACE INTO
eDELETE FROM
. O scriptSQLtoFixDifferences.sql
deve ser executado no Slave. Quando concluído, os dadosdb.tb1
devem ser idênticos aos de sua contraparte no Master.Para testá-lo, execute estes comandos:
Os resultados devem ser idênticos no Master e no Slave.
EMBARGO
Eu nunca usei pt-table-sync. Uso o mk-table-sync (ferramenta MAATKIT da Percona) há anos e sei que sempre funcionou para mim. Eu confio plenamente que o pt-table-sync da Percona é pelo menos a mesma qualidade, se não superior.