简体   繁体   English

无法为缓冲池分配内存

[英]Cannot allocate memory for the buffer pool

We are facing one very serious issue while starting Mysql. 启动Mysql时,我们面临一个非常严重的问题。 We are Using Digital Ocean. 我们正在使用数字海洋。

Droplet
RAM = 8GB 
CPU = 4Core
Mysql Version = 5.6

My.cnf My.cnf

    [mysql]
    # CLIENT #
    port                           = 3306
    socket                         = /var/lib/mysql/mysql.sock

    [mysqld]
    max_connections                = 300
    open_files_limit               = 1024000
    #interactive_timeout           = 30
    #wait_timeout              = 30
    # GENERAL #
    user                           = mysql
    default-storage-engine         = InnoDB
    socket                         = /var/lib/mysql/mysql.sock
    pid-file                       = /var/lib/mysql/mysql.pid

    # MyISAM #
    key-buffer-size                = 64M
    myisam-recover                 = FORCE,BACKUP

    # SAFETY #
    max-allowed-packet             = 16M
    max-connect-errors             = 1000000
    skip-name-resolve
    sysdate-is-now                 = 1
    innodb                         = FORCE

    # DATA STORAGE #
    datadir                        = /var/lib/mysql/

    # BINARY LOGGING #
    log-bin                        = /var/lib/mysql/mysql-bin
    expire_logs_days               = 10
    #expire-logs-days              = 14
    sync_binlog                    = 1

    # CACHES AND LIMITS #
    tmp-table-size                 = 500M
    max-heap-table-size            = 500M
    query-cache-type               = 0
    query-cache-size               = 64M
    #max-connections                = 300
    thread-cache-size              = 50
    #open_files_limit               = 65535
    table-definition-cache         = 1024M
    table_open_cache               = 600

    # INNODB #
    innodb-flush-method            = O_DIRECT
    innodb-log-files-in-group      = 2
    innodb-log-file-size           = 64M
    innodb-flush-log-at-trx-commit = 1
    innodb-file-per-table          = 1
    innodb-buffer-pool-size        = 12000M
    innodb-buffer-pool-instances   = 1
    join_buffer_size               = 6M

    # LOGGING #
    log-error                      = /var/lib/mysql/mysql-error.log
    log-queries-not-using-indexes  = 1
    slow-query-log                 = 1
    slow-query-log-file            = /var/lib/mysql/mysql-slow.log
    long-query-time            = 5
    log-queries-not-using-indexes

We are able to start Mysql without any error. 我们能够启动Mysql而不会出现任何错误。

But when we resize existing Droplet from 8Gb RAM and 4 CPU to 16GB and 8 CPU and did not make any changes in my.cnf but Unable to start MYSQL. 但是,当我们将现有Droplet的大小从8Gb RAM和4个CPU调整为16GB和8个CPU时,并没有在my.cnf中进行任何更改,但是无法启动MYSQL。

During starting MySql it consume all memory 16GB RAM and 5GB swap. 在启动MySql期间,它将消耗所有内存16GB RAM和5GB交换空间。

It show error. 显示错误。

160910 18:15:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql/
    2016-09-10 18:15:32 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2016-09-10 18:15:32 0 [Note] /usr/sbin/mysqld (mysqld 5.6.31-log) starting as process 14643 ...
    2016-09-10 18:15:32 14643 [Warning] Buffered warning: option 'table_definition_cache': unsigned value 1073741824 adjusted to 524288

    2016-09-10 18:15:32 14643 [Warning] Buffered warning: Could not increase number of max_open_files to more than 1024 (request: 1024000)

2016-09-10 18:15:32 14643 [Warning] Buffered warning: Changed limits: max_connections: 214 (requested 300)

2016-09-10 18:15:32 14643 [Warning] Buffered warning: Changed limits: table_open_cache: 400 (requested 600)

2016-09-10 18:15:32 14643 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
2016-09-10 18:15:32 14643 [Note] Plugin 'FEDERATED' is disabled.
2016-09-10 18:15:32 14643 [Warning] The option innodb (skip-innodb) is deprecated and will be removed in a future release
2016-09-10 18:15:32 14643 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-09-10 18:15:32 14643 [Note] InnoDB: The InnoDB memory heap is disabled
2016-09-10 18:15:32 14643 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-09-10 18:15:32 14643 [Note] InnoDB: Memory barrier is not used
2016-09-10 18:15:32 14643 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-09-10 18:15:32 14643 [Note] InnoDB: Using Linux native AIO
2016-09-10 18:15:32 14643 [Note] InnoDB: Using CPU crc32 instructions
2016-09-10 18:15:32 14643 [Note] InnoDB: Initializing buffer pool, size = 7.8G
InnoDB: mmap(8585216000 bytes) failed; errno 12
2016-09-10 18:15:32 14643 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2016-09-10 18:15:32 14643 [ERROR] Plugin 'InnoDB' init function returned error.
2016-09-10 18:15:32 14643 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-09-10 18:15:32 14643 [ERROR] Failed to initialize plugins.
2016-09-10 18:15:32 14643 [ERROR] Aborting
2016-09-10 18:15:32 14643 [Note] Binlog end
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'partition'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_METRICS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_CMPMEM'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_CMP'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_LOCKS'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'INNODB_TRX'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'BLACKHOLE'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'ARCHIVE'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'MRG_MYISAM'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'MyISAM'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'MEMORY'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'CSV'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'sha256_password'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'mysql_old_password'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'mysql_native_password'
2016-09-10 18:15:32 14643 [Note] Shutting down plugin 'binlog'
2016-09-10 18:15:32 14643 [Note] /usr/sbin/mysqld: Shutdown complete
160910 18:15:33 mysqld_safe mysqld from pid file /var/lib/mysql/mysql.pid ended

I am not able to understand why mysql is not able to start even there is no change in any setting. 我无法理解为什么即使任何设置都没有变化,mysql也无法启动。

I have 5GB of Swap memory. 我有5GB的交换内存。

According to me I think its issue with DigitalOcean reason same config is working on 8GB ram but it did not work on 16Gb RAM but they are claiming there is no issue on 16GB droplet. 据我说,我认为它与DigitalOcean有关的问题是因为相同的配置适用于8GB ram,但不适用于16Gb RAM,但他们声称16GB Droplet上没有问题。

Free -m say before starting MySQL Free -m在启动MySQL之前先说

 total        used        free      shared  buff/cache   available
Mem:          16047         122       15843           1          81       15792
Swap:          2047          38        2009
Total:        18095         160       17853

uname -a 优名

3.10.0-327.10.1.el7.x86_64 #1 SMP Tue Feb 16 17:03:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Also I would to mentioned that we have installed only mysql no other service. 我还要提到的是,我们仅安装了mysql,没有其他服务。

Please help to get it resolved. 请帮助解决它。

Thanks 谢谢

Problem is Apache server not mysql, actually you need to decrease innodb-buffer-pool-size to about 300M 问题是Apache服务器不是mysql,实际上您需要将innodb-buffer-pool-size减小到大约300M

you have 1.2Gb+ of RAM used by the mysql process right off the start, when Apache needs more resources the kernel will clear RAM from services this means stopping mysql instead of crashing the server. 您一开始就有mysql进程使用的1.2Gb + RAM,当Apache需要更多资源时,内核将从服务中清除RAM,这意味着停止mysql而不是使服务器崩溃。

Would also add a CRON to check the db status and restart it if you dont want to change to nginx or lighttp. 如果您不想更改为nginx或lighttp,还将添加一个CRON来检查数据库状态并重新启动它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM