TeamSpeak 3サーバを立ち上げても数分で落ちる時の対処

ある日、TeamSpeak 3サーバを再起動させたところ、数分後に落ちてしまうことがあった。
以下がその時のTeamSpeak サーバのログ

error: Lost connection to MySQL server during query
error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (111)
Assertion “error == ERROR_ok” failed at ../../../../s/deps/teamspeak_server_lib/src/ts_server/database/db_database.cpp:157;

また、MariaDBのログにはこんなログも。

[ERROR] mysqld: Table ‘./wordpress/wp_options’ is marked as crashed and should be repaired
InnoDB: Assertion failure in thread 139765944185600 in file fsp0fsp.cc line 2390
(省略)
[Note] InnoDB: Doing recovery: scanned up to log sequence number 4863293368
[Note] InnoDB: Starting crash recovery.

何回MariaDBを再起動させても”[Note] Crash recovery finished.”が消えない状況だったため、データベースの復旧が必要となった。

自分の環境では以下の手順で復旧ができた。

  1. 以下の行をmy.cnfに追加しMariaDBを起動する。
    [mysqld]
    innodb_force_recovery = 1
  2. mysqldumpで全てのデータベースのダンプをとる。
  3. MariaDBを停止する。
  4. mysqlのデータベースのデータファイルを全て削除する。
    (mysqlフォルダ内全て)
  5. 手順1.で追加した行を削除する。
  6. mysql_install_dbを実行する。
  7. MariaDBを起動する。
  8. mysql_secure_installationを実行する。
  9. 手順2.でとったダンプからデータベースを復旧する。

手順9.で”No more room in record file”とエラーが出る場合は、
手順1.で追加した行を削除し忘れているはず。

参考サイト

2016/11/27 接続障害について

いつも当サーバーをご利用頂きありがとうございます。
カーちゃんサーバー管理者のカーちゃんです。

本日 07:00頃より接続ができなかった障害についてですが、
先ほど18:20頃に復旧が完了しました。
なお、TeamSpeakのデータベースを昨日7:00時点のデータへロールバックしております。
そのため作成した(削除した)チャンネルやサーバグループの追加・削除が反映されていない可能性があります。
お手数をおかけしますが、再度行って頂きますようお願いいたします。

また、多数の障害が発生したため、
チャンネル自動削除期間を10日間から20日間へ変更しました。

原因:MySQLのデータベースが破損したため。
その原因:他スクリプトがメモリを枯渇させMySQLの動作に支障をきたしたため。

この所、障害が多発しご迷惑をおかけしております。
申し訳ありませんでした。

2016/11/20 臨時メンテナンス完了しました

カーちゃんサーバー管理者のカーちゃんです。
いつも当サーバーをご利用頂きありがとうございます。

2016/11/20 13:40に臨時メンテナンスを完了しましたので
お知らせいたします。

メンテナンス内容:TeamSpeak 3サーバープログラムのアップデート、MySQLからMariaDBへアップデート、ネットワーク設定の微調整

当サーバーでは引き続き、22時~24時頃に大量のconnection lostが発生する問題について注視します。
今後は問題切り分けを行い、ホスティング元に情報提供するとともに原因究明して参ります。

今後とも当サーバーをよろしくお願いします。