原因
服务器内存过小,而mysql占用过多,导致被linux内核杀死。 首先通过free命令来查看内存,应该剩余不多。

free -m

解决办法
解决办法分为2个步骤,缺一不可。

调整缓冲区占用大小
这个值默认是128M,可以改成64M,32M等。

innodb_buffer_pool_size=32M

调整linux Swap/虚拟内存大小
这里推荐是512Mb,可以根据实际情况来调整,count的值就是缓冲区的大小

在/mnt/创建一个512M的512Mb.swap文件

sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512
注:bs = block size 区块大小; count = 区块个数;

格式化文件,使之成为swap(交换设备)

sudo mkswap /mnt/512Mb.swap
更改权限为0600,不然会报错

chmod 0600 /mnt/512Mb.swap
将swap加入到现有系统中

sudo swapon /mnt/512Mb.swap
编辑 /etc/fstab 文件

vim /etc/fstab
在文件末尾增加一句

/mnt/512Mb.swap none swap sw 0 0
做永久性变更

sudo nano /etc/fstab
保存退出。这样重启后Swap分区也依然有效。

添加后我们可以通过free命令查看内存和缓冲区的大小

free -m
输出:

total used free shared buff/cache available
Mem: 3932 3404 317 22 210 268
Swap: 5120 1373 3747
我配置了2个缓冲区,总共5120M,大家可以根据自己的需要来调整大小。