Ubuntu 12.04LTS仮想マシンを実行しています。先週、VMが予期せず停止し、mysqlがVMで起動しなくなりました。これら2つのイベントは関連している可能性があり、関連していない可能性があります。
接続しようとすると:
$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
次に:
$ Sudo service mysql start
start: Job failed to start
そして
$ dmesg
[ 1838.218400] type=1400 audit(1374633238.253:50): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18473 comm="apparmor_parser"
[ 1838.358656] init: mysql main process (18477) terminated with status 1
[ 1838.358695] init: mysql main process ended, respawning
[ 1839.269303] init: mysql post-start process (18478) terminated with status 1
そして
$ service mysql status
mysql stop/waiting
これは、mysqlが起動時にクラッシュしていることを意味すると思います。
$ Sudo mysqld start
130723 21:51:24 InnoDB: Assertion failure in thread 3064211200 in file fut0lst.ic line 83
InnoDB: Failing assertion: addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
02:51:24 UTC - mysqld got signal 6 ;
マニュアルによる 、データディレクトリ(/ var/lib/mysql)に移動し、これを実行しました:
myisamchk --silent --force */*.MYI
次に:
$ Sudo mysqld
...
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
...
データベースが破損していますか?回復するにはどうすればよいですか? mysqlを再インストールしますか?それほど劇的ではないものですか?データベースを失っても大丈夫です。システムが機能しているだけです。
Mysqld.sockファイルを再作成するとうまくいくかもしれません。
cd /var/run/mysqld
Sudo touch mysqld.sock
Sudo chown mysql:mysql mysqld.sock
Sudo chmod 1777 mysqld.sock
Sudo service mysql restart
そうでない場合は、以下を実行して結果を投稿してください。
cd /var/run/mysqld
ls -al
壊れたMySQLインストールは、セーフモードで起動することで回避できる場合があります。
重要MySQLをセーフモードで実行するとセキュリティ設定が低下し、他の人があなたのデータにアクセスできるようになる可能性があります。
セーフモードで開始するには、次のコマンドを実行します。
Sudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
テーブルが実際に破損していることがわかった場合は、それらを修正するために実行できるいくつかの手順があります。これが良いチュートリアルへのリンクです。 http://tech.amikelive.com/node-36/mysql-50-recovering-crashedcorrupted-innodb-database/
http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/
My.cnfをチェックインし、フォルダーtmp
の場所を探します。次に、その場所の権限が777
であることを確認します。フォルダのデフォルトのアクセス許可は755
であり、フォームtmp
であるため、777
である必要があります。
エラー2002(HY000):ソケット '/var/run/mysqld/mysqld.sock'(2)を介してローカルMySQLサーバーに接続できません