Como corrigir casos de corrupção do InnoDB para os bancos de dados MySQL no Plesk para Windows?
Ispis- 0
Sintomas
O servidor Plesk SQL não pode ser iniciado com o seguinte erro:
| Função incorreta (código de erro 1) ao iniciar o serviço PleskSQLServer em (service::startStopService linha 997) |
| Erro 1067: O processo foi encerrado inesperadamente, Código de exceção: 0xc0000005 |
O MySQL no Windows está travando com o seguinte erro:
| Nome do aplicativo com falha: mysqld.exe, versão: 5.6.36.0, registro de data e hora: 0x58ccdb65 Nome do módulo com falha: mysqld.exe, versão: 5.6.36.0, registro de data e hora: 0x58ccdb65 Código de exceção: 0x80000003 Compensação de falha: 0x00000000002bb162 ID do processo com falha: 0x17 64 Falha hora de início do aplicativo: 0x01d4639065120bae Caminho do aplicativo com falha: C:\Arquivos de programas\MySQL\MySQL Server 5.6\bin\mysqld.exe Caminho do módulo com falha: C:\Arquivos de programas\MySQL\MySQL Server 5.6\bin\mysqld.exe ID do relatório: f33b3065-14ac-4735-b77c-3653d732bef3 |
O seguinte pode ser observado no %plesk_dir%\databases\mysql\data\*.err arquivo:
| InnoDB: Corrupção do diretório da página: ínfimo não apontado para InnoDB: Despejo de página em ascii e hex (16384 bytes): len 16384; hexadecimal 00.....000; asc ; InnoDB: Fim do despejo de página |
|
[ERRO] InnoDB: Página [id da página: espaço=0, número da página=237] número de sequência de log 1737623713 está no futuro! Número de sequência de log do sistema atual 1704662866. |
| [ERRO] InnoDB: Não é possível criar arquivos de log porque os arquivos de dados estão corrompidos ou o banco de dados não foi encerrado corretamente após a criação dos arquivos de dados. |
Caso seja o serviço PleskSQL, o Plesk está inacessível com:
Zend_Db_Adapter_Exception SQLSTATE[HY000] [2002] Nenhuma conexão pôde ser feita porque a máquina de destino a recusou ativamente. |
As seguintes mensagens podem ser encontradas em Visualizador de Eventos > Logs do Windows > Aplicativo :
|
| Nome do aplicativo com falha: mysqld.exe, versão: 5.5.52.0, registro de data e hora: 0x57c0337c Nome do módulo com falha: mysqld.exe, versão: 5.5.52.0, registro de data e hora: 0x57c0337c <..> Caminho do aplicativo com falha: C:\Arquivos de Programas ( x86)\Parallels\Plesk\MySQL\bin\mysqld.exe Caminho do módulo com falha: C:\Arquivos de programas (x86)\Parallels\Plesk\MySQL\bin\mysqld.exe ID do relatório: 3ec05b88-c439-11e8-8102-005056b17492 Nome completo do pacote com falha: ID do aplicativo relativo ao pacote com falha: |
A atualização do Plesk falha com o próximo erro:
| ERRO 2013 (HY000) na linha 275: Conexão perdida com o servidor MySQL durante a consulta |
As seguintes informações são encontradas no %plesk_dir%MySQL\Data\*.errarquivo:
| InnoDB: Inicialização concluída do buffer pool InnoDB: Erro: soma de verificação incompatível no arquivo de dados .\ibdata1 InnoDB: Não foi possível abrir ou criar arquivos de dados. InnoDB: Se você tentou adicionar novos arquivos de dados e falhou aqui, InnoDB: agora você deve editar innodb_data_file_path em my.cnf de volta InnoDB: para o que era e remover os novos arquivos ibdata InnoDB criou InnoDB: nesta tentativa falhada. O InnoDB apenas escreveu aqueles arquivos cheios de InnoDB: zeros, mas ainda não os usou de forma alguma. Mas tenha cuidado: não InnoDB: remova arquivos de dados antigos que contêm seus dados preciosos! [ERRO] A função init do plug-in 'InnoDB' retornou um erro. [ERRO] Falha no registro do plug-in 'InnoDB' como STORAGE ENGINE. [ERRO] Mecanismo de armazenamento desconhecido/sem suporte: INNODB [ERRO] Abortando |
Causa
InnoDB corrupção.
A maioria das corrupções do InnoDB está relacionada ao hardware. Gravações de páginas corrompidas podem ser causadas por falhas de energia ou memória ruim. O problema também pode ser causado pelo uso de armazenamento conectado à rede (NAS) e pela alocação de bancos de dados InnoDB nele.
Resolução
Plesk tem dois servidores MySQL em uma plataforma Windows:
PleskSQLServer é para bancos de dados relacionados ao Plesk na porta 8306: [Windows] Servidor MySQL local para bancos de dados relacionados ao Plesk (psa, apsc, horde)
A outra é para bancos de dados MySQL do cliente na porta 3306: [Windows] Servidor MySQL local para bancos de dados dos clientes
Note: To start/stop/restart PleskSQLServer/MySQL, it is recommended to use Plesk Services Monitor.
Recupere o InnoDB para o servidor de banco de dados afetado:
Recuperação InnoDB para o serviço PleskSQLServer
-
Conecte-se ao servidor via RDP .
-
Crie um backup de todos os dados e bancos de dados MySQL relacionados ao Plesk em
%plesk_dir%MySQL\Data\ -
Abra o
%plesk_dir%MySQL\my.iniarquivo. -
Adicione as seguintes linhas na
[PleskSQLServer]seção:-
innodb_force_recovery = 1
skip-grant-tables
-
-
Tente iniciar o PleskSQLServer.
-
Caso falhe novamente, defina
innodb_force_recoveryum valor maior e tente iniciá-lo novamente.
Warning: Only set innodb_force_recoveryto a value greater than 0 in an emergency situation, so that you can start InnoDB and dump your tables. Values of 4 or greater can permanently corrupt data files. Therefore, increase this value incrementally, as necessary. Please see more details in the official MySQL Documentation. -
Depois que o PleskSQLServer for iniciado no modo de recuperação forçada, crie dumps de todos os bancos de dados usando o seguinte comando executado pelo PowerShell:
PS cd $env:plesk_dir\mysql\bin\
mkdir .\data_restore
.\mysql.exe -uadmin -P8306 -sNe "SHOW DATABASES" | findstr /V performance_schema | findstr /V information_schema > c:\db_list.txt
foreach ($var in get-content c:\db_list.txt) {.\mysqldump.exe -uadmin -P8306 $var > .\data_restore\$var.sql} -
Pare o serviço PleskSQLServer.
-
Remova todos os dados do MySQL, exceto
mysqla pasta e os logs de erro do%plesk_dir%MySQL\Data\diretório. -
Remova a linha
innodb_force_recoverydomy.iniarquivo -
Inicie o PleskSQLServer
-
Restaure os bancos de dados dos dumps feitos durante a etapa 7:
PS foreach ($var in get-content c:\db_list.txt) {.\mysql.exe -uadmin -P8306 -e"create database $var"}
foreach ($var in get-content c:\db_list.txt) {get-content .\data_restore\$var.sql | .\mysql.exe -uadmin -P8306 $var} -
Remova a
skip-grant-tableslinha domy.iniarquivo e reinicie o PleskSQLServer .
Recuperação InnoDB para o serviço MySQL de clientes-
Conecte-se ao servidor via RDP .
-
Crie um backup de todos os dados e bancos de dados MySQL atuais em
%plesk_dir%Databases\MySQL\data -
Abra o
%plesk_dir%Databases\MySQL\my.iniarquivo. -
Adicione a seguinte linha na
[MySQLD]seção:innodb_force_recovery = 1
skip-grant-tables -
Tente iniciar o MySQL.
-
Caso falhe novamente, defina
innodb_force_recoveryum valor maior e tente iniciá-lo novamente.
Warning: Only set innodb_force_recoveryto a value greater than 0 in an emergency situation, so that you can start InnoDB and dump your tables. Values of 4 or greater can permanently corrupt data files. Therefore, increase this value incrementally, as necessary. Please see more details in the Official MySQL Documentation. -
Depois que o MySQL for iniciado no modo de recuperação forçada, crie despejos de todos os bancos de dados usando o seguinte comando executado pelo PowerShell:
PS cd $env:plesk_dir\mysql\bin\
mkdir .\data_restore
.\mysql.exe -uadmin -P3306 -e"SHOW DATABASES" > c:\db_list.txt
foreach ($var in get-content c:\db_list.txt) {.\mysqldump.exe -uadmin -P3306 $var > .\data_restore\$var.sql} -
Pare o serviço MySQL.
-
Remova todos os dados do MySQL, exceto
mysqla pasta e os logs de erro do%plesk_dir%Databases\MySQL\datadiretório. -
Remova a linha
innodb_force_recoverydomy.iniarquivo e inicie o MySQL. -
Restaure os bancos de dados dos dumps feitos durante a etapa 7:
PS foreach ($var in get-content c:\db_list.txt) {.\mysql.exe -uadmin -P3306 -e"create database $var" }
foreach ($var in get-content c:\db_list.txt) {get-content .\data_restore\$var.sql | .\mysql.exe -uadmin -P3306 $var} -
Remova a
skip-grant-tableslinha domy.iniarquivo e reinicie o MySQL.
Se o MySQL falhar ao iniciar mesmo com o
innodb_force_recoveryvalor mais alto possível definido como6, o único método restante é reinicializar o MySQL e restaurar os bancos de dados de um backup:
Reinicialize o PleskSQLServer-
Conecte-se ao servidor via RDP .
-
Certifique-se de que haja dumps diários do Plesk disponíveis no servidor no arquivo
%plesk_dir%Mysql\Backup. -
Pare o servidor Plesk SQL através do Plesk Services Monitor .
-
Crie um backup de todos os dados e bancos de dados MySQL atuais na
%plesk_dir%MySQL\Datapasta. -
Inicie o prompt de comando e inicialize o MySQL executando o seguinte comando:
-
Para MariaDB >= 10.5:
"%plesk_dir%MySQL\bin\mysql_install_db.exe" --datadir="%plesk_dir%MySQL\Data" -
Para versões mais antigas do MariaDB/MySQL:
"%plesk_dir%MySQL\bin\mysqld.exe" --initialize --datadir="%plesk_dir%MySQL\Data" --console
-
-
Aplique as permissões corretas ao diretório MySQL:
plesk sbin ApplySecurity.exe --apply-to-directory --directory="%plesk_dir%MySQL" -
Inicie o Plesk SQL Server através do Plesk Services Monitor .
-
Crie um
rootusuário e senha MySQL:plesk sbin mysqlmng_adm.exe --inject-root
plesk sbin mysqlmng_adm.exe --add-super-user --login=admin "--password= senha " --allowed-host=localhost
Note: Replace password with the password of choiceplesk sbin psadb.exe --update-admin-password --password=" senha " -
Faça login no servidor de banco de dados MySQL com a senha definida na etapa anterior:
"%plesk_dir%MySQL\bin\mysqld.exe" -uadmin -p" -
Crie o banco de dados psa e faça logoff do servidor de banco de dados:
CRIAR BANCO DE DADOS psa;
Consulta OK, 1 linha afetada (0,002 seg)
\q -
Restaure o
psabanco de dados Plesk de um despejo diário . -
Crie o
apscbanco de dados:plesk sbin mysqlmng_adm.exe --create-database --database=apsc
plesk sbin mysqlmng_adm.exe --add-user --database=apsc --new-user-login=apsc "--new-user-password= senha " --allowed-host=localhost
plesk php "%plesk_dir%admin\plib\scripts\register_apsc_database.php" --register -host 127.0.0.1 -port 8306 -database apsc -login apsc -password " password " -
Restaure o
apscbanco de dados de um despejo diário como na etapa 9.
Para o servidor MySQL dos clientes-
Conecte-se ao servidor via RDP .
-
Crie um backup de todos os dados e bancos de dados MySQL atuais em formato
%plesk_dir%Databases\MySQL\Data. -
Remova todos os dados da
%plesk_dir%Databases\MySQL\Datapasta. -
Abra o prompt de comando como administrador e execute o comando abaixo para inicializar o MariaDB.
Note: In the example below the command is provided for MariaDB 10.6 and Plesk directory is a default one (%plesk_dir%=C:\Program Files (x86)\Plesk). Please consider adjusting paths if required"C:\Program Files\MariaDB 10.6\bin\mysql_install_db.exe" --datadir="%plesk_dir%Databases\MySQL\Data" -
Inicie o MariaDB através do Plesk Services Monitor .
-
Abra o
%plesk_dir%Databases\MySQL\my.iniarquivo para edição, adicione askip-grant-tablesopção a ele na[MySQLD]seção:[MySQLD]
...
skip-grant-tablesSalve as alterações.
-
Reinicie o MariaDB através do Plesk Services Monitor para aplicar as alterações.
-
Faça login no MySQL dos clientes sem a senha por meio do prompt de comando:
"%plesk_dir%\MySQL\bin\mysql.exe" -P3306 -
Execute os comandos abaixo um a um:
9.1. Recarregue as políticas grant-tables executando o próximo comando:
FLUSH PRIVILÉGIOS; 9.2. Recrie o usuário especificando uma nova senha usando os próximos dois comandos:
CRIAR USUÁRIO 'admin'@'localhost' IDENTIFICADO POR ' senha ';
CONCEDA TODOS OS PRIVILÉGIOS EM . TO 'admin'@'localhost' identificado por ' password ' WITH GRANT OPTION;
Note: Make sure to replace password with a new password of choice.9.3. Diga ao servidor de banco de dados para recarregar as tabelas de concessão emitindo o comando FLUSH PRIVILEGES:
FLUSH PRIVILÉGIOS; -
Remova o
skip-grant-tablesdo arquivo de configuração do MySQL%plesk_dir%Databases\MySQL\my.inie reinicie o serviço novamente como na Etapa 7. -
Navegue até Ferramentas e configurações > Servidores de banco de dados e clique em localhost .
-
Na página aberta, clique no botão Configurações e especifique a nova senha, que foi definida na Etapa 9.2 nos campos Senha do administrador e Confirmar senha .
-
No prompt de comando, execute o comando abaixo para sincronizar bancos de dados e usuários de banco de dados com o Plesk:
plesk repara mysql -y -
Restaure os bancos de dados dos clientes a partir de um backup .
-
-
Je li Vam ovaj odgovor pomogao?
Vezani članci
A lista de servidores de banco de dados não pode ser acessada: 500 GraphQL Internal Server Error Sintomas Não é possível acessar Ferramentas e configurações > Servidores de banco de dados...
Não é possível criar um backup do banco de dados PostgreSQL: pg_dump: abortando devido à incompatibilidade da versão do servidor Sintomas O servidor Plesk possui dois servidores de banco de dados PostgreSQL instalados, com...
Não é possível clonar ou fazer backup do banco de dados MSSQL no Plesk: a propriedade TextHeader não está disponível para StoredProcedure <...>. O texto é criptografado Sintomas A cópia de um banco de dados MSSQL em Domínios > exemplo.com > Bancos de...
MySQL/Mariadb falha ao iniciar: atualização após uma falha não é suportada Sintomas O MySQL falha ao iniciar. As seguintes mensagens de erro aparecem nos logs...
Como gerenciar um banco de dados hospedado no Plesk usando um cliente de banco de dados local? Pergunta Como gerenciar um banco de dados hospedado no Plesk usando um cliente de banco de...
Powered by WHMCompleteSolution