MySQL数据库启动以后使用一段时间挂掉的问题

  • A+
所属分类:博客技巧
摘要

博客最近每天会出现数据库挂掉,一般情况发生在晚上的时候,其实我的网站访问量并不大,启动之后还是会出现数据库打不开的问题。

一、发生的场景

博客最近每天会出现数据库挂掉,一般情况发生在晚上的时候,其实我的网站访问量并不大,启动之后还是会出现数据库打不开的问题,那么如果你也和我一样不想升级服务器内存配置的话,尽可能让服务器发挥最大功能,可以修改网站的MYSQL配置文件增加SWAP 分区nginx 优化来缓解,具体操作详见最后“解决方法”。

MySQL数据库启动以后使用一段时间挂掉的问题

二、MySql日志

  1. 180830 10:52:19 mysqld_safe Number of processes running now: 0
  2. 180830 10:52:19 mysqld_safe mysqld restarted
  3. 2018-08-30 10:52:19 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
  4. 2018-08-30 10:52:19 9001 [Note] Plugin 'FEDERATED' is disabled.
  5. 2018-08-30 10:52:19 9001 [Note] InnoDB: Using atomics to ref count buffer pool pages
  6. 2018-08-30 10:52:19 9001 [Note] InnoDB: The InnoDB memory heap is disabled
  7. 2018-08-30 10:52:19 9001 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
  8. 2018-08-30 10:52:19 9001 [Note] InnoDB: Memory barrier is not used
  9. 2018-08-30 10:52:19 9001 [Note] InnoDB: Compressed tables use zlib 1.2.3
  10. 2018-08-30 10:52:19 9001 [Note] InnoDB: Using Linux native AIO
  11. 2018-08-30 10:52:19 9001 [Note] InnoDB: Using CPU crc32 instructions
  12. 2018-08-30 10:52:19 9001 [Note] InnoDB: Initializing buffer pool, size = 128.0M
  13. InnoDB: mmap(137363456 bytes) failed; errno 12
  14. 2018-08-30 10:52:20 9001 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
  15. 2018-08-30 10:52:20 9001 [ERROR] Plugin 'InnoDB' init function returned error.
  16. 2018-08-30 10:52:20 9001 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
  17. 2018-08-30 10:52:20 9001 [ERROR] Unknown/unsupported storage engine: InnoDB
  18. 2018-08-30 10:52:20 9001 [ERROR] Aborting
  19. 2018-08-30 10:52:20 9001 [Note] Binlog end
  20. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'partition'
  21. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
  22. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'BLACKHOLE'
  23. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
  24. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
  25. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
  26. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
  27. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
  28. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
  29. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
  30. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
  31. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
  32. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
  33. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
  34. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
  35. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
  36. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_FT_DELETED'
  37. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
  38. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_METRICS'
  39. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
  40. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
  41. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
  42. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
  43. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
  44. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
  45. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_CMPMEM'
  46. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_CMP_RESET'
  47. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_CMP'
  48. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
  49. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_LOCKS'
  50. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'INNODB_TRX'
  51. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'ARCHIVE'
  52. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'MyISAM'
  53. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'CSV'
  54. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'MRG_MYISAM'
  55. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'MEMORY'
  56. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'sha256_password'
  57. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'mysql_old_password'
  58. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'mysql_native_password'
  59. 2018-08-30 10:52:20 9001 [Note] Shutting down plugin 'binlog'
  60. 2018-08-30 10:52:20 9001 [Note] /alidata/server/mysql/bin/mysqld: Shutdown complete
  61. 180830 10:52:20 mysqld_safe mysqld from pid file /alidata/server/mysql/data/iZ23h8fqrbyZ.pid ended
  62. 180830 12:10:41 mysqld_safe Starting mysqld daemon with databases from /alidata/server/mysql/data
  63. 2018-08-30 12:10:42 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
  64. 2018-08-30 12:10:43 1611 [Note] Plugin 'FEDERATED' is disabled.
  65. 2018-08-30 12:10:43 1611 [Note] InnoDB: Using atomics to ref count buffer pool pages
  66. 2018-08-30 12:10:43 1611 [Note] InnoDB: The InnoDB memory heap is disabled
  67. 2018-08-30 12:10:43 1611 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
  68. 2018-08-30 12:10:43 1611 [Note] InnoDB: Memory barrier is not used
  69. 2018-08-30 12:10:43 1611 [Note] InnoDB: Compressed tables use zlib 1.2.3
  70. 2018-08-30 12:10:43 1611 [Note] InnoDB: Using Linux native AIO
  71. 2018-08-30 12:10:43 1611 [Note] InnoDB: Using CPU crc32 instructions
  72. 2018-08-30 12:10:43 1611 [Note] InnoDB: Initializing buffer pool, size = 128.0M
  73. 2018-08-30 12:10:43 1611 [Note] InnoDB: Completed initialization of buffer pool
  74. 2018-08-30 12:10:43 1611 [Note] InnoDB: Highest supported file format is Barracuda.
  75. 2018-08-30 12:10:43 1611 [Note] InnoDB: Log scan progressed past the checkpoint lsn 9326183509
  76. 2018-08-30 12:10:43 1611 [Note] InnoDB: Database was not shutdown normally!
  77. 2018-08-30 12:10:43 1611 [Note] InnoDB: Starting crash recovery.
  78. 2018-08-30 12:10:43 1611 [Note] InnoDB: Reading tablespace information from the .ibd files...
  79. 2018-08-30 12:10:43 1611 [Note] InnoDB: Restoring possible half-written data pages
  80. 2018-08-30 12:10:43 1611 [Note] InnoDB: from the doublewrite buffer...
  81. InnoDB: Doing recovery: scanned up to log sequence number 9326186242
  82. 2018-08-30 12:10:44 1611 [Note] InnoDB: Starting an apply batch of log records to the database...
  83. InnoDB: Progress in percent: 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
  84. InnoDB: Apply batch completed
  85. InnoDB: Last MySQL binlog file position 0 953056, file name mysql-bin.000073
  86. 2018-08-30 12:10:44 1611 [Note] InnoDB: 128 rollback segment(s) are active.
  87. 2018-08-30 12:10:44 1611 [Note] InnoDB: Waiting for purge to start
  88. 2018-08-30 12:10:44 1611 [Note] InnoDB: 5.6.21 started; log sequence number 9326186242
  89. 2018-08-30 12:10:44 1611 [Note] Recovering after a crash using mysql-bin
  90. 2018-08-30 12:10:44 1611 [Note] Starting crash recovery...
  91. 2018-08-30 12:10:44 1611 [Note] Crash recovery finished.
  92. 2018-08-30 12:10:45 1611 [Note] Server hostname (bind-address): '*'; port: 3306
  93. 2018-08-30 12:10:45 1611 [Note] IPv6 is not available.
  94. 2018-08-30 12:10:45 1611 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
  95. 2018-08-30 12:10:45 1611 [Note] Server socket created on IP: '0.0.0.0'.
  96. 2018-08-30 12:10:46 1611 [Note] Event Scheduler: Loaded 0 events
  97. 2018-08-30 12:10:46 1611 [Note] /alidata/server/mysql/bin/mysqld: ready for connections.
  98. Version: '5.6.21-log'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

三、问题描述

主要就是MySQL的缓存太大,但是我主机的内存又太小,运行时没有内存进行分配,导致被系统kill掉了。

四、解决方法

1、使用Xftp 5登录,找到MySql配置文件my.cnf进行修改,一般在下列中这两个目录中的一个,我把他都列出来了,你看你自己的配置文件属于哪一个:

/alidata/server/mysql/my.cnf         阿里云一键安装包路径

/etc/my.cnf                                   默认mysql安装包路径

2、降低数据库 InnoDB 引擎的缓冲区大小,以及限制 MySQL 的最大连接数(max_connections)

如果是阿里云一件安装包在 /alidata/server/mysql/my.cnf 的 [mysqld] 下添加下面两句:

  1. # 降低 InnoDB 缓冲区大小为 64M 或者 32M
  2. innodb_buffer_pool_size = 32M  原值128M
  3. #限制最大连接数为100,在服务器配置很低时可以继续降低
  4. max_connections = 100

修改完重启 MySQL:service mysqld restart

注释:max_connections 的默认值是 151,可以动态更改这个值。参见:max_connections

3、创建 SWAP 分区:

a.逐条运行下面的命令:

  1. sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
  2. sudo /sbin/mkswap /var/swap.1
  3. sudo /sbin/swapon /var/swap.1

b.将下面一行添加到 /etc/fstab,服务器重启时自动启动swap:

  1. /var/swap.1 swap swap defaults 0 0

4、nginx 优化:

打开 “/alidata/server/nginx/conf/nginx.conf” :

  1. vim /alidata/server/nginx/conf/nginx.conf

优化配置如下:

  1. worker_processes 1;
  2. worker_connections 256;      原值65535

修改完重启 nginx:service nginx restart

如有必要,可以重启服务器: reboot

好了,问题解决了。

  • 丁春华的微信号
  • 个人微信号扫一扫
  • weinxin
  • 南山宾馆公众号
  • 宾馆公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:10   其中:访客  10   博主  0

    • avatar 缙哥哥 1

      我曾经就遇到过这个问题,头疼了好一段时间。现在用上宝塔就方便很多了,看到内存满了可以限制php,从而让mysql正常运行!

        • avatar 丁 春华 3

          @缙哥哥 恩,我现在用得lnmp安装包,目前看上去没什么问题,宝塔最近还是挺火的。

        • avatar 女装品牌 1

          文章不错非常喜欢

          • avatar 学习笔记Blog 0

            一般都是因为数据库进程负载过高卡死或者是被系统干掉了进程造成的,SWAP的启用是很有必要的!当然最好的解决方案是启用CDN,太过垃圾的CDN慎用!

            • avatar 博客大全 0

              经营数据库也是一门学问!

              • avatar 头条 0

                文章不错非常喜欢