ロリポップでの定期的なデータベースバックアップを自動で行いたく、
cronやシェルスクリプトの作成でいろいろと苦労したので、そのメモです!
処理時間などいろいろありますが、とりあえずごそっとデータベースのバックアップを取る方法をまとめました。
データベース設定の確認
契約者ごとに情報が異なるので設定を確認します。
ロリポップのユーザーページから「WEBツール」⇒「データベース」と進んで、サーバー、データベース名、ユーザー名、パスワードの4つを確認してください。
パスワードは「パスワード確認」をクリックすると確認できます。
以下のような形式になっているかと思います。
| |
---|
サーバー | mysql000.hogehoge |
データベース名 | AAA0000000-hogehogehoge |
ユーザー名 | AAA0000000 |
パスワード | hogehoge |
フルパスの確認
契約者ごとに情報が異なるので設定を確認します。
同じくロリポップのユーザーページから「アカウント情報」にある「フルパス」を確認してください。
フルパス:/home/hoge/hoge/hogehoge/hoge
上記のような形式となっているかと思います。
(hogeばっかりですが・・・)
シェルスクリプトをアップロードするフォルダを作成する
後述のシェルスクリプトをアップロードするフォルダをFTPで作成します。
今回「backup」というフォルダを作ったとして進みます。
フルパスで見た場合、以下のようなパスになります。
/home/hoge/hoge/hogehoge/hoge/backup/
バックアップされたDumpファイルが保存されるフォルダを作成する
バックアップデータが保存されるフォルダを作成します。
作成した「backup」フォルダの中にDumpファイルが作成されるフォルダを作成してください。
今回「dump」というフォルダを作ったとして進みます。
フルパスで見た場合以下のようになります。
/home/hoge/hoge/hogehoge/hoge/backup/dump/
また、この「dump」フォルダはFTPで属性を「777」にしておいてください。
合わせて、このフォルダは他のユーザーからも見えてしまいますので
htaccess等で「dump」フォルダ内のファイルにはアクセスできないように
アクセス制限をかけておくと良いでしょう。
シェルスクリプトの作成
実際にバックアップをするスクリプトファイルを作成します。
以下のコードをテキストエディタ等でファイルに記述して、
「dbbackup.sh」として保存して「backup」フォルダにアップロードしてください。
・文字コードはSJISにしてください。
・改行コードは「LF(UNIX)」で保存してください。
・ファイルの属性は「700」にしてください。
#!/bin/sh
/usr/bin/mysqldump-5.6 -h mysql000.hogehoge -u AAA0000000 -phogehoge --databases AAA0000000-hogehogehoge > /home/hoge/hoge/hogehoge/hoge/backup/dump`date +%Y%m%d%H%M`.sql
◆各オプションの説明
| |
---|
-h | ホスト名です。データベース設定の「サーバー」の内容を入れてください。 |
-u | ユーザー名です。データベース設定の「ユーザー名」の内容を入れてください。 |
-p | パスワードです。データベース設定の「ユーザー名」の内容を入れてください。 「-p」と「hogehoge」の間にスペースは入れないでください。 |
--databases | データベース名です。データベース設定の「データベース名」の内容を入れてください。 |
◆出力先の指定
バックアップが取られたDumpファイルを保存するフォルダを指定します。
「アカウント情報の「フルパス」+作成したシェルスクリプトを格納するフォルダ+作成したDumpファイルが作成されるフォルダ」
という形式で指定します。
以下のようになるかと思います。
/home/hoge/hoge/hogehoge/hoge/backup/dump`date +%Y%m%d%H%M`.sql
cronの設定
バックアップするスクリプトファイルを定期的に呼び出す設定をします。
ロリポップのユーザーページから「WEBツール」⇒「cron設定」と進み
以下のような設定でcron設定を作成します。
cronの設定名:dbbackup(といいつつなんでもいいです
日付(月):毎月
日付(日):毎日
曜日:毎日
時間(時):0時
時間(分):0分
実行ファイルパス:backup/dbbackup.sh
注意点
・日付(月)~時間(分)は、好みに応じて変更してください。
今回の設定の場合は、毎日0時0分に「dbbackup.sh」が呼ばれる設定です。
・実行ファイルパスは、フルパス以下の設定になるのでフルパスは不必要です。
完成
以上で、毎日0時に「backup/dump」フォルダ内に
「日付+時間.sql」というバックアップが作成されます。
その他
とりあえずバックアップができないよ?
ユーザーページ内のcron設定にある「メールアドレス設定」を行ってみてください。
cronの結果が設定したメールアドレスに送られてきます。
おそらく失敗している内容がメール内に入ると思いますので
その内容を元に失敗している原因を突き止めてみてください。
パスワードのミスや、フォルダ名が違うなどなど確認ください。
ミスはしているんだろうけど修正してから1日待つの?
cron設定を「毎月、毎日、毎日、毎時、5分毎」にすれば
5分ごとにシェルスクリプトが呼ばれます。
(契約コースによっては最短時間は異なるようです)
成功するまでは、これで試すしかありません・・・。
バックアップは取れたけど、どんどん増えていくんだけど
シェルスクリプト内で古いものがあれば消していく処理を入れればいいのですが
5分毎にしか確認できないため挫けました・・w
同じく定期的にcronからcgiやphpのファイルを呼び出して
そちらのスクリプトから、最新10個くらいを残して
古いファイルは削除する・・などのスクリプトを走らせればよいかと思います!
とりあえず以上です。
No.1023 管理人 - 2017-02-01 14:05:28
>あああさん
ご覧いただきありがとうございます。お役に立てたようで良かったです!
No.1022 あああ - 2017-02-01 13:15:36
とても参考になりました。