私はMariaDB 10.0.12-MariaDB Homebrew
でOSXを実行している環境設定にいます
インストールを台無しにしてしまったので、セットアップからMySQLとMariaDBを完全に削除して、再び開始しました。
MariaDBのインストールが完了した後、運用サーバーからDBダンプ経由でデータベース(innoDB
)を再インポートしました。うまくいきました。リブート後、翌日、データベースにアクセスできなくなりました。
Table 'my.table' doesn't exist in engine
これの原因と解決策は何ですか?データベースの構造はわかりますが、アクセスしようとすると、このエラーメッセージが表示されます。
mysql-upgrade --force
を試し、rm ib_logfile1 ib_logfile0
を削除しました
ここでは、データの損失は問題ではありません。問題は、再起動するたびに各データベースの再インストールに30分を費やすことができないことです。
ここにいくつかのログがあります:
140730 9:24:13 [Note] Server socket created on IP: '127.0.0.1'.
140730 9:24:14 [Note] Event Scheduler: Loaded 0 events
140730 9:24:14 [Warning] InnoDB: Cannot open table mysql/gtid_slave_pos from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
140730 9:24:14 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1932: Table 'mysql.gtid_slave_pos' doesn't exist in engine
140730 9:24:14 [Note] /usr/local/Cellar/mariadb/10.0.12/bin/mysqld: ready for connections.
Version: '10.0.12-MariaDB' socket: '/tmp/mysql.sock' port: 3306 Homebrew
140730 16:26:28 [Warning] InnoDB: Cannot open table db/site from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
InnoDBが辞書を保持しているibdata1ファイルが何かによって削除されました。間違いなくそれを行うのはMySQLではありません。
わかりました、今週の週末にOpenStack環境がクラッシュしたときにこの問題に遭遇しました。それについての別の投稿は、すぐに回復する方法について来ます。
Fedora 25サーバーをホストとして、Ver 15.1 Distrib 10.1.21-MariaDBの下で実行されているSQL Serverインスタンスで動作するソリューションを見つけました。 古いmariadb-serverの/ var/lib/mysqlディレクトリを完全にコピーし、コピーするデータベースがまだ破損していない場合、データベースが破損していると言う他のすべての投稿を聞かないでください。このプロセスはOSは破損したが、ファイルはまだアクセス可能だったシステム。
ここに私が従った手順があります。
新しいサーバー上でのみ、現在のバージョンのSQLを完全にアンインストールしたことを確認してください。また、次のコマンドを実行して、新しいサーバーと古いサーバー上のすべてのmysql-serverまたはmariadb-serverプロセスが停止していることを確認します。
service mysqld stopまたはservice mariadb stop。
新しいSQLサーバーで/ var/lib/mysqlディレクトリに移動し、このディレクトリにファイルがまったくないことを確認します。このディレクトリにファイルがある場合、データベースサーバーを新しいマシンから削除するプロセスは機能せず、破損している可能性があります。新しいマシンから完全にアンインストールされていることを確認してください。
OLD SQLサーバー:
mkdir/OLDMYSQL-DIR cd/OLDMYSQL-DIR tar cvf mysql-olddirectory.tar/var/lib/mysql gzip mysql-olddirectory.tar
OLDサーバーとNEWサーバーの両方でsshdが実行されていることを確認してください。 2つのサーバー間にネットワーク接続があることを確認してください。
新しいSQLサーバー:
mkdir/NEWMYSQL-DIR
OLD SQLサーバー:
cd/OLDMYSQL-DIR scp mysql-olddirectory.tar.gz @:/ NEWMYSQL-DIR
新しいSQLサーバー:
cd/NEWMYSQL-DIR gunzip mysql-olddirectory.tar.gz OR tar zxvf mysql-olddirectory.tar.gz(tar zxvfが機能しない場合)tar xvf mysql-olddirectory.tar.gz
これで、NEWMYSQL-DIRに「mysql」ディレクトリファイルが配置されます。スイッチなしで単独で「cp」コマンドを実行する衝動に抵抗します。うまくいかないだろう。次の「cp」コマンドを実行して、同じスイッチを使用していることを確認します。
cd mysql/cp -rfp */var/lib/mysql /
これで、新しいサーバーに古いSQLサーバーファイルのすべてのコピーがあり、tactの権限が必要です。新しいSQLサーバー:
cd/var/lib/mysql /
非常に重要なステップ。スキップしないでください
> rm -rfp ib_logfile*
MARIADB-SERVERおよびDNFの場合:
> dnf install mariadb-server
> service mariadb restart
MYSQL-SERVERおよびYUMの場合:
> yum install mysql-server
> service mysqld restart
MariaDB/InnoDBでこの問題が発生したばかりで、次の方法で修正できました。
これは本当にひどかった。
ここで提案されているすべての解決策を試しましたが、機能したのは
ALTER TABLE old_db.{table_name} RENAME new_db.{table_name}
すべての機能しているテーブルDROP old_db
old_db
もう一度ALTER TABLE new_db.{table_name} RENAME old_db.{table_name}
のすべてのテーブルでnew_db
それが完了したら、最後に以前持っていたテーブルを再び作成することができます。
あなたが試みることができます:
my.ini addを変更します
[mysqld]
innodb_file_per_table = on
次にphpmyadmin(またはNavicatやMYSQL Workbenchなどの他のDBビューアー)を開いて実行します
ALTER TABLE tbl_name IMPORT TABLESPACE
各テーブル用
テーブルを開くことができたら、完全なmysqlダンプを作成します
あなたがそれを必要としないことをするための多くの仕事を知っています。