当サイトでも毎度お馴染みのエックスサーバー。
実は、MySQLデータベースのバックアップを自動で取っているとのこと。
さすが!これで何か問題が起こっても安心安心…と高を括ってたら、思わぬ落とし穴が!
バックアップデータを貰うための申請してからしばらく待つこと。
エックスサーバーの公式サイトには以下のように書かれています。
バックアップの必要性
サーバー上のデータは、1日1回、バックアップ専用サーバーに自動でコピーしており、全サーバープランともサーバー領域のWeb・メールデータ「過去14日分」、MySQLデータベース「過去14日分」のデータを保持しています。
引用:自動バックアップ機能 | レンタルサーバーならエックスサーバー
ふむふむ。
エックスサーバーは、自動で過去14日分もバックアップデータを保持してくれるのか。
ところがどっこい。
サーバー領域データの場合
引用:自動バックアップ機能 | レンタルサーバーならエックスサーバー
サーバーパネル上の「バックアップ」より、ご希望のバックアップ対象データをご指定の上、お申し込みください。
・・・
MySQLデータベースの場合
サーバーパネル上の「MySQLバックアップ」より、ご希望のバックアップ対象データをご指定の上、お申し込みください。
・・・
なにぃ!?
何度かお世話になったことがありますが、エックスサーバーにバックアップデータを要求してから数日かかります。
すぐにでも復旧したいのに、手元に置いてくれないってど~ゆ~こと?
MySQLのバックアップ
と言う訳で、自分でできることは自分でしましょう。
実際には「mysqldump」コマンドを利用してMySQLのダンプを取ります。
準備するのも
データベース接続に必要な情報と、保存先フォルダを作成しておきましょう。
保存先フォルダはエックスサーバーがバックアップデータを提供する際の受け渡しフォルダでもある「/home/backup」とします。
データベースの接続情報は、[サーバーパネル] > [MySQL設定] をご覧ください。
項目 | 説明 |
---|---|
ホスト名 | 下の方に記載あり(例:MariaDB10.X ホスト名|localhost) |
ユーザー | バックアップ対象データベーズのアクセス権所有ユーザです。 |
パスワード | MySQLユーザを追加する際に自分で設定したパスワードです。 |
データベース | バックアップ対象データベース名です。 |
バックアップ用シェルスクリプト作成
自動バックアップを行うには、エックスサーバーのcron機能を使いますので、そこで定期実行させるシェルスクリプトを作成します。
[]の中には上記で準備したものを使います。
1 2 3 4 |
#!/bin/bash LANG=en_GB.UTF-8 mysqldump -h[ホスト名] -u[ユーザー名] -p[パスワード] [データベース名] > ~/backup/dump_$(date +%y%m%d).sql rm -f ~/backup/dump_$(date --date "2 days ago" +%y%m%d).sql |
mysqldumpのオプションについては以下をご参照ください。
解説・注意点
文字コードをUTF-8で指定。
mysqldumpコマンドを使い、ファイル名を/home/backup/dump_[今日の日付].sqlでバックアップしています。
[今日の日付]はyymmdd形式です(例:180411)
オプションの後ろ、特に-pとパスワードの間にはスペースを空けないでください。
バックアップデータによるサーバーの容量圧迫を防ぐため、rmコマンドで2日以前のバックアップデータを削除しています。
保持する期間を変更したい場合は、2を変更してください。
cronで毎日午前3時にバックアップ
なぜ午前3時かと言うと、処理中はサーバーの負荷が上がるので、クライアントにも影響が出ます。
サーバーと利用者双方に負担がかからないよう、アクセスの少ない深夜に行いましょう。
[サーバーパネル] > [Cron設定]で[Cron設定追加]タブをクリックし、以下のように入力します。
分 | 0 |
---|---|
時間 | 3 |
日 | * |
月 | * |
曜日 | * |
コマンド | /home/[サーバーID]/backup/backup.sh |
コメント | (任意) |
[サーバーID]はサーバー契約した際のIDです。
インフォパネルのご契約一覧で確認できます。cronの追加をすると、このようになります。
1 |
0 3 * * * /home/[サーバーID]/backup/backup.sh |
*(アスタリスク)は毎~という意味で、上記の例だと毎月毎日3時0分に実行します。
例えば、毎月1日の午前4時30分の月1回バックアップを取りたい場合は、以下のようになります。
1 |
30 4 1 * * /home/[サーバーID]/backup/backup.sh |
以上。
今回はデータベーズのバックアップだけでしたので、次はファイルをまるごとバックアップしたいです。
コメント
コメント一覧 (1件)
[…] 、MySqlバックアップする方法も踏まえ、以下にまとめます。 エックスサーバーでMySQLデータベースを自動バックアップする方法https://minory.org/xserver-mysql-backup.html当サイトでも毎度お馴染み […]