【MySQL/MariaDB】サービスが起動しなくなった(Job for mariadb.service failed because the control process exited with error code.)
久しぶりにMariaDBを起動したらrootのパスワードがわからなくなったので、以下のことをやった(つもりだった)。
----------------------------------------- サービス停止
$ systemctl stop mysqld.serviceパスワードを飛ばすため skip-grant-tablesを追加して起動(以下はセーフモードで起動しているが、/etc/my.cnfにskip-grant-tablesを記述してサービス再起動しても良い)
$ mysqld_safe --skip-grant-tables中断後サービス起動
$ systemctl start mysqld.service-----------------------------------------
すると、
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.と出て起動しない。 メッセージ中にある
$ systemctl status mariadb.serviceを実行すると、エラーが出ていたが、多すぎて表示されていないようだったので、/var/log/messages(/var/log/mysqlの人もいる?)の該当時刻の部分を読むと、
[ERROR] mariadbd: Got error 'Could not get an exclusive lock; file is probably in use by another process' when trying to use aria control file '/var/lib/mysql/aria_log_control' [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed. [Note] InnoDB: Compressed tables use zlib 1.2.11 [Note] InnoDB: Using transactional memory [Note] InnoDB: Number of pools: 1 [Note] InnoDB: Using crc32 + pclmulqdq instructions [Note] InnoDB: Using Linux native AIO [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728 [Note] InnoDB: Completed initialization of buffer pool [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11 [Note] InnoDB: Check that you do not already have another mariadbd process using the same InnoDB data or log files. [ERROR] InnoDB: Plugin initialization aborted with error Generic error [Note] InnoDB: Starting shutdown... [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [Note] Plugin 'FEEDBACK' is disabled. [ERROR] Could not open mysql.plugin table: "Unknown storage engine 'Aria'". Some plugins may be not loaded [ERROR] Failed to initialize plugins. [ERROR] Aborting systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE systemd[1]: mariadb.service: Failed with result 'exit-code'. systemd[1]: Failed to start MariaDB xx.xx.xx database server.1行目を見ると、logをコントロールする/var/lib/mysql/aria_log_controlを実行しようとしたときに他のプロセスがまだ動かしていた様子。
実際、mysqld_safeがまだ動いていたのでpkillで消す。しかしそれだけでは当然のように動かず。
aria_log_controlにアクセスしているプロセスを探すと、
$ lsof '/var/lib/mysql/aria_log_control' COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mariadbd 5302 mysql 3uW REG 182,369857 52 262302 /var/lib/mysql/aria_log_control $ ps -ef | grep mariadb mysql 5302 5207 1 11:23 ? 00:02:32 /usr/sbin/mariadbd --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=xxx.err --pid-file=xxx.pidというように、5302番が使っているようだったので、
$ sudo kill -SIGTERM 5302で強制撤去(ただのpkillでは消えなかった)。 その後
$ systemctl start mariadb.serviceをすると無事起動した。
コメント
コメントを投稿