先日、データベースのコピーをしようと作業をしていたら、データベースが新規作成上書きされました。
目の前、真っ暗。
バックアップも取っておらず、「え?なんでこうなるの?」的な展開だったため、口をパクパクするばかり。
サーバー会社に連絡したところ、格安プランのため、自動バックアップは取られておらず、バックアップの有償配布もなかったのですが、下記のようなご連絡をいただきました。
データベースの場合、コントロールパネルから【作成】や【削除】を行われた際に、「.dump」ファイルを自動的に生成する仕様となっております。
「.dump」ファイルはお客様環境下の「/_db_dump」に生成されますので、各ファイルのサイズや変更日時をお確かめの上、ご希望の「.dump」からリストア(復元)をお試しいただければと存じます。
リストアできる!
そうは言っても、phpMyAdminからしかデータベースの操作はしたことがなく、直接サーバーに入ってと言ってもtelnetしか知らないし…。
呆然としている頭で調べて復旧するまでの流れを備忘録として記録しておきます。
手順1 ターミナルエミュレータを手に入れ、WEBサーバーにアクセスし、MySQLにログインする
まずSSHでWEBサーバーにアクセスするために、「ターミナルエミュレータ」をダウンロード。
こちらの記事で救われました。
レンタルサーバーにSSH接続でMySQLへアクセスする
手順2 空のデータベースを作成しておく
MySQLにログインしている状態でデータベースを作成します。
MySQLのコマンドでは下記のように入力します。
CREATE DATABASE 空のデータベース名;
今回、私は「新規上書き作成」をしてしまったため、データベースは空でしたが…。
手順3 MySQLからログアウトし、SSHに戻る
exit
またはquit
手順4 ダンプファイルがあるディレクトリに移動
今回の場合は、「cd /_db_dump」。cdはchange directoryが略されたコマンドでディレクトリを移動します。
cd 移動するディレクトリ
たぶんディレクトリを移動しなくても、次の手順5でダンプファイルをディレクトリから指定してやれば良いと思います。
ダンプファイル名が長く、SSHでのコピペ方法にあまり自信がなかったため、先に移動しています。
その方がlsコマンドでディレクトリ内を表示して、ファイル名をコピーしやすいと考えています。あまり意味はないかも。
手順5 ダンプファイルのリストア
もうゴールは目前です。ダンプファイルをMySQLに読み込ませてリストアします。
mysql -u データベースユーザー名 -p データベース名 -hlocalhost < ダンプファイル名
こちらの記事で救われました。
mysql ダンプとリストア(2023年5月18日追記:閉鎖)
まとめ?
動揺したまま作業したので、何から手を付ければ…?となっていましたが、手順さえわかっていればあっけないほど簡単でした。
慌てないで、お試しあれ!




