解决 mariadb/mysql 在低配 VPS 上崩溃问题

最近博客又抽风了,打开主页后提示 Error Establishing a Database Connection 。仔细想想,应该就是数据库服务器 mariadb 挂了;以前也遇到过类似的问题。经过分析日志,并结合网上的资料最终解决了问题。

解决方法:

打开 /etc/my.cnf 查找 innodb_buffer_pool_size 将值设置为64M,一般是因为这个地方的值设置的过高内存紧张导致数据库因为内存不足而挂掉。

基本上上面设置之后,应该不会再遇到数据库挂掉的问题了,但是如果设置之后,依然会遇到此类问题,可以考虑设置 swap 交换分区,当系统因为突发事件导致内存不足时,软件会将一部分数据通过 swap 进行中转,不至于使软件崩溃。

设置swap 1G

dd if=/dev/zero of=/swapfile bs=1024 count=1048576 mkswap /swapfile swapon /swapfile

最后,在 /etc/fstab 中添加下面一行:

/swapfile swap swap defaults 0 0

重启服务器,使用 free -m 即可查看到内存情况了。

转自:https://biji.io/2016/4639.html/comment-page-2

在低内存虚拟机上启动MySQL

在内存很小的主机上运行mysql,经常出现mysql应用崩溃的情况。查看日志提示:

160608 12:08:05 InnoDB: Completed initialization of buffer pool
160608 12:08:05 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160608 12:08:05 [ERROR] Plugin ‘InnoDB’ init function returned error.
160608 12:08:05 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
160608 12:08:05 [ERROR] mysqld: Out of memory (Needed 128917504 bytes)

查找资料需要禁用性能优化模式

编辑my.cnf文件

vim /etc/my.cnf

[mysqld]  中添加一行:

performance_schema = off

保存、重启应用。