最近我在一個linux服務器上升級了內核版本,但是升級完成之后,mysql啟動一直報錯,無法正常啟動。經過一番排查,我終于找到了解決方法。
首先,我查看了mysql的錯誤日志文件,發現報錯信息為:InnoDB: Unable to lock ./ibdata1 error: 35。通過這個錯誤信息,我進一步搜索了解決方法,發現是由于新內核版本對內存鎖定數量的限制導致。因為 mysql 默認情況下會鎖定所有內存,所以在啟動的時候會遇到這個問題。
解決方法是修改 mysql 的配置文件,將鎖定內存的大小設置為一個合適的數值,這個數值要小于內核限制的數量。具體修改方法如下:
vi /etc/mysql/my.cnf
# 找到下面這行,去掉注釋并修改為合適的數值
# 如果不知道合適的數值可以先設置為 1G
# 但是請注意你的服務器實際內存大小
# 默認值是 0 表示不限制
#innodb_buffer_pool_size = 256M
innodb_buffer_pool_size = 1G
修改完成后,保存退出并重新啟動 mysql 服務即可。
總之,升級內核后可能會導致一些其他服務出現問題,但是只要及時查找問題原因并解決,就可以避免對業務造成影響。