我正在处理一个新的CentOS 6.5安装,并试图让一个MySQL 5.6服务器守护进程运行。服务器是DigitalOcean基础设施上的一个新的水滴。512 MB大小我使用了来自MySQL的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似乎没有安装。我不知道还有什么.?
发布于 2014-01-05 19:21:37
这绝对是记忆上的问题。当我查看/var/log/messages时,这一点就变得很明显了。我试图运行Nginx、PHP和MySQL的最新版本,所有这3种配置的默认配置对我的小水滴来说太大了,它只有512 MB的内存,没有交换空间。
我调整了我的/etc/my.cnf和PHP配置,一切都开始正常工作。以下是我的新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发布于 2014-01-05 08:12:06
我首先要检查的是SELinux。首先,将其设置为允许模式。
setenforce 0然后尝试启动mysql。如果它开始,那么我们肯定知道SELinux是罪魁祸首。如果是这样的话,那么/var/log/audit.log将包含与MySQL相关的AVC拒绝消息,这些消息将帮助您进一步诊断问题。
不要忘记可重命名的SELinux强制模式。
setenforce 1https://serverfault.com/questions/565128
复制相似问题