Mysql、Mariadb、Percona 数据库挂掉的解决方法

前言

很多 WordPress 博主肯定经常会遇到 Error Establishing a Database Connection ,Discuz 用户也一定会经常遇到 Can not connect to MySQL server 之类的问题,一般来说这是因为数据库挂掉了,原因有很多种,大家主要还得看日志,这里我们主要分析因为内存太小导致的数据库挂掉的问题。

版本选择

内存 ≤ 1.5 G 内存的建议选择 Mysql、Mariadb、Percona 5.5 版本 内存 比较大的,可以选择 Mysql、Percona 5.6、5.7 和 MariaDB 10.0 10.1 10.2

修改配置

首先,修改 /etc/my.cnf 文件(如果没有的话,就需要翻文档找自己环境的数据库配置文件在哪里了), 将 innodb_buffer_pool_size 适当调小并重启数据库。 其他还有很多参数可以调小,不过如果不了解相关参数,随意修改可能导致数据库启动失败。

添加虚拟内存


  dd if=/dev/zero of=/swapfile count=1024 bs=1M
  mkswap /swapfile
  swapon /swapfile
  chmod 600 /swapfile
  [ -z "`grep swapfile /etc/fstab`" ] && echo '/swapfile    swap    swap    defaults    0 0' >> /etc/fstab
}

在 SSH 中输入上述代码,就会创建 1G 的 SWAP 内存了,类似于 Windows 的虚拟内存,当物理内存不够用的情况话,使用磁盘做内存用。

SWAP 一般用于突发情况以防万一用,如果平常的时候依旧过分依赖虚拟内存,实际上是影响网站速度的。 OpenVZ 架构的系统无法自行添加虚拟内存。

对象缓存

如果内存足够的用户,可以考虑是否是因为数据库的连接数过高了。像 WordPress 和 Discuz 则可以利用对象缓存利用 NoSQL 软件来缓存页面,减少数据库的连接数。

4 条评论

发表评论

  • 从来就没有“旧版本适合小内存”一说,新版本完全可以通过配置来对小内存的机器完成优化

      • 那就应该让他去学会写my.cnf啊,哪里有用旧版本的道理?
        更何况新版的mariadb安装之后的默认配置模板就有4个,对应特大大中小内存四种情况。

        • 那时候随手乱写的,嗯,下次考虑写my.cnf