• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySql(MariaDB)在小内存VPS上崩溃,该怎么办?

MySql 海叔叔 2小时前 3次浏览 已收录 0个评论

最近我遇到了一个奇怪的问题:我的一个小内存(512MB)虚拟专用服务器上,MariaDB数据库经常崩溃。经过一些短暂的搜索,我发现了MariaDB在小型RAM机器上有什么潜在的问题,以及如何解决这个问题。

首先,如果您有这种问题,请检查MariaDB日志:

tail -n 100 /var/log/mariadb/mariadb.log
你可能会发现这样的情况:

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)

经过一番研究,我发现mysql需要很多资源用于性能模式(Peformance Schema),而禁用它将有助于小内存机器正常运行。参靠在低内存虚拟机上启动MySQL

sudo vim /etc/my.cnf
添加:

performance_schema = off
放到下面这个section:

[mysqld]
为了确保数据库服务器能在崩溃时重新启动,在使用Systemd的操作系统上,如CentOS 7,您需要执行以下操作:

打开以下文件进行编辑:

sudo vim /etc/systemd/system/mariadb.service
添加下面几行:

.include /lib/systemd/system/mariadb.service

[Service]
Restart=always
RestartSec=3
然后您需要重新启动从而重导Systemd配置:

sudo systemctl daemon-reload
并重新启动MariaDB服务:

systemctl restart mariadb
为确保Systemd重新启动服务,您可以执行以下操作:

ps -ef|grep maria
你会看到如下内容:

mysql 26647 26368 0 Jun12 ? 00:06:22 /usr/libexec/mysqld ….
尝试使用下面的命令杀死进程:

kill 26647
等待3秒钟,并检查MariaDB是否重新启动:

ps -ef|grep maria


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址