Mysql5

CentOS 6 上的 MySQL 5.6 靜默無法啟動

  • January 7, 2014

我正在安裝全新的 CentOS 6.5 並試圖讓 MySQL 5.6 伺服器守護程序執行。該伺服器是 DigitalOcean 基礎設施上的一個新小滴。512 MB 大小。我使用了MySQL Yum 儲存庫中的 MySQL 版本。當我嘗試啟動它時,它神秘地崩潰了,沒有任何跡象表明出了什麼問題。以下是一些細節:

首先,我的 /etc/my.cnf:

[mysqld]
innodb_buffer_pool_size = 5M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
explicit_defaults_for_timestamp = TRUE

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

當我跑步時service mysqld start,我得到了這個:

[root@myserver ~]# service mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

這是/var/log/mysqld.log輸入該命令後的完整內容:

140104 22:53:41 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2014-01-04 22:53:42 8177 [Note] Plugin 'FEDERATED' is disabled.
2014-01-04 22:53:42 8177 [Note] InnoDB: The InnoDB memory heap is disabled
2014-01-04 22:53:42 8177 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-01-04 22:53:42 8177 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-01-04 22:53:42 8177 [Note] InnoDB: Using Linux native AIO
2014-01-04 22:53:42 8177 [Note] InnoDB: Not using CPU crc32 instructions
2014-01-04 22:53:42 8177 [Note] InnoDB: Initializing buffer pool, size = 5.0M
2014-01-04 22:53:42 8177 [Note] InnoDB: Completed initialization of buffer pool
2014-01-04 22:53:42 8177 [Note] InnoDB: Highest supported file format is Barracuda.
140104 22:53:43 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

沒有錯誤,沒有警告,什麼都沒有。當我跑步時service mysqld status,它會說mysqld dead but subsys locked

有任何想法嗎?

**更新:**我進入 /etc/init.d/mysqld 並添加了一行以將其使用的確切啟動命令回顯到控制台。然後我執行該命令(但沒有將任何輸出重定向到 /dev/null 或後台處理程序)。這是出現的情況:

[root@myserver ~]# /usr/bin/mysqld_safe --datadir="/var/lib/mysql" --socket="/var/lib/mysql/mysql.sock" --pid-file="/var/run/mysqld/mysqld.pid" --basedir=/usr --user=mysql
140105 08:04:35 mysqld_safe Logging to '/var/log/mysqld.log'.
140105 08:04:35 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/bin/mysqld_safe: line 166: 10966 Killed                  nohup /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock < /dev/null >> /var/log/mysqld.log 2>&1
140105 08:04:36 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

看起來某個外部服務或看門狗在嘗試啟動 MySQL 時正在殺死它。但這是怎麼回事?似乎沒有安裝 SELinux。不知道還有什麼…?

這絕對是記憶體問題。當我查看時,這一點變得很明顯/var/log/messages。我試圖執行 Nginx、PHP-FPM 和 MySQL 的最新版本,而這三個的預設配置對於我只有 512 MB 記憶體且沒有交換空間的小液滴來說太多了。

我調整了我/etc/my.cnf和我的 PHP-FPM 配置,一切都開始正常了。這是我的新my.cnf作供參考:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
explicit_defaults_for_timestamp = TRUE
key_buffer=16K
table_open_cache=4
query_cache_limit=256K
query_cache_size=4M
max_allowed_packet=1M
sort_buffer_size=64K
read_buffer_size=256K
thread_stack=64K
innodb_buffer_pool_size = 56M
innodb_flush_neighbors=0
innodb_flush_log_at_trx_commit=2
character-set-server=utf8
collation-server=utf8_general_ci

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我添加的各種參數是從各種部落格和教程網站拼湊而成的,這些網站和教程網站專注於低記憶體 mysqld 部署,例如這里這裡

引用自:https://serverfault.com/questions/565128