GNU/Linux >> Linux の 問題 >  >> Linux

mysql データベースの回復 - mysql/mysqldump がテーブル <database>.<tablename> を指定します (1146)

同様の質問をしている人を見つけました:MySQL> テーブルが存在しません。しかし、そうです (またはすべきです)。

Mike Dacre には、私の問題を解決する答えがありました。問題は、ib_logfile0 と ib_logfile1 (および mysql/ ルート ディレクトリ内の他の ib* ファイルの一部) が、新しくインストールした mysql と一致しないことでした。古い mysql/ ディレクトリから単に db ファイルをドロップして、それが機能することを期待することはできません。

データベースを回復するために私がしたことは、新規インストールで現在の /var/lib/mysql/ をバックアップすることでした:

$ sudo service mysql stop # Stop mysql. Command could be different on different distros
$ sudo mv /var/lib/mysql ~/mysql.bku

次に、緊急バックアップ ディレクトリを /var/lib にコピーします

$ sudo cp -R /media/NAS/Backup/mysql /var/lib/

次に、パーミッションを適切に設定します (必要に応じて ~/mysql.bku/ を参照してください)。これにはもっと効率的なコマンドがあるかもしれませんが、経験の浅い人がそれを必要とする場合に備えて、完全を期すために私が知っているものを含めています.

$ sudo chown -R mysql:mysql /var/lib/mysql
$ sudo find /var/lib/mysql/ -type d -exec chmod 700 {} \;
$ sudo find /var/lib/mysql/ -type f -exec chmod 660 {} \;
$ sudo chmod 644 /var/lib/mysql/debian-5.1.flag # Not sure what this is but the permissions were a bit different so include it just in case

mysql を再起動します

$ sudo service mysql start # Again command might be different on different distros

次に、必要なデータベースをバックアップしました:

$ mysqldump -u root -p mediawiki-1_19_1 -c | gzip -9 > wiki.2012-11-15.sql.gz

終了したら、mysql/ ディレクトリを元に戻し、ダンプ ファイルからデータベースをインポートしました。

$ sudo service mysql stop
$ sudo mv /var/lib/mysql ~/mysql-discard # Too nervous to start typing "sudo rm -r /" for /var/lib/mysql, so move it away instead
$ sudo mv ~/mysql.bku /var/lib/mysql
$ sudo service mysql start

問題は解決しました。現在、データベースを適切にエクスポートしており、mysql も適切に実行されています。あとは、バックアップからウィキを復元するガイドに従うだけです。


Linux
  1. MySQLデータベースをインポートする

  2. MySQL データベース全体の複製

  3. ある mysql データベースから別の mysql データベースにテーブルをコピーする方法

  1. データベース間でMySQLテーブルをコピーする方法

  2. MySQL データベースの名前を変更する

  3. Linux での MySQL の大文字と小文字を区別するテーブル名

  1. MySQL:mysqldumpを使用してデータベースをバックアップ(ダンプ)および復元する方法

  2. 破損したMysqlデータベーステーブルを修復する方法

  3. MySQLでテーブルを削除する