乐趣区

透过 Crontab 排程备份 Mariadb (Mysql)使用 php + exec + mysqldump + gzip

本教学使用环境介绍伺服器端:Ubuntu 18.04 LTS 资料库:Mariadb 10.1.34(Mysql)语言版本:php 7.3 本机端:MacOS High Sierra
一开始原本是用 php 去备份资料库,但是发现会有一些问题,于是改成这种方式,直接透过 mysql 去备份,出来的格式也不会有什么问题。
$ crontab -e
设定每天凌晨 00:00 执行
0 0 * * * php /var/www/backup.php
backup.php 脚本记得开头一定要「<?php」,即便你有启用缩写
<?php
// 设定环境
header(‘Content-Type: text/html; charset=utf-8’);
date_default_timezone_set(‘Asia/Taipei’);

// 设定保存的资料夹位置
$dir = “/var/www/db/”;

// 设定档名
$filename = “dev-” . date(“Y-m-d-H-i-s”) . “.sql.gz”;

// 设定资料库
$db_host = “localhost”;
$db_username = “root”;
$db_password = “password”;
$db_database = “db”;

// 准备 cmd
$cmd = “mysqldump -h {$db_host} -u {$db_username} –password={$db_password} {$db_database} | gzip > {$dir}{$filename}”;

// 执行 cmd
exec($cmd);

header(“Content-type: application/octet-stream”);
header(“Content-Disposition: attachment; filename=\”$filename\””);

passthru(“cat {$dir}{$filename}”);
?>
输出时会经过 gzip 解压缩实验过原本 150MB 的 sql 压缩后为 28MB
Line ID:ianmacQQ:1258554508

退出移动版