sql >> データベース >  >> RDS >> Mysql

MAMPPROがクラッシュします。 MySQLは再起動時に起動しません

    序文: これは悪いことのように聞こえますが、行動する前にこの回答のすべてを必ず読んでください。時間をかけて事態を悪化させることはできません。各ステップを読んでください。これで、MAMPProのMySQLデータベースサーバーをフォローして再度実行できるようになることを願っています。

    したがって、InnoDBデータベースがクラッシュしたようです。アプリ自体ではありません。キーはログにあります:

    140527 15:06:58 InnoDB: highest supported file format is Barracuda.
    InnoDB: Log scan progressed past the checkpoint lsn 791075520
    140527 15:06:58  InnoDB: Database was not shut down normally!
    InnoDB: Starting crash recovery.
    InnoDB: Reading tablespace information from the .ibd files...
    InnoDB: Restoring possible half-written data pages from the doublewrite
    InnoDB: buffer...
    InnoDB: Doing recovery: scanned up to log sequence number 791076717
    InnoDB: Database page corruption on disk or a failed
    InnoDB: file read of page 8402.
    InnoDB: You may have to recover from a backup.
    

    ここでMAMPPROを使用しているようです:

    /Library/Application Support/appsolute/MAMP PRO/db/mysql
    

    問題は、MAMP Proデータベースのバックアップがありますか? mysqldump経由のいずれか または、他の何か? MAMPインストールに他のInnoDBデータベースがありますか?

    また、mysqldumpを実行できたと言います 、しかし、データベースがクラッシュする可能性は実際にはありません。したがって、mysqldumpを実行したときに想定しています これは、システムへのMySQLの別の個別インストールでした。 mysqldumpなどのMySQLバイナリ MAMPまたはMAMPProは、システム全体のmysqldumpと同じではありません。 。それらは2つの100%異なるインストールです。どのmysqldumpを確認できます 次のコマンドを入力して使用されています:

    which mysqldump
    

    使用していると思われるものの完全なパスを確認する。 mysqldumpのMAMPインストール —およびその他の関連するバイナリ—はここにあります:

    /Applications/MAMP/Library/bin/
    

    また、$PATHを変更せずに直接実行するには 値(他のすべて)は、次のように実行することです:

    /Applications/MAMP/Library/bin/mysqldump
    

    注意深くお読みください: 以下に私があなたに与えるアドバイスは、私がこのような状況に対処するあらゆる方法を提示することであることに注意してください。 InnoDBデータベースが重要でない場合は、InnoDB固有のDBファイルを破棄するという最初の提案を行ってください。 mysqldumpがある場合 バックアップ、同じことを行いますが、mysqldumpを回復します バックアップ。

    また、InnoDBはではありません デフォルトのストレージエンジン。あなたはそれを設定するためにあなたの邪魔にならないようにしなければなりません。デフォルトはMyISAMです。 MySQLで作成された新しいDBはすべてMyISAMになります。だからこれはあなたを助けるでしょう。どのデータベースにInnoDBストレージエンジンが設定されているかを把握するために、思考の上限を設定する必要があります。あなたが25を持っているが、1つだけがInnoDBを持っていると言うなら、簡単な解決策です。ただし、データベースが25個ある場合は、通常のmysqldumpを作成する習慣を身に付ける必要があります。 バックアップ。バックアップがある場合、これは頭痛の種になりますが、解決するのは簡単です。

    1つのオプション:破損したInnoDBのものを削除し、mysqldumpから回復します バックアップ。

    私があなただったら最初にすることはmysqlをバックアップすることです /Library/Application Support/appsolute/MAMP PRO/db/のディレクトリ そのため、万が一の場合に備えて、少なくとも破損したファイルのバックアップをとることができます。

    次に、次のファイルを削除します:

    /Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile0
    /Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile1
    /Library/Application Support/appsolute/MAMP PRO/db/mysql/ibdata1
    

    これらはInnoDB固有のファイルです。それらを削除してから、MAMPの起動を再試行してください。出てくるはずです。ただし、MAMP内のInnoDBデータベースはすべて「ゾンビ」状態になります。これらのデータベースを削除して、バックアップから再作成する必要があります。または、可能であれば最初から。

    別のオプション:innodb_force_recoveryを使用して、MySQLサーバーを再度起動して実行してみてください 。

    今、そのDBを回復する必要があるオフハンドのチャンスで、 innodb_force_recovery ここで説明されているように。

    MAMP Proの場合、次の手順に従ってMySQL構成ファイルを編集できるようです。

    1. MAMPProを起動します。
    2. MAMPProサーバーが実行されている場合は停止します。
    3. [ファイルの選択]->[テンプレートの編集]->[MySQLmy.cnf]
    4. エディタウィンドウが表示されます。
    5. 警告メッセージが表示された場合は、[OK]をクリックして確認してください。
    6. セクション「[mysqld]」を検索
    7. このセクションの最後の行の下に、次の行を追加します:innodb_force_recovery = 1

    そして、MySQLのドキュメントで説明されているように 、これは厳密にデータベースを稼働させるためのものであり、mysqldumpを介してバックアップを作成できます。 :

    現在、innodb_force_recoveryには約6つの異なる値があります ただし、実際には1でのみ試行する必要があります 今のところ。 6つそれぞれを試してみたい場合は、次の内訳をご覧ください。

    データベースを起動して実行し、mysqldumpを実行できる場合 それではおめでとうございます!あなたは明確です!次の最善のステップは次のとおりです

    1. MySQLデータベースサーバーを停止します
    2. innodb_force_recoveryを削除します データベースサーバーが正常に動作できるように、MySQL構成のオプション。
    3. MySQLデータベースサーバーを再起動します。
    4. 破損したMySQLデータベースをサーバーから削除します(ダンプファイルを削除しないでください!これがバックアップです!)
    5. 回復する新しいデータベースを作成します。
    6. mysqldumpをインポートします 新しいデータベースにバックアップします。

    そして、あなたはやるべきです。



    1. Wordpressのカスタムテーブルまたはカスタム投稿タイプ?

    2. OracleでPLSQLブロックを実行する方法

    3. Laravel:1つのクエリだけで同じIDを持つ複数のテーブルから行を削除するにはどうすればよいですか?

    4. mysqlのデフォルトポートを3306から3360に変更する方法