zoukankan      html  css  js  c++  java
  • 记录一次mysql宕机的解决办法

    首先先粘贴出来我的错误信息,如下:

    2019-07-16T00:53:18.285919Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 18555
    2019-07-16T00:53:18.506674Z 0 [ERROR] [MY-012681] [InnoDB] mmap(137428992 bytes) failed; errno 12
    2019-07-16T00:53:18.506740Z 1 [ERROR] [MY-012956] [InnoDB] Cannot allocate memory for the buffer pool
    2019-07-16T00:53:18.506757Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
    2019-07-16T00:53:18.509371Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
    2019-07-16T00:53:18.510501Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
    2019-07-16T00:53:18.513074Z 0 [ERROR] [MY-010119] [Server] Aborting
    2019-07-16T00:53:18.518947Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15)  MySQL Community Server - GPL.

    可以看到服务启动失败,关键看这么一句:Cannot allocate memory for the buffer pool。表明的意思是不能再给innodb的缓存池分配内存了。想到的我的服务器内存很小,才1G,十分有可能是这个原因,进而查资料得知innodb_buffer_pool_size这个默认值是128M,我通过free查看了我的内存剩余200多兆,但是没有设置swap分区大小,或许就是因为系统本身所需内存也不足无法为服务分配空间而导致的服务宕机吧。

    那么,接下来我做的事情就两步了:

    其一:修改innodb_buffer_pool_size的大小,放置在mysql的配置文件中,我的配置文件是在/etc/mysql/mysql.conf.d/mysqld.cnf中,你们的可能是在/etc/mysql/my.cnf下,根据实际情况来吧。

    [mysqld]
    pid-file    = /var/run/mysqld/mysqld.pid
    socket      = /var/run/mysqld/mysqld.sock
    datadir     = /var/lib/mysql
    log-error   = /var/log/mysql/error.log
    innodb_buffer_pool_size = 64M            # add here,default is 128M
    bind-address = 0.0.0.0

    其二:为系统swap分区分配一个值,swap存在的本身作用也就是在系统的物理内存(这里应该是运行内存)不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。用以下命令创建一个swap文件挂载在系统上,需要你在root权限下执行这些操作。

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

    然后添加/swapfile swap swap defaults 0 0/etc/fstab文件里面。【作用是保证重启系统前面的操作不会丢失,要让系统重启的时候能自动挂载,需要在fstab文件中配置挂载项。】

    LABEL=cloudimg-rootfs	/	 ext4	defaults	0 0
    /swapfile swap swap defaults 0 0        # add here

    最后重启一下mysql就可以了。

  • 相关阅读:
    XP下在控制面板和登录界面中隐藏用户方法
    DataGirdView 单元格限制内容输入参考(按键时的判断)
    VB.Net操作Excel
    VS扩展:标签左置 — productivity power tools
    使用VBS自动删除已经从FTP下载下来的文件
    VB.Net下ComboBox操作收集
    修改网卡IP信息的批处理文件
    VB.NET自定义控件 —— 添加控件自定义属性
    使用关键字对数组进行模糊查找;对一维字符串数组进行排序
    mysql多字段模糊查询
  • 原文地址:https://www.cnblogs.com/cpl9412290130/p/11193239.html
Copyright © 2011-2022 走看看