問題
mysqldumpで圧縮を合わせて行うには?
解決策
「"mysqldump ".$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." | gzip > ".$filePath.$fileName」というように「| gzip」を入れたコマンドでmysqldumpを実行することで、gzipに圧縮したsqlファイルを取得することができます。
容量の大きいデータベースに対する対策
phpのmysqldumpで、容量の大きいデータベースに対する対策として、圧縮を合わせて行う方法をご紹介します。
「mysqldump」のコマンドに「| gzip」を入れる。
「mysqldump」のコマンドに「| gzip」を入れることで、sqlファイルをgzipに圧縮して取得することができます。
$command = "mysqldump ".$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." | gzip > ".$filePath.$fileName;
記述例
$dbHost = "MySQLのホスト名";
$dbUser = "MySQLのユーザー名";
$dbPass = "MySQLのパスワード";
$dbc= mysqli_connect($dbHost, $dbUser, $dbPass);
if(!$dbc){
// MySQLに接続できなかったら
die("MySQL接続失敗: ".mysql_error());
}else{
// MySQLに接続できたら
$res = mysqli_query($dbc,"SHOW DATABASES");
$folderPath = "フォルダパス";
$filePath = $folderPath."date".date('ymd').'_'.date('His').'/';
mkdir($filePath, 0755);
while ($row = mysqli_fetch_assoc($res)) {
$fileName = $row['Database'].'_'.date('ymd').'_'.date('His').'.gz';
$dbName = $row['Database'];
$command = "mysqldump ".$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." | gzip > ".$filePath.$fileName;
system($command);
}
}
参考ページ
以下のサイトが、より詳しく解説してくれています。
コメント