O que é um InnoDB Page checksum
exatamente? Um Page checksum
só detecta problemas com armazenamento subjacente ao gravar ou ler em uma página/bloco?
relate perguntas
-
Existem ferramentas de benchmarking do MySQL? [fechado]
-
Onde posso encontrar o log lento do mysql?
-
Como posso otimizar um mysqldump de um banco de dados grande?
-
Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?
-
Como um grupo pode rastrear alterações no esquema do banco de dados?
(Acho que é isso que você está perguntando.)
Os "blocos" do InnoDB são 16 KB. Mas a maioria dos subsistemas de disco funciona em unidades menores -- 4 KB ou 512 bytes. Para que os dados do InnoDB permaneçam intactos, o disco precisa gravar todos os 16 KB como uma unidade - todos gravados ou nenhum. O que pode acontecer é que as peças do 16KB são escritas uma após a outra, e a energia falha no meio do caminho. Isso causa uma "página rasgada" ("página" referente ao bloco de 16 KB).
Para recuperar de uma página rasgada, o InnoDB faz duas coisas. Ele verifica cada bloco para descobri-lo e usa uma "escrita dupla" para recuperação. O bloco (ou pelo menos alguns blocos críticos) são gravados duas vezes - em algum ponto relativamente constante e, em seguida, no local desejado no disco (nos dados ou no índice).
Ao se recuperar de uma falha, o "buffer de gravação duplo" é verificado para ver se leva a uma "página rasgada"; nesse caso, é reparado.
A escrita dupla, como o próprio nome indica, é cara. (Não tenho métricas sobre o custo; suspeito que o custo dependa muito dos controladores HDD vs SSD e RAID.) Desligá-lo é uma maneira de ganhar um pouco mais de velocidade, mas com risco. A FusionIO era (ela foi comprada) o único fabricante de drives que garantia gravações atômicas de 16 KB; Espero que outros tenham adicionado esse recurso.
O RAID com Cache de Gravação com Bateria deve tornar a gravação dupla praticamente sem custo.
Uma soma de verificação diferente... O Percona Toolkit usa uma "soma de verificação" para os dados. Como as linhas não são necessariamente dispostas de forma idêntica entre Master e Slave, a soma de verificação dos arquivos não é útil para ver se as tabelas correspondem. Suspeito que envolva a leitura das linhas em uma ordem repetível e a soma de verificação de cada linha ou grupo de linhas.
"rsync" faz algo semelhante, mas no nível do arquivo.