Edited at

vmware上に構築したMantisで出ていたmysql起動エラー(スワップ領域不足)


ある日、vmware上に構築したMantisを再起動すると起動しなくなっていた。


mysqlを再起動してみたら

# service mysqld restart

Stopping mysqld: [ OK ]
MySQL Daemon failed to start.
Starting mysqld: [FAILED]


ログを確認する


/var/log/mysqld.log

# cat /var/log/mysqld.log

2015-12-04 11:55:03 3022 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2015-12-04 11:55:03 3022 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2015-12-04 11:55:03 3022 [ERROR] Plugin 'InnoDB' init function returned error.
2015-12-04 11:55:03 3022 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2015-12-04 11:55:03 3022 [ERROR] Unknown/unsupported storage engine: InnoDB
2015-12-04 11:55:03 3022 [ERROR] Aborting

InnoDB: Initializing buffer pool, sizeが足りんらしいという事で増やしてみる。


innodb_buffer_pool_size を増やしてみる


/etc/my.cnf

# vi /etc/my.cnf

innodb_buffer_pool_size = 256M

そして、再起動

# service mysqld restart

Stopping mysqld: [ OK ]
MySQL Daemon failed to start.
Starting mysqld: [FAILED]

ぬぁに!?


/var/log/mysqld.log

# cat /var/log/mysqld.log

2015-12-04 11:59:26 3858 [Note] InnoDB: Initializing buffer pool, size = 256.0M
InnoDB: mmap(274726912 bytes) failed; errno 12
2015-12-04 11:59:26 3858 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2015-12-04 11:59:26 3858 [ERROR] Plugin 'InnoDB' init function returned error.
2015-12-04 11:59:26 3858 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2015-12-04 11:59:26 3858 [ERROR] Unknown/unsupported storage engine: InnoDB
2015-12-04 11:59:26 3858 [ERROR] Aborting

何も解決してない・・・


メモリを確認!

# free

total used free shared buffers cached
Mem: 604484 597196 7288 0 3792 20392
-/+ buffers/cache: 573012 31472
Swap: 0 0 0

microインスタンス600Mちょいぐらいしかない上に

スワップ0バイト


ならばと、スワップ領域作る

# dd if=/dev/zero of=/swapfile bs=1M count=1024

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 31.6782 s, 33.9 MB/s

# mkswap /swapfile
mkswap: /swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=06fe53b6-a901-4b5b-80ba-ffecf7063fc2

# swapon /swapfile

# free
total used free shared buffers cached
Mem: 604484 597820 6664 0 2316 408160
-/+ buffers/cache: 187344 417140
Swap: 1048568 0 1048568


mysqlを再起動!!!

# service mysqld restart

Stopping mysqld:
[ OK ]
Starting mysqld: [ OK ]


/var/log/mysqld.log

# cat /var/log/mysqld.log

151204 12:02:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2015-12-04 12:02:47 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-12-04 12:02:47 4162 [Note] Plugin 'FEDERATED' is disabled.
2015-12-04 12:02:47 4162 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-12-04 12:02:47 4162 [Note] InnoDB: The InnoDB memory heap is disabled
2015-12-04 12:02:47 4162 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-12-04 12:02:47 4162 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-12-04 12:02:47 4162 [Note] InnoDB: Using Linux native AIO
2015-12-04 12:02:47 4162 [Note] InnoDB: Using CPU crc32 instructions
2015-12-04 12:02:48 4162 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-12-04 12:02:48 4162 [Note] InnoDB: Completed initialization of buffer pool
2015-12-04 12:02:49 4162 [Note] InnoDB: Highest supported file format is Barracuda.
2015-12-04 12:02:51 4162 [Note] InnoDB: 128 rollback segment(s) are active.
2015-12-04 12:02:51 4162 [Note] InnoDB: Waiting for purge to start
2015-12-04 12:02:51 4162 [Note] InnoDB: 5.6.19 started; log sequence number 17533870729
2015-12-04 12:02:52 4162 [Note] Server hostname (bind-address): '*'; port: 3306
2015-12-04 12:02:52 4162 [Note] IPv6 is available.
2015-12-04 12:02:52 4162 [Note] - '::' resolves to '::';
2015-12-04 12:02:52 4162 [Note] Server socket created on IP: '::'.
2015-12-04 12:02:52 4162 [Note] Event Scheduler: Loaded 0 events
2015-12-04 12:02:52 4162 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.6.19' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)

こいつ動くぞ!


追伸

fstabに入れておかないと、インスタンスを再起動したらスワップ領域は残っていますが、割り当て解除されます。