使用CodeIgniter自动备份MySQL数据库

时间:2019-09-23 06:25:08

标签: php mysql database codeigniter database-backups

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

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

2 个答案:

答案 0 :(得分:2)

为什么不只使用crontabmysqldump在需要的时间进行备份,实际上并不需要使用dbutil类,mysqldump会更快和dbutil类比较可靠。

如果您阅读mysqli_utility, _backup method的源代码,就会了解它如何影响性能。

举例说明每天在14:30进行备份

crontab -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

答案 1 :(得分:0)

如果您将其安装在实时服务器上,则可以设置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