GCP無料枠で作成したGCEでMySQL8が起動しない
前提
GCP無料枠でLAMP環境を作りたかったので、Always Freeが適用されるf1-microのGCEインスタンスを1つ作った。
Apache, PHPと順調だったがMySQLが起動しない問題が発生。
- Apache2.4→OK
- PHP7.3→OK
- MySQL8→NG
ステータスとログを見るとこんな。
$ sudo systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 水 2019-03-27 17:20:32 JST; 3min 44s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 5380 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 5359 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 5380 (code=exited, status=1/FAILURE)
Status: "SERVER_BOOTING"
Error: 2 (そのようなファイルやディレクトリはありません)
3月 27 17:20:27 foo systemd[1]: Starting MySQL Server...
3月 27 17:20:32 foo systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
3月 27 17:20:32 foo systemd[1]: Failed to start MySQL Server.
3月 27 17:20:32 foo systemd[1]: Unit mysqld.service entered failed state.
3月 27 17:20:32 foo systemd[1]: mysqld.service failed.
/var/log/mysqld.log
2019-03-27T08:20:30.330935Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 5380
2019-03-27T08:20:32.149509Z 0 [ERROR] [MY-012681] [InnoDB] mmap(137428992 bytes) failed; errno 12
2019-03-27T08:20:32.149575Z 1 [ERROR] [MY-012956] [InnoDB] Cannot allocate memory for the buffer pool
2019-03-27T08:20:32.149603Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
2019-03-27T08:20:32.149649Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2019-03-27T08:20:32.149842Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-03-27T08:20:32.162764Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-03-27T08:20:32.164035Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15) MySQL Community Server - GPL.
あーこれは、、
Cannot allocate memory for the buffer pool
メモリが足りてないのか。
無料枠なのでメモリが0.6GBなんだよね。。
そりゃMySQL起動しないわ。
スワップ領域を作成する
とりあえず今の状態。
初期状態では何も設定されていません。
$ free -m
total used free shared buff/cache available
Mem: 587 174 246 4 166 302
Swap: 0 0 0
スワップ領域はデバイスもしくはファイルに対して設定できる。
今回はファイル方式を選択。2GBもあれば十分だろう。
ちなオプションの意味。↓
- if=NUL(0x00)で埋める
- of=スワップファイルのパス
- bs=ブロックサイズ
- count=個数 (スワップサイズ=bs*count)
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 55.3209 秒、 38.8 MB/秒
$ sudo mkswap /swapfile
スワップ空間バージョン1を設定します、サイズ = 2097148 KiB
ラベルはありません, UUID=e5fe830c-15f5-42d6-9207-806b8e261e74
$ sudo swapon /swapfile
swapon: /swapfile: 安全でない権限 0644 を持ちます。 0600 がお勧めです。
$ sudo chmod 600 /swapfile
$ swapon -s
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
パーミッション600にしないと警告が出るもよう。
$ free -m
total used free shared buff/cache available
Mem: 587 170 46 4 370 303
Swap: 2047 0 2047
スワップが設定されたことを確認。
永続化する。
vim /etc/fstab
# 以下の行を追加
/swapfile swap swap defaults 0 0
もう一度MySQLを起動してみる
$ sudo systemctl start mysqld.service
$ sudo systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 水 2019-03-27 18:27:22 JST; 13s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 6497 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 6519 (mysqld)
Status: "SERVER_OPERATING"
CGroup: /system.slice/mysqld.service
└─6519 /usr/sbin/mysqld
3月 27 18:27:09 foo systemd[1]: Starting MySQL Server...
3月 27 18:27:22 foo systemd[1]: Started MySQL Server.
$ sudo systemctl start mysqld.service
$ sudo systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 水 2019-03-27 18:27:22 JST; 13s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 6497 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 6519 (mysqld)
Status: "SERVER_OPERATING"
CGroup: /system.slice/mysqld.service
└─6519 /usr/sbin/mysqld
3月 27 18:27:09 foo systemd[1]: Starting MySQL Server...
3月 27 18:27:22 foo systemd[1]: Started MySQL Server.
キタ━━━━(゚∀゚)━━━━!!
以上、無料枠のGCEでMySQLを動かすときは注意しましょうというお話でした。
Author And Source
この問題について(GCP無料枠で作成したGCEでMySQL8が起動しない), 我々は、より多くの情報をここで見つけました https://qiita.com/mimizq/items/82af7be4d7e343078618著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .