「Mysql2::Error::ConnectionError: Lost connection to MySQL server」が発生してからの復帰方法を調べてみた

現象

 ローカルに起動中のmysqlにrailsから接続し、db:migrateなどの重めのmysql操作を実行すると、高い確率でmysqlに接続できなくなる。

~/d ❯❯❯ bundle exec rake db:migrate
rake aborted!
Mysql2::Error::ConnectionError: Lost connection to MySQL server at 'reading initial communication packet', system error: 0

 上記のエラーとともにmysqlに突然繋がらなくなる。。

 mysqlプロセスはどうなっているのか、確認する。

~/d ❯❯❯ mysql.server status                                                                                                                               
 ERROR! Multiple MySQL running but PID file could not be found (31911 32034 )
~/d ❯❯❯ mysql.server status                                                                                                                                
 ERROR! MySQL is not running
~/d ❯❯❯ mysql.server status                                                                                                                                
 ERROR! MySQL is not running
~/d ❯❯❯ mysql.server start                                                                                                                                  
Starting MySQL
...........................^C

 「Multiple MySQL running」と出ているので、複数のmysqlが起動してしまっている??よくわからない。。

 が、少し時間をおいて「mysql.server status」を実行すると、mysqlは停止している。

 ならば起動しても問題ないかと思い、「mysql.server start」するも、一向に起動しない。。

~/d❯❯❯ ps aux| grep mysqld
hoge 33853   0.0  0.0  4285832    744 s007  S+   12:15PM   0:00.00 grep --color=auto mysqld

 grep以外のmysqlの文字を含むプロセスを全てkill-9して再度起動する。

~/d ❯❯❯ mysql.server start
Starting MySQL
 SUCCESS! 
2022-09-16T03:17:08.6NZ mysqld_safe A mysqld process already exists

 起動には成功した。

 mysqld_safeのプロセスが二重に起動しようとしたらしい。これはなんでだ??何か影響してたらやだなぁ。

 その後の操作は異常なし。