Partilhar via


Solucionar problemas de corrupção de banco de dados no Banco de Dados do Azure para MySQL - Servidor Flexível

A corrupção do banco de dados pode causar tempo de inatividade para seu aplicativo. Também é fundamental resolver problemas de corrupção a tempo de evitar a perda de dados. Quando ocorre corrupção de banco de dados, você vê esse erro nos logs do servidor: InnoDB: Database page corruption on disk or a failed.

Neste artigo, você aprenderá a resolver problemas de corrupção de banco de dados ou tabela. O Banco de Dados do Azure para Servidor Flexível MySQL usa o mecanismo InnoDB. Possui operações automatizadas de verificação e reparo de corrupção. O InnoDB verifica se há páginas corrompidas executando somas de verificação em todas as páginas lidas. Se ele encontrar uma discrepância de soma de verificação, ele interromperá automaticamente a instância do Banco de Dados do Azure para o Servidor Flexível MySQL.

Tente as opções a seguir para reduzir rapidamente os problemas de corrupção do banco de dados.

Reinicie o seu servidor MySQL

Normalmente, você percebe que um banco de dados ou tabela está corrompido quando seu aplicativo acessa a tabela ou o banco de dados. O InnoDB possui um mecanismo de recuperação de falhas que pode resolver a maioria dos problemas quando o servidor é reiniciado. Portanto, reiniciar o servidor pode ajudar o servidor a se recuperar de uma falha que fez com que o banco de dados ficasse em mau estado.

Use o método de despejo e restauração

Recomendamos que você resolva problemas de corrupção usando um método de despejo e restauração . Este método envolve:

  1. Acessando a tabela corrompida.
  2. Usando o utilitário mysqldump para criar um backup lógico da tabela. O backup manterá a estrutura da tabela e os dados dentro dela.
  3. Recarregando a tabela no banco de dados.

Faça backup de seu banco de dados ou tabelas

Importante

Crie um arquivo de backup a partir da linha de comando usando mysqldump. Utilize este comando:

$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]

Descrição dos parâmetros:

  • [ssl-cert=/path/to/pem]: O caminho para o certificado SSL. Baixe o certificado SSL em sua máquina cliente e defina o caminho nele no comando. Não use esse parâmetro se o SSL estiver desabilitado.
  • [host]: Seu Banco de Dados do Azure para instância do Servidor Flexível MySQL.
  • [uname]: Seu nome de usuário de administrador do servidor.
  • [pass]: A palavra-passe do utilizador administrador.
  • [dbname]: O nome do seu banco de dados.
  • [backupfile.sql]: O nome do arquivo do backup do banco de dados.

Importante

  • Para o Banco de Dados do Azure para servidor único MySQL, use o formato admin-user@servername para substituir myserveradmin os comandos a seguir.
  • Para o Banco de Dados do Azure para Servidor Flexível MySQL, use o formato admin-user para substituir myserveradmin os comandos a seguir.

Se uma tabela específica estiver corrompida, selecione tabelas específicas em seu banco de dados para fazer backup:

$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql

Para fazer backup de um ou mais bancos de dados, use a --database opção e liste os nomes dos bancos de dados, separados por espaços:

$ mysqldump --ssl-cert=</path/to/pem>  -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Restaurar seu banco de dados ou tabelas

As etapas a seguir mostram como restaurar seu banco de dados ou tabelas. Depois de criar o arquivo de backup, você pode restaurar as tabelas ou bancos de dados usando o utilitário mysql. Execute este comando:

mysql  --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

Aqui está um exemplo que restaura testdb a partir de um arquivo de backup criado com mysqldump:

Importante

  • Para o Banco de Dados do Azure para servidor único MySQL, use o formato admin-user@servername para substituir myserveradmin no comando a seguir.
  • Para o Banco de Dados do Azure para Servidor Flexível MySQL, use o formato admin-user para substituir myserveradmin no comando a seguir.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql