Logo da MMHospedagem
Carregando...
Como corrigir casos de corrupção do InnoDB para os bancos de dados MySQL no Plesk para Windows?
imprimir
  • 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: Seu banco de dados pode estar corrompido ou você pode ter copiado o tablespace InnoDB, mas não os arquivos de log do InnoDB. Consulte http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html para obter informações sobre como forçar a recuperação.

 


[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:

ERROR 500
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 :

  • InnoDB: Ignorando o redo log devido à falta de MLOG_CHECKPOINT entre o ponto de verificação 252683671 e o final 252687827. Para obter mais informações, consulte o Centro de Ajuda e Suporte em http://www.mysql.com.
    InnoDB: Inicialização do plug-in interrompida com erro Erro genérico Para obter mais informações, consulte o Centro de Ajuda e Suporte em http://www.mysql.com.
    A função init do plug-in 'InnoDB' retornou um erro. Para obter mais informações, consulte o Centro de Ajuda e Suporte em http://www.mysql.com.
    O registro do plug-in 'InnoDB' como um STORAGE ENGINE falhou. Para obter mais informações, consulte o Centro de Ajuda e Suporte em http://www.mysql.com.

 


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

  1. Conecte-se ao servidor via RDP .

  2. Crie um backup de todos os dados e bancos de dados MySQL relacionados ao Plesk em %plesk_dir%MySQL\Data\

  3. Abra o %plesk_dir%MySQL\my.ini arquivo.

  4. Adicione as seguintes linhas na [PleskSQLServer] seção:

    1. innodb_force_recovery = 1
      skip-grant-tables

  5. Tente iniciar o PleskSQLServer.

  6. Caso falhe novamente, defina innodb_force_recovery um valor maior e tente iniciá-lo novamente.

    Warning: Only set innodb_force_recovery to 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.

  7. 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}
  8. Pare o serviço PleskSQLServer.

  9. Remova todos os dados do MySQL, exceto mysql a pasta e os logs de erro do %plesk_dir%MySQL\Data\diretório.

  10. Remova a linha innodb_force_recovery do my.ini arquivo

  11. Inicie o PleskSQLServer

  12. 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}

  13. Remova a skip-grant-tables linha do my.ini arquivo e reinicie o PleskSQLServer .

                                                 Recuperação InnoDB para o serviço MySQL de clientes

    1. Conecte-se ao servidor via RDP .

    2. Crie um backup de todos os dados e bancos de dados MySQL atuais em%plesk_dir%Databases\MySQL\data

    3. Abra o %plesk_dir%Databases\MySQL\my.ini arquivo.

    4. Adicione a seguinte linha na [MySQLD]seção:

      innodb_force_recovery = 1
      skip-grant-tables

    5. Tente iniciar o MySQL.

    6. Caso falhe novamente, defina innodb_force_recovery um valor maior e tente iniciá-lo novamente.

      Warning: Only set innodb_force_recovery to 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.

    7. 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}
    8. Pare o serviço MySQL.

    9. Remova todos os dados do MySQL, exceto mysql a pasta e os logs de erro do %plesk_dir%Databases\MySQL\data diretório.

    10. Remova a linha innodb_force_recovery do my.ini arquivo e inicie o MySQL.

    11. 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}
    12. Remova a skip-grant-tables linha do my.ini arquivo e reinicie o MySQL.

    Se o MySQL falhar ao iniciar mesmo com o innodb_force_recovery valor mais alto possível definido como 6, o único método restante é reinicializar o MySQL e restaurar os bancos de dados de um backup:


                                                                Reinicialize o PleskSQLServer

    1. Conecte-se ao servidor via RDP .

    2. Certifique-se de que haja dumps diários do Plesk disponíveis no servidor no arquivo %plesk_dir%Mysql\Backup.

    3. Pare o servidor Plesk SQL através do Plesk Services Monitor .

    4. Crie um backup de todos os dados e bancos de dados MySQL atuais na %plesk_dir%MySQL\Data pasta.

    5. 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
    6. Aplique as permissões corretas ao diretório MySQL:

      plesk sbin ApplySecurity.exe --apply-to-directory --directory="%plesk_dir%MySQL"
    7. Inicie o Plesk SQL Server através do Plesk Services Monitor .

    8. Crie um root usuá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 choice

      plesk sbin psadb.exe --update-admin-password --password=" senha "
    9. 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"
    10. 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

    11. Restaure o psa banco de dados Plesk de um despejo diário .

    12. Crie o apsc banco 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 "
    13. Restaure o apsc banco de dados de um despejo diário como na etapa 9.

                                                               Para o servidor MySQL dos clientes

      1. Conecte-se ao servidor via RDP .

      2. Crie um backup de todos os dados e bancos de dados MySQL atuais em formato %plesk_dir%Databases\MySQL\Data.

      3. Remova todos os dados da %plesk_dir%Databases\MySQL\Data pasta.

      4. 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"
      5. Inicie o MariaDB através do Plesk Services Monitor .

      6. Abra o %plesk_dir%Databases\MySQL\my.ini arquivo para edição, adicione a skip-grant-tables opção a ele na [MySQLD]seção:

        [MySQLD]
        ...
        skip-grant-tables

        Salve as alterações.

      7. Reinicie o MariaDB através do Plesk Services Monitor para aplicar as alterações.

      8. Faça login no MySQL dos clientes sem a senha por meio do prompt de comando:

        "%plesk_dir%\MySQL\bin\mysql.exe" -P3306
      9. 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;
      10. Remova o skip-grant-tables do arquivo de configuração do MySQL %plesk_dir%Databases\MySQL\my.ini e reinicie o serviço novamente como na Etapa 7.

      11. Faça login no Plesk .

      12. Navegue até Ferramentas e configurações > Servidores de banco de dados e clique em localhost .

      13. 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 .

      14. 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
      15. Restaure os bancos de dados dos clientes a partir de um backup .

       

     

 

Esta resposta lhe foi útil?

Artigos Relacionados

MMHospedagem