46
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

さくらのレンタルサーバでデータベースを自動的にバックアップして、いざというときに復元する

Last updated at Posted at 2014-06-24

#背景
下記はさくらのレンタルサーバの、「データベースの設定」の注意事項です。ご覧のとおり、データベースを削除した場合、 __復旧できない__そうです。

スクリーンショット 2014-06-24 22.13.01.png

このデータベースの __管理ツール__ですが、下記のような UI で、老眼の進んだ私は管理ツールにログインしようとして、時々まちがえて「削除」をクリックしそうになるのですが、 今日、ついに本当に間違えて削除してしまいました ^^;;;

スクリーンショット 2014-06-24 22.53.10.png

なんか世の中、「データベース消しちゃった」系の事故が頻発してますね。徹夜作業中に delete * (while句なしで) してしまって、朝イチの飛行機で北海道に逃げる、という話も読んだことが有る気がします ^^;;; truncate だったかな?

もちろん、^^;;; なんて冷や汗で笑ってられるのは、 __データベースのバックアップを定期的にとってある__からでして、データベースというものは消えてしまうのが自然、とぐらいに考えて、多重化するなり、Dynamo DB にするなり、もしくは バックアップの取得を自動化しましょう

バックアップ取得の自動化

MySQL のバックアップは mysqldump コマンドで取得します。
下記のシェルで2世代までとってます
下記で「アカウント」「パスワード」「データベース」は、みなさんの環境でのさくらのアカウントとパスワード、及び作られたデータベースの名前に置き換えてください

mysqldump.sh
cd /home/アカウント
mv dump.sql dump.old.sql
/usr/local/bin/mysqldump -Q -h mysql419.db.sakura.ne.jp -uアカウント -pパスワード データベース名 > dump.sql 2> dump.error.txt

次に、このシェルを下記のように cron で例えば毎時0分にとるように設定します。ちなみにエメラルド色のブロックで消してある部分は私のアカウント名になりますので、皆様のアカウントで置き換えてください。別の場所においてもよいですが、ホームディレクトリがわかりやすいと思います

スクリーンショット 2014-06-24 22.55.36.png

これで、一時間毎に dump.sql と、さらに一時間前の dump.old.sql のが取得されます。特に問題がおきなければ dump.error.txt は 0バイトのままです

#バックアップからの復元
復元は、ものすごく簡単です。まず、FTP で dump.sql をダウンロードしておきます
つぎに、管理ツールで消してしまったデータベースと同じ名前の空のデータベースを作ります

スクリーンショット 2014-06-24 23.02.13.png

作ったデータベースを管理ツールで開き、「 インポート」を選択、インポートするファイルとして先ほどダウンロードしておいた dump.sql を指定し、「 部分インポート」のチェックボックスを 外し 右下の「 実行する」をクリックします

これだけで、消してしまったデータベースは復活します

スクリーンショット 2014-06-24 23.39.25.png

#感想
いやぁ、正直焦りましたというか、本当になんか意識がすーっとなくなるような感覚になりました ^^;;;
本当に とっててよかったバックアップ

46
49
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?