mysqldumpコマンドを使ってXSERVERのMySQLのデータベースのバックアップを自動的に取る方法[WordPress]

シェアしていただけるとうれしいです

阪堺電車


XSERVERでWordPressのMySQLのデータベースのバックアップを取る方法はいくつかありまして、

  • phpMyAdminを使ってバックアップを取る
  • XSERVERのサーバーパネルからバックアップを取る

という方法がお手軽です。

phpMyAdminを使ってバックアップを取る方法は、以前こちらのブログでも紹介しています。

ブログのバックアップを取ろう[WordPress]
デジタルデータは脆いです。一瞬にしてデータを失いかねません。もし今使っているPCのハードディスクが壊れたら。もし今使っているスマホを水没さ

また、XSERVERのサーバーパネルで簡単にMySQLのデータベースのバックアップを取ることができます。

「サーバーパネル」にログインして「データベース」→「MySQL設定」で、「MySQLバックアップ」のタブをクリックします。

XSERVERのサーバーパネルでデータベースのバックアップをとる

バックアップを取りたいデータベースの「エクスポート実行」ボタンをクリックすると、しばらくすると、ダウンロードが始まります。

バックアップの内容はphpMyAdminで取ったものと同じものです。

過去の時点のデータベースに戻したい

phpMyadminでのバックアップの方法、XSERVERのサーバーパネルでのバックアップの方法、いずれも現時点のデータのバックアップです。

現時点でデータベースが正常に動いている(ブログが正常に閲覧できる)のであれば、現時点の最新のバックアップを残しておけば十分です。

しかし、データベースの内容がおかしくなってしまったので、昨日時点の状態に戻したい、というときはどうすればいいでしょう?

毎日バックアップを取っているのであれば、昨日のバックアップでもとに戻してあげればいいです。

しかし、律儀にバックアップを毎日取っている人ってどれくらいいらっしゃるでしょう?

バックアップデータのお申込み

実は、XSERVERでは、過去14日分のバックアップを取ってくれています。
しかし、過去のデータをお取り寄せするには料金がかかります。(5,400円、2017/08/11時点)

過去のデータに戻すのに、泣く泣くお金を支払ってもいいですが、お金を支払わなくてもいいように、自分で自動的に毎日データベースのバックアップを取ってファイルとして保存しておく方法があるのです。

コマンドを使ってMySQLのバックアップを取る

まずは、手始めとして、コマンドを打ってMySQLのバックアップを取ってみます。

SSHという方法を使って自分のサーバーにログインします。方法はこちらの記事を参考にしてください。

WindowsからXSERVERにSSHで接続する方法
XSERVERにSSHで接続するには、Windowsでは定番の「Tera Term」を使えば問題なく接続できます。 ダウンロードTera

真っ黒な画面にコマンドを打つのですが、WindowsのDOSプロンプトやmacOSのターミナルを触ったことがある人なら簡単にできます。

まずは、Windowsの場合はTeraTermを使ってSSHでXSERVERにログインしましょう。

macOSの人はごめんなさい、ターミナルでできるのかな?

XSERVERにSSHでログインする

SSHでXSERVERにログインできましたか?

MySQLにログインしてみる

SSHでXSERVERにログインできたら、データベース(MySQL)にログインしてみましょう。

次のコマンドを打ちます。

サーバー名とユーザー名パスワードが分からないよ(´・ω・`)

という方も大丈夫です。FTP(またはSFTP、FTPS)でログインして、WordPressをインストールしたディレクトリにある「wp-config.php」の中身を見てください。

27行目辺りから、

ここに書いてる情報がMySQLにログインする情報になります。上記の場合ですと、下記のようにコマンドを打ちます。

「-u」とユーザー名、「-p」とパスワーの間にスペースは入れないでください。

MySQLにログインする

うまくログインできましたか?

接続できることが確認できればいいので、「quit」と打って切断します。

MySQLから切断

mysqldumpでバックアップを取ってみる

MySQLにログインできたので、実際に現時点のバックアップをコマンドを打って取ってみましょう。
まずは、自分のホームディレクトリの一番上の階層に移動します。

バックアップファイルを保存するディレクトリを作成します。名前はなんでもいいですが、「backup」としておきましょう。

backupディレクトリに移動します。

MySQLのデータベースのバックアップを出力するコマンドがあります。「mysqldump」です。そのまま打つと画面に出力されるだけなので、「 > 」の後ろにファイル名を指定して、ファイルに保存します。

先程の例に当てはめると、下記のようになります。

データベースのデイズによってしばらく時間がかかると思いますが、数秒~数十秒もあればコマンドが終了すると思います。

「ls」コマンドで、ファイルができたかどうか確認しましょう。

上記の例であれば、「user_blog.sql」というファイルができているはずです。

自動実行させるために、スクリプトを書く

今回の目的は「自動的にMySQLのバックアップを取る」ということですから、いちいちSSHでログインしてmysqldumpコマンドを打っていたのではその目的は達成できません。

先程のコマンドを「シェルスクリプト」にして、特定の時間が来たら実行させるようにします。

テキストエディタを使って、下記の内容を記載します。文字コードは「UTF-8」、改行コードは「LF」にしてください。

Windowsのメモ帳は改行コードの指定ができないので使えません。秀丸エディタやサクラエディタなどのテキストエディタを使ってください。

ファイル名はなんでもいいですが、とりあえず「backup.sh」にしておきましょう。このファイルをFTP(SFTP、FTPS)などを使って、「backup」ディレクトリにアップロードします。

もちろん「vi」を使っても構いません
バックアップファイルのパスは「~/backup/user_blog.sql」として、絶対パスにしています。

アップロードが終わったら、ファイルに実行権限を与えます。

ややこしいので、先程作成した「user_backup.sh」は一旦削除しましょうか?

スクリプトを実行します。

バックアップファイルが作成されたでしょうか?先程と同様に「ls」コマンドで、ファイルができたかどうか確認しましょう。

上記の例であれば、「user_blog.sql」というファイルができているはずです。

1週間分のバックアップを残すようにする

先程のスクリプトファイルでは、毎回同じファイル名でバックアップを取るので、内容が上書きされてしまいます。バックアップファイル名に日付の情報を入れて上書きしないようにしてみましょう。

サーバーの日時表示の設定によるのですが、XSERVERであれば、

user_blog_金.sql

というファイルができあがりました。金曜日なので「金」なのですが、「ファイル名に日本語ってどうなのよ?」って感じなので、英語にしてみます。

こちらに変えてみると、

user_blog_Fri.sql

になりました。英語の方を採用しましょう。

このスクリプトを毎日決まった時間に動かせば、最大7つのバックアップファイルができあがります。

user_blog_Sun.sql
user_blog_Mon.sql
user_blog_Tue.sql
user_blog_Wed.sql
user_blog_Thu.sql
user_blog_Fri.sql
user_blog_Sat.sql

同じファイル名があれば上書きされますので、最大1週間分のバックアップファイルができあがるわけです。

スクリプトを決まった時間に実行させる

スクリプトを毎日決まった時間に動かすには、「Cron」というものを使います。Windowsで言うところの「タイムスケジューラ」みたいなものです。

XSERVERではサーバーパネルで設定できます。
「ホームページ」→「Cron設定」です。「Cronの追加」タブをっクリックします。

Cronの設定

アクセスが少ない午前3時に動かすように設定してみました。

  • 分:0
  • 時間:3
  • 日:*(アスタリスク)
  • 月:*
  • 曜日:*
  • コマンド:/home/[あなたのユーザー名]/backup/backup.sh
  • コメント:任意のわかりやすいコメント

Cronの設定

これで毎朝3時にバックアップが取られるはずです。

ご注意

作成されるバックアップファイルのファイル名につけられる「曜日」の情報は、バックアップのコマンドが動いた「曜日」です。

仮に水曜日の時点に戻すのであれば、木曜日に作成されたバックアップファイルからデータベースを復元しなければなりません。

備えあれば憂いなし。あなたも設定してみてはいかがでしょうか?

では、楽しいブログライフを!

バックアップファイルからリストア(復元)する方法をこちらの記事で紹介しています。

mysqlコマンドを使ってXSERVERのMySQLのデータベースをリストア(復元)する方法[WordPress]
XSERVERでWordPressのMySQLのデータベースのバックアップからデータベースをリストア(復元)する方法は、phpMyAdmi
いわゆる「画像直リンク」、画像の複製は固くお断りいたします。
スポンサーリンク

シェアしていただけるとうれしいです

フォローよろしくお願いします

関連記事