InnoDB não está mais disponível

2

Recentemente alterou os servidores e passou do CentOS 5.8 para o CentOS 6.4. Instalei o MySQL 5.1.69 no meu novo servidor e troquei manualmente o / var / lib / mysql. Não tenho certeza de qual versão do MySQL estava no meu antigo servidor, mas esperaria que fosse o mesmo.

Quando tento consultar uma tabela, obtenho o seguinte:

ERROR 1286 (42000): Unknown table engine 'InnoDB'

Tabelas que não usam o InnoDB funcionam bem. Parece que não tenho o InnoDB carregado. Eu instalei o MySQL usando yum install mysql mysql-server . Por que o InnoDB não está carregado e como devo carregá-lo?

EDITAR:

Talvez eu deva alterar manualmente o ib_logfile0 para que o tamanho do arquivo seja o mesmo?

mysql> SHOW ENGINES;
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                   | Transactions | XA   | Savepoints |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                     | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                        | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance    | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables | NO           | NO   | NO         |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
4 rows in set (0.00 sec)

mysql>

/var/log/mysqld.log:

130622 17:05:19 [Note] /usr/libexec/mysqld: Shutdown complete

130622 17:05:19 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
130622 17:06:09 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130622 17:06:09  InnoDB: Initializing buffer pool, size = 8.0M
130622 17:06:09  InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
130622 17:06:09 [ERROR] Plugin 'InnoDB' init function returned error.
130622 17:06:09 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130622 17:06:09 [Note] Event Scheduler: Loaded 0 events
130622 17:06:09 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.69'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution
    
por user1032531 22.06.2013 / 23:03

2 respostas

0

Parece que como este é uma boa resposta. O que basicamente indica que você deve remover / reconstruir o ib_logfile0 . Apenas mova o arquivo para algum lugar seguro - não no diretório MySQL que está procurando - e reinicie o servidor.

A ressalva é: Você realmente tem DBs que exigem InnoDB? Se assim for, você pode manualmente fazer um mydump de cada banco de dados para obter um backup, em seguida, descartar os bancos de dados MySQL, desligar o MySQL, mover / excluir o ib_logfile0 - também sugiro mover / excluir o ibdata1 & ib_logfile1 - e apenas reiniciando o MySQL.

Em seguida, verifique seus logs para ver se o InnoDB foi iniciado. Eu aposto que vai. Nesse ponto, recriar os bancos de dados que você se livrar de & reimporte os dados. Novo ibdata1 , ib_logfile0 & ib_logfile1 arquivos serão criados & tudo deve ser bom.

    
por 23.06.2013 / 03:52
0

Você copiou o arquivo ib_logfile0 do servidor antigo? Em caso afirmativo, tente movê-lo para fora desse diretório (ou renomeá-lo) e reinicie o mysqld.

    
por 23.06.2013 / 03:04