cakephp3 シェルを使ってDBのバックアップをとる。
ここを参考に作成
mysqldumpメソッドの書き方
MysqldumpTask.php
private function execMysqldump()
{
$date = date('Ymd-His');
// env('DB_USERNAME')は、config/.envの環境変数を見にいっている。
$command = sprintf('mysqldump -u %s -p%s %s > %sbackup.sql',
env('DB_USERNAME'),
env('DB_PASSWORD'),
env('DB_SCHEMA'),
STORAGE.$date);
exec($command, $output, $result);
return $result;
}
config/defines.php
define('STORAGE', 'STORAGE/');
最初、env()の意味がわからず、中に直接DBのユーザー名やパスワードを書いていた。
実際は、config/.envファイルの環境変数を見にいくための書き方だった。
.envにこのように書き、別のファイルでenv('DB_USERNAME')と書くと、rootと表示される。
mysqldumpの書き方
mysqldump -u ユーザ名 -pパスワード DB名 > /出力先ディレクトリ/ファイル名
参考サイト:
https://www.searchlight8.com/mysql-dump/