数日前から Raspberry Pi 4 上で MySQL 8.0 を使おうとして苦戦しています。
MySQLサーバーを起動しようとすると、「mysql-server: WARNING: failed precmd routine for mysql」と出てサービスが落ちる。
同エラーメッセージは、旧ファイルが残っている場合も表示されますが、mysql関係のファイルとディレクトリーを初期化すれば、解決できる。
解決できないのは以下の環境
- OS: FreeBSD 13.2 aarch64
- MySQL: Ver 8.0.33 for FreeBSD13.2 on aarch64
- 発生モード:データベースが初期化中に以下の状態まで生成された時点で落ちる。画面には failed precmd routine for mysql の文字だけ表示される。
root@generic:/var/db/mysql # ll total 141672 -rw-r----- 1 mysql mysql 1179648 Oct 21 13:02 #ib_16384_0.dblwr -rw-r----- 1 mysql mysql 9568256 Oct 21 13:02 #ib_16384_1.dblwr drwxr-x--- 2 mysql mysql 512 Oct 21 13:02 #innodb_redo/ -rw-r----- 1 mysql mysql 56 Oct 21 13:02 auto.cnf -rw-r----- 1 mysql mysql 134217728 Oct 21 13:02 ibdata1 -rw-r----- 1 mysql mysql 0 Oct 21 13:02 mysql-bin.index
mysql がロギングを始める前に落ちるので、詳細不明だが、mysql スタートコマンドを
sh -x mysql-server onestart
と叩くと、
+ [ -n mysql_prestart ]
+ debug 'run_rc_command: start_precmd: mysql_prestart '
+ eval 'mysql_prestart '
+ mysql_prestart
+ [ ! -d /var/db/mysql/mysql/. ]
+ mysql_create_auth_tables
+ eval /usr/local/libexec/mysqld '--defaults-extra-file=/usr/local/etc/mysql/my.cnf' --initialize-insecure '--basedir=/usr/local' '--datadir=/var/db/mysql' '--user=mysql'
+ return 1
+ _return=1
+ [ 1 -ne 0 ]
+ [ -z '' ]
+ return 1
+ warn 'failed precmd routine for mysql'
+ [ -x /usr/bin/logger ]
+ logger '/usr/local/etc/rc.d/mysql-server: WARNING: failed precmd routine for mysql'
+ echo '/usr/local/etc/rc.d/mysql-server: WARNING: failed precmd routine for mysql'
/usr/local/etc/rc.d/mysql-server: WARNING: failed precmd routine for mysql
+ return 1
と、mysql_create_auth_tables ルーチンで落ちている事がわかる。
実行環境を疑い、以下の切り分けを行った。
- Raspberry Pi 4 4GB 2台で試したが症状に変化なし。(H/W故障ではない。)
- ファイルシステムを SDメモリ上 と USB SSD で試してみたが、症状に変化なし。(ストレージが壊れているわけではなさそう。)
- バイナリーインストールと ports コレクションからのソースビルドの両方を試してみたものの症状に変化なし。
- Raspberry Pi2 V1.1 32bit OS + MySQL 8.0.32(バイナリーはこれが最新だった)は起動した。
- FreeBSD/amd64 13.2 + MySQL8.0.33 は起動した
- プラットフォームを Raspberry Pi3/aarch64 FreeBSD 12.4 をSDメモリ上に構築し、MySQL8.0.33 をインストールし切り分けしてみたが結果は、起動せず。つまり、OS側は関係なさそう。
「root@generic:/home/freebsd # service mysql-server onestart
/usr/local/etc/rc.d/mysql-server: WARNING: failed precmd routine for mysql
root@generic:/home/freebsd # uname -a
FreeBSD generic 12.4-RELEASE FreeBSD 12.4-RELEASE r372781 GENERIC arm64」
8.0.32 のソースを入手して試そうかと思ったものの、8.0.33 のソースビルドに Raspberry Pi4 で8時間以上かかったので、もう、その元気なし。ビルド8時間、テスト10秒でNG という現実は疲れる。
MySQL8.0 データベースサーバーを Raspberry Pi4 に引っ越そうかと思っていましたが、計画は中止。
動作が確認できている FreeBSD/arm7 32bit か FreeBSD/amd64 で構築することを検討中。32bit FreeBSD はOS更新をソースビルドで行わないといけないので、サーバー環境としては安全性に欠けるため、結局は AMD64アーキテクチャのサーバーを使わざるを得ないかな~。外からは見えないところに置くから、OSの穴には目をつむって運用開始してみるか。。。。葛藤中。
ラズパイ4サーバー、USBブートしてもレスポンスが良く静音、発熱も許容範囲でいいんですけどね。