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:
- Acessando a tabela corrompida.
- 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.
- Recarregando a tabela no banco de dados.
Faça backup de seu banco de dados ou tabelas
Importante
- Certifique-se de que configurou uma regra de firewall para aceder ao servidor a partir do computador cliente. Para obter mais informações, consulte Configurar uma regra de firewall no Banco de Dados do Azure para servidor único MySQL e Configurar uma regra de firewall no Banco de Dados do Azure para Servidor Flexível MySQL.
- Use a opção
--ssl-cert
SSL para mysqldump se você tiver SSL habilitado.
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 substituirmyserveradmin
os comandos a seguir. - Para o Banco de Dados do Azure para Servidor Flexível MySQL, use o formato
admin-user
para substituirmyserveradmin
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 substituirmyserveradmin
no comando a seguir. - Para o Banco de Dados do Azure para Servidor Flexível 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