Mysql

不重启解决Too Many Connections

当发生Too many connections时,即使是DBA也无法登录到数据库,一般的做法是修改配置文件的max_connections参数,然后重启数据库,这样业务就有几秒钟的中断,对于线上不能中断的数据库就只能采用另外一种极客的方法了,用gdb直接修改mysqld内存中max_connections的值,具体做法如下: gdb -p $(cat /data/mysql/mysql-server.pid) -ex "set max_connections=3000" -batch 改进方法如下 通常有两个参数控制控制最大连接数: max_connections:该实例允许最大的连接数 max_user_connections:该实例允许每个用户的最大连接数 每个人要根据自己业务量,设置合适的值,不要盲目设置过大,但也不可设置过小,因为MySQL在连接数上升的情况下性能下降非常厉害,如果需要大量连接,这时可以引入thread_pool,所以我们需要保持一个原则:系统创建的用户(给应用使用用户)数 * max_user_connections < max_connections。

MySQL Unable to lock ibdata1 error 11 fix

A bad shutdown can cause such erros on MySQL. InnoDB: Unable to lock ./ibdata1, error: 11 InnoDB: Check that you do not already have another mysqld process InnoDB: using the same InnoDB data or log files. InnoDB: Error in opening ./ibdata1 For solution mv ibdata1 ibdata1.bak cp -a ibdata1.bak ibdata1 service mysqld restart