「タイムスタンプなどを完全にコピーをできる方法」は、真ん中より少し下。
Windows上で開発中のdrupalのmysqlのデータが壊れた。
まずい。正常時のバックアップが取ってない。
(結局いろいろとやったがInnoDBの回復はうまくいかなかった。ファイル自体が壊れたのかな。でも、全てのデータベースのテーブルが1142エラーになるということは、壊れたところがどこか大元の1ヶ所なのだろう。MyISAMならもう少し構造が簡単でうまくいきそうだけど、InnoDBはデータベースの移動をすると整合性がとれなくなるらしい。)
最初は、wampのランプが緑にならなくなったところから始まった。
この時点でmy.iniのmax_allowed_packet(クライアント(PHPなどmysqlを使っている方)からmysqlへ送れるパケット量)をもっと大きい数字に書き換えていれば、それで解決したかもしれなかった。
(今となってはそれが有効だったかどうかはわからない。この最大値は16Mbで、それ以上に設定をしても意味がないということだ。)
だが、あせって、あまり調べもしないうちにwampの上書きをしてしまった。
すると、wampのランプは正常に緑になったけど、
上書きをする以前のテーブルをmysqlが認識しなくなってしまった。
phpMyAdminでテーブルは表示されるが、中身が表示されない。
MySQLのコンソールを使って調べても同じ、
ERROR 1146 (42S02)がでる。
全てのデータベース、すべてのテーブルのリストは表示されるのに、そのフィールドを表示させようとするとそんなテーブルはないと言われてしまう。
概存データベースに新しく付け足したテーブルは正常に表示される。
具体的にはこんな感じ。データベース名"hoge"、テーブル名"users"を調べてみると・・・
mysql> use hoge;
mysql> show tables;
ここにはずらずらとテーブル名が表示される。
mysql> show fields from users;
ERROR 1146 (42S02): Table 'hoge.users' doesn't exist
Windowsのエクスプローラーで見ると、データ自体はちゃんとあり、壊れているようには思えない。
mysql-bin.*というファイルが178も作られていて、それだけで1.35gbもある。このファイルの数と大きさが原因のような気がする。
調べていくと
mysqlのデータが壊れてなければ新しく作ったmysqlのデータフォルダにぽん付け+αで復旧できそうだ。
まぁ、今となっては無理だろう。
いったんここでギブアップして、新しい環境を新規で作り直すが、解決方法があとで見つかるかもしれないから、これをコピーをして取っておくことにする。
その方法だが、
タイムスタンプなどを完全にコピーをできる方法を調べてみた。
Windowsコマンドプロンプトから
robocopy /copyall
でいけるらしい。
実際にやってみると、
C:\wamp\bin\mysq> robocopy mysql5.6.12 mysql5.6.12bup20140916\ /copyall
エラー : 監査管理のユーザー権利がありません。
管理者アカウントでログインしているのに何故だ?
と思ってその事について検索をかけるとadobeのwebサイトにに
「Windows では、コンピュータに管理者アカウントでログインしている場合でも、コンピュータを使用するユーザ全員に影響する変更がユーザによって行われるのを防止するため、通常の操作は標準アカウントと同じ権限で実行されています。」
とあった。
知らなかった。
それをさけるために、管理者権限で操作する。
コマンドプロンプトを立ち上げるときに右クリック。
「管理者として実行」を左クリック。
あと、オプションが/copyallだけだとファイルしかコピーしない。
空フォルダを含めサブフォルダとファイル全部をコピーするには/Eオプションをつける。
C:\wamp\bin\mysq> robocopy mysql5.6.12 mysql5.6.12bup20140916\ /copyall /E
たぶんこれで大丈夫。
あと、robocopyの結果の表示のところでスキップって出てくるときがある。どういうときにそうなるのかと思ったけど、同じファイル、同じフォルダがあったときに、スキップするそうだ。
補足
小さいファイルはコピーをするのにすごく時間がかかる。
同一lan上の異なるpcにコピーをするときは、特にものすごく時間がかかる。
小さいファイルはzipなどでまとめたのちにコピーをするか、
TreeSizeFreeなどのソフトを使って、小さいファイルの多いフォルダを探して、削除できる小さいファイルは削除する。
0 件のコメント:
コメントを投稿