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

一开始原本是用 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}";// 执行 cmdexec($cmd);header("Content-type: application/octet-stream");header("Content-Disposition: attachment; filename=\"$filename\"");passthru("cat {$dir}{$filename}");?>

输出时会经过 gzip 解压缩
实验过原本 150MB 的 sql 压缩后为 28MB

参考
https://ianakaberlin.medium.com/php-crontab-%E4%BD%BF%E7%94%A8-php-%E9%80%8F%E9%81%8E-crontab-%E6%8E%92%E7%A8%8B%E5%9B%BA%E5%AE%9A%E6%99%82%E9%96%93%E5%82%99%E4%BB%BD-mariadb%E4%B8%A6%E4%B8%94%E8%87%AA%E5%8B%95%E5%A3%93%E7%B8%AE-sql-9f35db2b7236


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章