MySQL:增加缓冲池,ibdata1损坏?

我尝试通过my.cnf增加innodb_buffer_pool_size从默认的128M到256M,但重启尝试,MySQL关机失败:

 130125 11:49:55 InnoDB: Initializing buffer pool, size = 256.0M 130125 11:49:55 InnoDB: Completed initialization of buffer pool InnoDB: Unable to lock ./ibdata1, error: 11 

MySQL正在运行,但任何尝试通过terminal“mysql -u root -p”炸毁:

 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) 

我在适当的位置触摸/ chown'd mysql.sock和mysqld.pid(因为他们错过了,不好),但仍然没有运气进入MySQL。

从昨天晚上有一个转储,但很想从今天得到一个转储,看看ibdata1是否损坏(读/写操作看起来不错,所以如果它被损坏的MySQL会关机,不是?)

不用说,担心试图重启! 我们有一个通过连接池连接到MySQL的Java应用程序; 在那里发生locking?

无论如何,对如何处理这种情况的想法表示赞赏。 可以克隆MySQL运行的虚拟机并导入/ var / lib / mysql目录来查看发生了什么,但是如果只是重新创buildsock和pid文件并重新启动,那么浪费一个下午毫无意义。

别的东西正在持有ibdata1上的文件锁。 在ibdata1上使用lsof并找出谁在locking。

得到这个解决,mysql.sock和mysql.pid文件去了,所以我:

 touch /var/lib/mysql/mysql.sock chown mysql.mysql /var/lib/mysql/mysql.sock touch /var/run/mysqld/mysqld.pid chown mysql.mysql /var/run/mysqld/mysqld.pid echo [pid of running mysqld] > /var/run/mysqld/mysqld.pid 

mysqld服务正在运行,所以客户端网站一切正常,但由于日志中出现令人惊讶的错误,我感到ibdata文件已被破坏:“无法打开或创build数据文件… InnoDB只写了那些充满零的文件,但还没有以任何方式使用它们,但请注意,不要删除包含您宝贵数据的旧数据文件!“

我的意思是,考虑到大量的警告和错误,很难不认为天空正在下降 – 看起来像sh * t击中了粉丝,在这种情况下,它根本没有。

然后通过terminal会话,然后service mysql restart ,瞧上面,依然在业务缓冲池大小增加到256MB,因为我原本打算今天早上我my.cnf的变化。

至于问题的原因,我已经运行mysqltuner.pl检查性能瓶颈; 除了正在运行的mysqld进程以外,它还必须创build一个新的mysqld进程,这个进程在脚本运行后保持连接状态(grep正在运行的进程在重启失败时有4个mysqld进程2用于root mysqld_safe,2个用于mysql mysqld)。

杀掉mysqltuner.pl创build的进程没有解决问题,因为mysql.sock和mysql.pid文件与它一起,然后我无法进入MySQL客户端。 看着日志,我担心最糟糕的,并花了几个小时刷网。

很多关于什么都没有;-)