アプリ版:「スタンプのみでお礼する」機能のリリースについて

大事に備えて定期的にmysqlhotcopyでバックアップしておりました。
このバックアップファイルを使用してDBを復元するのは、初体験のため、慎重に行ったつもりだったのですが、やはりトラブルが発生してしまいました。
というのも復元したつもりのテーブルにアクセスしようとしたものの、クエリーが通りません。

mysql> select * from `ユーザー`;
ERROR 1017 (HY000): Can't find file: './try/@0j@ma@00a6@0j@ma@00bc@0j@201a@00b6@0j@ma@00bc.frm' (errno: 13)

のようになってしまいます。

ちなみに復元の手順は概ね次のように行いました。
mysql> drop database try;
mysql> quit
$ scp -r cat:mysql/try19_6_11 /tmp/try
$ mv /tmp/try /var/lib/mysql
$ chown -R mysql:mysql /var/lib/mysql/try
$ chmod 700 /var/lib/mysql/try
$ chmod 660 /var/lib/mysql/try/*

パーミッションの設定は他のDBと同じにしたので問題ないと思われるのですが・・・
いかがなものでしょうか。
助けてください
(T_T)

A 回答 (1件)

MySQLのデータファイル、MySQLのインデックスファイル、及びMySQLのテーブル定義ファイルの3つが1つのテーブルに使われているから、復元するには MySQLを停止し、これらのファイルをMySQLのデータディレクトリにコピーしてMySQLを起動すると復元可能


*.MYDファイル MySQLのデータファイル
*.MYIファイル MySQLのインデックスファイル
*.frmファイル MySQLのテーブル定義ファイル
    • good
    • 0
この回答へのお礼

復元の際にmysqldを停止していませんでしたので、今度はmysqldを停止して、先ほどと同じ手順で復元を試みました。
しかしDROP DATABASEもエラーになってしまうため、ファイルを直接削除することによりデータベースを削除しました。
mysqlhotcopyで作成されたディレクトリを丸ごとコピーしましたので、.MYDファイル、.MYIファイル、.frmファイルも、当時のものがそのまま入っている感じです。
しかし同様のエラーメッセージが表示されてSQLが通りません。
存在しないデータベースへの問い合わせを実行した場合とエラーメッセージが異なるため、ファイルがあるのに読めないような状況になっている感じがします。

mysql> use a
ERROR 1049 (42000): Unknown database 'a'
mysql> use try
Database changed
mysql> show tables;
ERROR 1018 (HY000): Can't read dir of './try/' (errno: 13)

お礼日時:2019/06/22 09:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!