mysqlのバックアップを自動化する
mysqlのバックアップとリストア で、mysqlのバックアップ方法について記述しました。
今回は、そのバックアップを自動化(毎日?毎週?)してみましょう。
まずは、前準備
ここで紹介する事例では、以下のことを確認しておきましょう。
- シェルが使える環境か確認します。
上記のファイルを適当なディレクトリへおき、実行権を与えます。( chemod 775 test みたいに ) 実際に実行してみると、(ここでは、testという実行ファイルとして例を記述しています)#!/bin/sh touch `date +%Y%m%d`
正しく動作するなら、上記のように日付だけの空ファイルが作成されるはずです。$ ./test $ ls -l -rw-rw-r-- 1 user user 0 9月 11 11:11 20100911
もし、シェルが動作しない環境なら、phpでやってみましょう。
phpでやる場合は、phpのパス情報を必ず確認しておきましょう。 - mysqldumpが使える環境か確認します。
mysqlのバックアップを行うには、mysqldumpのコマンドが動作しないことには、何もできません。 シェルやクーロンで、mysqldumpを動作させるためには、フルパスで記述する必要があります。そのため、パス情報も確認しておきましょう。
- クーロン(cron)が使える環境か確認します。
これは、自動化するにあたり、毎日、あるいは毎週など定期的にシェルを起動させるために必要です。
各レンタルサーバーで、提供の状況は違いますから、機能一覧などから確認しましょう。 もし、クーロン(cron)が提供されているかどうかわからないときは、サポートへ問い合わせて確認しましょう。
準備すること。
- mysqldumpのパスを確認しておきましょう。
- バックアップしたいmysqlのユーザ名、パスワード、データベース名を確認しておきましょう。
- バックアップするファイルを格納するディレクトリを確認しておきましょう。
実例(シェルの場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/sh DBUSER=db_user_name # データベースのユーザ名を指定します。 DBNAME=db_name # データベース名を指定します。 DBPASS=db_password # データベースのパスワードを指定します。 DBHOST=localhost # データベースのホスト名を指定します。自分自身の場合は、localhostでOK。 MYSQLPATH=/usr/bin # mysqldumpがあるパスを指定します。 # 出力ファイル名を指定します。 # 以下の例では、/home/user/db_backup/2010_09_11_10_31.sql のようなファイル名になります。 # 自動的に日時をファイル名にしています。 OUTPUTFILE=/home/user/db_backup/`date +%Y_%m_%d_%H_%M`.sql # バックアップ実行 $MYSQLPATH/mysqldump --default-character-set=utf8 --host="$DBHOST" --user="$DBUSER" --password="$DBPASS" "$DBNAME" > "$OUTPUTFILE" # バックアップしたファイルをgzipで圧縮しています。 # 案外、ファイルが大きくなります。ディスク容量に問題なければ、削除しても良いでしょう。 gzip "$OUTPUTFILE" |
3行目:db_user_nameを環境に合わせてデータベースのユーザ名を指定します。
4行目:db_nameを環境に合わせてデータベース名を指定します。
5行目:db_passwordを環境に合わせてデータベースのパスワードを指定します。
6行目:localhostを環境に合わせてデータベースのユーザ名を指定します。
7行目:/usr/binを環境に合わせてデータベースのホスト名を指定します。
12行目:/home/user/db_backup/を環境に合わせてバックアップ先ディレクトリを指定します。
設定を終えたら、ファイルに実行権を与えます。
$ chmod 755 exmaple_backup
こんな感じで、exmaple_backupにファイル名を指定してあげます。
ここまでできたら、最後にクーロン(cron)を設定します。
通常、格安レンタルサーバーでは、クーロン(cron)設定用に画面が用意されていると思いますので、その画面に従って設定します。
$ vi /etc/crontab : : : 0 1 * * * root /home/user/exmaple_backup
ここまで設定できればOK。後は、実際に実行して、うまく動作するかどうか確認しておわりです。
実例(phpの場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php $DBUSER='db_user_name'; # データベースのユーザ名を指定します。 $DBNAME='db_name'; # データベース名を指定します。 $DBPASS='db_password'; # データベースのパスワードを指定します。 $DBHOST='localhost'; # データベースのホスト名を指定します。自分自身の場合は、localhostでOK。 $MYSQLPATH='/usr/bin'; # mysqldumpがあるパスを指定します。 # 出力ファイル名を指定します。 # 以下の例では、/home/user/db_backup/2010_09_11_10_31.sql のようなファイル名になります。 # 自動的に日時をファイル名にしています。 $OUTPUTFILE='/home/user/db_backup/'.date('Y_m_d_H_i').'.sql'; # バックアップ実行 system( "$MYSQLPATH/mysqldump --default-character-set=utf8 --host=\"$DBHOST\" --user=\"$DBUSER\" --password=\"$DBPASS\" \"$DBNAME\" > \"$OUTPUTFILE\"" ); # バックアップしたファイルをgzipで圧縮しています。 # 案外、ファイルが大きくなります。ディスク容量に問題なければ、削除しても良いでしょう。 system( "gzip \"$OUTPUTFILE\"" ); ?> |
phpでもシェルと同じように設定していきます。
3行目:db_user_nameを環境に合わせてデータベースのユーザ名を指定します。
4行目:db_nameを環境に合わせてデータベース名を指定します。
5行目:db_passwordを環境に合わせてデータベースのパスワードを指定します。
6行目:localhostを環境に合わせてデータベースのユーザ名を指定します。
7行目:/usr/binを環境に合わせてデータベースのホスト名を指定します。
12行目:/home/user/db_backup/を環境に合わせてバックアップ先ディレクトリを指定します。
ここまでできたら、最後にクーロン(cron)を設定します。
通常、格安レンタルサーバーでは、クーロン(cron)設定用に画面が用意されていると思いますので、その画面に従って設定します。
$ vi /etc/crontab : : : 0 1 * * * root /user/bin/php /home/user/exmaple_backup.php
※ここでは、シェルと違って、phpの実行コマンドにバックアップの処理を記述したexmaple_backup.phpを引数で渡すことに注意します。
ここまで設定できればOK。後は、実際に実行して、うまく動作するかどうか確認しておわりです。
mysqldump: Got error: 1016: Can't open file: './xxxxx.frm' (errno: 24) when using LOCK TABLES
mysqldump --default-character-set=utf8 --host="hostname" --user="db_user" --password="$db_password" "db_name" --lock-tables=false
この記事を読んだ人は次の記事も読んでいます:
- mysqlのバックアップとリストア
- MySQLの必要なメモリ量は?
- レンタルサーバー(プラン)の移転(変更)の仕方
- 検索ロボット(クローラ)拒否で負荷軽減
- 1つのWordPressでマルチドメインを制御する方法



(4.50)
(4.44)
(5.00)
(3)
ボタンをクリックすることで、レンタルサーバー、ドメインレジストラを評価いただけます。

口コミ・評判
口コミ・評判を投稿 :