title: Amazon EC2, mysql aborting start because InnoDB: mmap (x bytes) failed; errno 12
body: <p>I have a <strong>micro</strong> instance server on EC2 based <a href="http://bogomip.net/blog/build-an-amazon-ec2-lamp-server/" rel="nofollow noreferrer">this</a></p>
  <p>mysql server fails frequently and for the third time mysql server is gone. The logs only shows</p>
  <pre><code>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
  </code></pre>
  <p>What is really <code>failed; errno 12</code>? And how could I give more space/memory or whatever needed to make this fixed.</p>
  <p>I fix this each time by rebooting the whole system and deleting all logs and restart the mysql server. But I know something is wrong with my configuration.</p>
  <p>Also my `my.cnf' is like below :</p>
  <pre><code>[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
  </code></pre>