add to hatena hatena.comment (5) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 5

CakePHP MySQLのバックアップ(mysqldump)を行うバッチ

CakePHP1.2からコマンドラインからCakeが起動できるようになりました。
この機能を使って、MySQLのバックアップを行う簡単なスクリプトを作成してみました。
データベースの接続には、/app/config/database.phpの接続情報を利用しています。

ソースコード:mysqldump.php
/app/vendors/shells/mysqldump.php

PHP:
  1. class MysqldumpShell extends Shell
  2. {
  3.     // データベース設定ファイルの定義名
  4.     var $database_config = 'default';
  5.    
  6.     function dump(){
  7.         Configure::write('debug', 0);
  8.         App::import('Core', 'ConnectionManager');
  9.         $db =& ConnectionManager::getDataSource($this->database_config);
  10.        
  11.         // mmdd単位でログを作成
  12.         $path = TMP. sprintf('logs/mysqldump/dump_%s.gz', date('md'));
  13.         $cmd = sprintf("mysqldump -u %s --password='%s' %s --opt | gzip> %s"
  14.                 ,$db->config['login']
  15.                 ,$db->config['password']
  16.                 ,$db->config['database']
  17.                 ,$path);
  18.         system($cmd);
  19.     }
  20. }

利用時の注意点

1.バッチスクリプトは/app/vendors/shells/ディレクトリに配置します。
2.上記は/app/tmp/logs/mysqldump/ディレクトリにログファイルを生成しますので、ディレクトリへの書込み権限を事前に与えておく必要があります。
3.起動時のパスは/cake/console/cake になりますのでこのファイルに実行権限が必要です。

起動方法

CakePHPの本体が/var/www/cakephp/に配置されていた場合、

cd /var/www/cakephp; cake/console/cake mysqldump dump

または、

/var/www/cakephp/cake/console/cake mysqldump dump -app /var/www/cakephp/app

として実行します。
CakePHPのコマンドライン起動については公式マニュアルに詳細が記載されています。


The Cookbook 3.12 CakePHP コンソール

関連するその他の記事

Comments

Leave a Reply