問題 × 解決策

mysqldumpで圧縮を合わせて行う方法

  • 2020年11月25日
  • PHP

問題

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);
	}
}

参考ページ

以下のサイトが、より詳しく解説してくれています。

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2 × four =

「問題 × 解決策」
月別アーカイブ一覧

「問題 × 解決策」
月別アーカイブ一覧