MySQL启动报错Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/instance-z

版权声明:本文供经验交流,欢迎转载 https://blog.csdn.net/qq_31708763/article/details/86498571

修改innodb_buffer_pool_size 或者加大swap分区空间

查看错误日志err:

2019-01-16 10:22:48 39795 [Note] Plugin 'FEDERATED' is disabled.
2019-01-16 10:22:48 39795 [Note] InnoDB: Using atomics to ref count buffer pool pages
2019-01-16 10:22:48 39795 [Note] InnoDB: The InnoDB memory heap is disabled
2019-01-16 10:22:48 39795 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-01-16 10:22:48 39795 [Note] InnoDB: Memory barrier is not used
2019-01-16 10:22:48 39795 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-01-16 10:22:48 39795 [Note] InnoDB: Using Linux native AIO
2019-01-16 10:22:48 39795 [Note] InnoDB: Using CPU crc32 instructions
2019-01-16 10:22:48 39795 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2019-01-16 10:22:48 39795 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-01-16 10:22:48 39795 [ERROR] Plugin 'InnoDB' init function returned error.
2019-01-16 10:22:48 39795 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-01-16 10:22:48 39795 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-01-16 10:22:48 39795 [ERROR] Aborting

解决方式一:

innodb_buffer_pool_size = 8M (安装MySQL5.6到小于1G内存服务器上,启动MySQL会失败,报内存分配失败的错误,此时,需要修改my.cnf的内存大小从标准128M设置到8M或者64M)

解决方式二:

增加swap缓存,查看free -m或者free -h

##创建大小为1024M的文件
dd if=/dev/zero of=/swapfile bs=1M count=1024
##将该文件变为swap
mkswap /swapfile
##启用swap文件
swapon /swapfile

 执行结果打印:

[root@instance-zq6zwn1b ~]# dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 15.5654 s, 69.0 MB/s
[root@instance-zq6zwn1b ~]# mkswap /swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=4bccb9aa-6e83-442c-97eb-a9c8c1ddd1e6
[root@instance-zq6zwn1b ~]# swapon /swapfile
##挂载时会报一个权限错误,建议将swapfile文件的权限修改为600
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
[root@instance-zq6zwn1b ~]# free
              total        used        free      shared  buff/cache   available
Mem:         995548      245408       72700       19724      677440      564924
Swap:       1048572           0     1048572

此时没有写到/etc/fstab,重启需要手动挂载,写到了/etc.rc.local

写入/etc/fstab,以后不用手动挂载。

vi /etc/fstab
##末尾添加
/swapfile swap swap defaults 0 0

===============取消swap分区===================

查看swap:cat /proc/swaps

取消激活:swapoff /swapfile

删除配置的信息:进入 vi /etc/fstab 删除配置的信息

删除文件:rm -f /swapfile

查看swap使用情况:swapon -s

显示分区信息:sfdisk -l


swap分区一般为内存的2倍,但最大不超过2G

一般来说可以按照如下规则设置swap大小:

4G以内的物理内存,SWAP 设置为内存的2倍。

4-8G的物理内存,SWAP 等于内存大小。

8-64G 的物理内存,SWAP 设置为8G。

64-256G物理内存,SWAP 设置为16G。

系统在什么情况下才会使用SWAP?

实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。

cat /proc/sys/vm/swappiness

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

现在一般都尽可能设置小写。

永久修改:

在/etc/sysctl.conf 文件里添加如下参数:

vm.swappiness=10

然后reboot now

猜你喜欢

转载自blog.csdn.net/qq_31708763/article/details/86498571