猿问

使用 CodeIgniter 自动备份 MySQL 数据库

我在 Codeigniter 项目上创建了一个备份选项。现在我想每天固定时间自动备份数据库。


这是我的备用代码:


function dbbackup(){

    $this->load->dbutil();

    $prefs = array(     

        'format'      => 'zip',             

        'filename'    => 'my_db_backup.sql'

        );


    $backup =& $this->dbutil->backup($prefs); 

    $db_name = "backup_on_" . date("d_m_Y_h_i_s_a") . ".zip";

    $save = 'uploads/dbbackup/'.$db_file_name;

    $this->load->helper('file');

    write_file($save, $backup); 

    $this->load->helper('download');

    force_download($db_name, $backup);

}

是否有任何特定的查询可以自动备份?


GCT1015
浏览 230回答 2
2回答

月关宝盒

如果你有它在一个实时服务器上,你可以设置一个 cron 作业来调用 php 文件。如果要在本地进行设置,则可以使用相应操作系统的任务调度程序之类的东西来调用 php 脚本,然后将 url 作为参数。或者您可以创建一个bat文件并将其添加到调度程序中,其中包含以下内容:php 'path/to/project/index.php' dbbackup如果您使用的是实时服务器,您可以在终端上使用以下命令打开 cron 表:crontab -e然后添加一个条目来制定一个适合您需要的计划,crontab 文件的每一行都有六个参数,它们依次是:分钟(0 到 59)小时(0 到 23)一个月中的某天(1 到 31)月(1 至 12)星期几(0 - 6)命令(要执行的命令)例子 :0 13 * * * php [application_path]/index.php dbbackup

白衣染霜花

你为什么不直接使用crontab并mysqldump在需要的时间进行备份,实际上不需要使用dbutil类,与类mysqldump相比会更快更可靠dbutil。如果您阅读mysqli_utility, _backupmethod的源代码,您将了解它如何影响性能。举个例子,每天备份 14:30crontab -e像下面这样输入30 14 * * * /usr/bin/mysqldump --user=USER --password=PASSWORD --databases DBNAME1 DBNAME2 | gzip > /home/someuser/backup.$(date +"%d_%m_%Y_%H_%M_%S").sql.gz保存 crontab
随时随地看视频慕课网APP
我要回答