depois de reiniciar meu servidor, não consigo iniciar o mysql:
$ sudo service mysql start
$ Starting MySQL. ERROR! Manager of pid-file quit without updating file.
"/var/log/mysqld.log" mostra:
150225 21:39:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150225 21:39:49 [Note] Plugin 'FEDERATED' is disabled. /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist 150225 21:39:49 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 150225 21:39:49 InnoDB: Initializing buffer pool, size = 8.0M 150225 21:39:49 InnoDB: Completed initialization of buffer pool InnoDB: Log scan progressed past the checkpoint lsn 0 37356 150225 21:39:49 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 0 44233 150225 21:39:49 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 150225 21:39:49 InnoDB: Started; log sequence number 0 44233 150225 21:39:49 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 150225 21:39:49 mysqld_safe mysqld from pid file /var/lib/mysql/iZ23aa67ovhZ.pid ended
e meu disco rígido não está cheio.
aqui está o status de /var/lib/mysql:
drwxrwxrwx 2 mysql root 4096 Feb 26 16:43 . drwxr-xr-x. 21 root root 4096 Feb 25 19:38 .. -rw-rw---- 1 mysql mysql 10485760 Feb 25 19:38 ibdata1 -rw-rw---- 1 mysql mysql 5242880 Feb 26 16:43 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 Feb 25 19:38 ib_logfile1
e aqui está /etc/my.cnf:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
e não há mysql_install_db no servidor:
bash: mysql_install_db: command not found
e quando executo mysql_safe, ele mostra:
150226 16:58:50 mysqld_safe Logging to '/var/log/mysqld.log'. 150226 16:58:50 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150226 16:58:50 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
muito obrigado!
Responder1
150225 21:39:49 [ERRO] Erro fatal: Não é possível abrir e bloquear tabelas de privilégios: a tabela 'mysql.host' não existe
Para corrigir esse problema, basta informar ao mysql onde procurar, e não que a instalação padrão foi movida. Você pode fazer isso com:
mysql_install_db –user=mysql –ldata=/newlocation
depois de fazer isso, você pode reiniciar o mysql
/etc/init.d/mysqld restart
Se não ajudar:
- MySQL desinstalado usando
yum remove mysql*
- Excluído recursivamente
/usr/bin/mysql
e/var/lib/mysql
- Também excluiu o arquivo
/etc/my.cnf.rmp
- Usado
ps -e
para verificar os processos para garantir que o mysql ainda não esteja em execução. - Servidor reiniciado com
reboot
- Corrido
yum install mysql-server
. Isso também parece instalar o cliente mysql como uma dependência. - deu propriedade ao mysql e privilégios de grupo com
chown -R mysql /var/lib/mysql
echgrp -R mysql /var/lib/mysql
- Usado
service mysqld start
para iniciar o MySQL Daemon.
150225 21:39:49 InnoDB: O banco de dados não foi encerrado normalmente! InnoDB: Iniciando recuperação de falhas. InnoDB: Lendo informações de espaço de tabela dos arquivos .ibd... InnoDB: Restaurando possíveis páginas de dados escritas pela metade do doublewrite InnoDB: buffer...
Esta é a saída normal após uma falha. O InnoDB foi projetado para se recuperar automaticamente nesses casos, mas isso pode levar algum tempo. Geralmente minutos, mas possivelmente horas se a falha ocorreu quando você tinha milhares de páginas de dados modificados na memória e seus discos estão lentos.
O InnoDB pode se recuperar sozinho na maioria dos casos, sem perda de dados.
Para iniciar a recuperação, primeiro você deve usar a diretiva 'innodb_force_recovery' em /etc/my.cnf. Se você não estiver familiarizado com isso, leia a seguinte documentação,http://dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html. Se você conhece, por favor prossiga.
Às vezes, o InnoDB será apenas moderadamente danificado e poderá se reparar. Adicione “innodb_force_recovery = #” a uma nova linha na seção [mysqld] do /etc/my.cnf. Certifique-se de substituir o # pela magnitude da recuperação que você está precisando.Se você tentar usar qualquer coisa além da magnitude 4, você corre um risco extremo de mais corrupção, o que significa que seu tempo e esforço seriam em vão.Neste caso, como estamos tentando o auto-reparo, use apenas 1 ou 2. Depois de adicionar a nova linha, reinicie o servidor MySQL e verifique os logs (/var/lib/mysql/server.hostname.com.err) para verificar se a instância foi reparada com sucesso.