Solucionar problemas de corrupção de banco de dados no Banco de Dados do Azure para MySQL – Servidor Flexível
A corrupção de banco de dados pode causar tempo de inatividade para seu aplicativo. Também é essencial resolver os problemas de corrupção a tempo de evitar a perda de dados. Quando ocorrer uma corrupção do banco de dados, você verá esse erro nos logs de seu 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 Servidor Flexível do Banco de Dados do Azure para MySQL usa o mecanismo InnoDB. Ele apresenta operações automatizadas de verificação e reparo de corrupção. O InnoDB verifica as páginas corrompidas executando somas de verificação em todas as páginas que ele lê. Se encontrar uma discrepância de soma de verificação, ele automaticamente interromperá a instância do Servidor Flexível do Banco de Dados do Azure para MySQL.
Tente realizar as seguintes opções para reduzir rapidamente os problemas de corrupção de banco de dados.
Reiniciar o servidor MySQL
Normalmente, você percebe que um banco de dados ou tabela está corrompido quando seu aplicativo o acessa. O InnoDB apresenta um mecanismo de recuperação de falhas que pode resolver a maioria dos problemas quando o servidor é reiniciado. Portanto, reiniciar o servidor pode ajudá-lo a se recuperar de uma falha que causou um estado inadequado do banco de dados.
Usar o método de despejo e restauração
Recomenda-se resolver os problemas de corrupção com um método de despejo e restauração. Esse método envolve:
- Acessar a tabela corrompida.
- Usar o utilitário mysqldump para criar um backup lógico da tabela. O backup manterá a estrutura e os dados da tabela.
- Recarregar a tabela no banco de dados.
Fazer backup do banco de dados ou de tabelas
Importante
- Verifique se você configurou uma regra de firewall para acessar o servidor do computador cliente. Para mais informações, consulte Configurar uma regra de firewall no servidor único do Banco de Dados do Azure para MySQL e Configurar uma regra de firewall no Servidor Flexível do Banco de Dados do Azure para MySQL.
- Use a opção SSL
--ssl-cert
para mysqldump se você tiver habilitado o SSL.
Crie um arquivo de backup na linha de comando usando mysqldump. Use este comando:
$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]
Descrições de parâmetro:
[ssl-cert=/path/to/pem]
: o caminho para o certificado SSL. Baixe o certificado SSL no computador cliente e defina o caminho dele no comando. Não use esse parâmetro se o SSL estiver desabilitado.[host]
: sua instância de Servidor Flexível do Banco de Dados do Azure para MySQL.[uname]
: o nome de usuário administrador do servidor.[pass]
: a senha do usuário administrador.[dbname]
: o nome do banco de dados.[backupfile.sql]
: o nome do arquivo de backup do banco de dados.
Importante
- Para o servidor único do Banco de Dados do Azure para MySQL, use o formato
admin-user@servername
para substituirmyserveradmin
nos comandos a seguir. - Para o Servidor Flexível do Banco de Dados do Azure para MySQL, use o formato
admin-user
para substituirmyserveradmin
nos comandos a seguir.
Se uma determinada tabela estiver corrompida, selecione tabelas específicas no banco de dados para o backup:
$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql
Use a opção --database
e liste os nomes de banco, separados por espaços, para fazer backup de um ou mais bancos de dados:
$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql
Restaurar o banco de dados ou as tabelas
As etapas a seguir mostram como restaurar seu banco de dados ou suas tabelas. Depois de criar o arquivo de backup, você pode restaurar as tabelas ou os bancos de dados com o utilitário MySQL. Execute este comando:
mysql --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
Veja a seguir um exemplo que restaura testdb
de um arquivo de backup criado com mysqldump:
Importante
- Para o servidor único do Banco de Dados do Azure para MySQL, use o formato
admin-user@servername
para substituirmyserveradmin
no comando a seguir. - Para o Servidor Flexível do Banco de Dados do Azure para MySQL, use o formato
admin-user
para substituirmyserveradmin
no comando a seguir.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql