我根据我在这里阅读的内容在EC2上设置了一个微实例服务器
mysql服务器频繁失败,第三次mysql服务器消失了.日志只显示
120423 09:13:38 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120423 09:14:27 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120423 9:14:27 [Note] Plugin 'FEDERATED' is disabled.
120423 9:14:27 InnoDB: The InnoDB memory heap is disabled
120423 9:14:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120423 9:14:27 InnoDB: Compressed tables use zlib 1.2.3
120423 9:14:27 InnoDB: Using Linux native AIO
120423 9:14:27 InnoDB: Initializing buffer pool, size = 512.0M
InnoDB: mmap(549453824 bytes) failed; errno 12
120423 9:14:27 InnoDB: Completed initialization of buffer pool
120423 9:14:27 InnoDB: Fatal error: cannot allocate memory for the buffer pool
120423 9:14:27 [ERROR] Plugin 'InnoDB' init function returned error.
120423 9:14:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120423 9:14:27 [ERROR] Unknown/unsupported storage engine: InnoDB
120423 9:14:27 [ERROR] Aborting
Run Code Online (Sandbox Code Playgroud)
真的是什么failed; errno 12?我怎么能提供更多的空间/内存或任何需要修复它的东西.
我每次都通过重新启动整个系统并删除所有日志并重新启动mysql服务器来修复此问题.但我知道我的配置有问题.
我的`my.cnf'如下所示:
[mysqld]
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# max_allowed_packet=500M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_buffer_pool_size = 512M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Run Code Online (Sandbox Code Playgroud)
小智 162
当我尝试在没有RDS的情况下在我的微实例上运行wordpress时,我遇到了同样的问题.
添加一个Swap页面为我解决了这个问题.
您可以按照此步骤设置交换页面:
http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html
如果它仍然不适合您,请考虑使用RDS服务.
===============================================
博客的链接有时会失败.我复制了以下内容以备记录.归功于博客作者Pedram Moubed:
Amazon EC2微实例交换空间 - Linux
我有一个Amazon EC2 Linux Micro实例.由于Micro实例只有613MB的内存,因此MySQL偶尔会崩溃.在对MySQL,Micro Instance和Memory Managment进行了长时间的搜索后,我发现Micro实例没有默认的SWAP空间.因此,如果您想避免崩溃,可能需要为微实例设置交换空间.实际上,性能明智更好地启用交换.
以下步骤显示如何为Micro实例创建交换空间.我假设您拥有运行Micro实例的AWS账户.
dd if=/dev/zero of=/swapfile bs=1M count=1024mkswap /swapfileswapon /swapfile/swapfile swap swap defaults 0 0到/etc/fstab如果要在每次重新启动后自动启用交换文件,则需要执行步骤4.
一些与SWAP空间相关的有用命令:
$ swapon -s
$ free -k
$ swapoff -a
$ swapon -a
Run Code Online (Sandbox Code Playgroud)
参考文献:
wfb*_*ale 23
我在Amazon EC2微实例上也遇到了这个问题.我尝试通过添加以下内容来减少inno_db的内存使用量/etc/my.cnf
innodb_buffer_pool_size = 64M
这不起作用,我试着把它降到16M,它仍然无法正常工作.然后我意识到实例基本上没有可用内存.所以我尝试重启apache
sudo system httpd restart sudo system mysqld restart
一切都很好.也许另一个解决方案是配置apache以不会以某种方式消耗这么多内存.
看起来您在帖子中显示的 my.cfg 文件中为 innodb_buffer_pool_size请求128M内存,但 MySQL 认为您请求的是512M内存:
正在初始化缓冲池,大小 = 512.0M
向下几行,错误消息告诉您 MySQL 将无法启动,因为它无法为 InnoDB 缓冲池预留足够的 (512M) 内存:
致命错误:无法为缓冲池分配内存
这就引出了三个问题:
你可以回答1。
至于 2.,有几个不同的地方可以找到 MySQL 选项文件。随后找到的文件覆盖先前找到的文件中指定的选项。看
http://dev.mysql.com/doc/refman/5.5/en/option-files.html
问题 3. 可能是由于启动后某个时间发生的内存不足情况。如果是这种情况,您应该会在日志中进一步看到该指示。
最后,但有些无关,您是否使用 EBS 支持的实例?对于数据库服务器,通常强烈建议这样做(实际上,对于任何实例,除非特殊情况)。有关更多信息,请参阅
| 归档时间: |
|
| 查看次数: |
51471 次 |
| 最近记录: |