使用 CodeIgniter 自动备份 MySQL 数据库

Auto Backup MySQL database with CodeIgniter

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

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

如果您在实时服务器上有它,您可以设置一个 cron 作业来调用 php 文件。如果你想在本地设置它,那么你可以使用相应操作系统的任务调度程序之类的东西来调用 php 脚本,然后是 url 作为参数。或者您可以创建一个 bat 文件并将其添加到调度程序中,其中包含如下内容:

php 'path/to/project/index.php' dbbackup

如果您使用实时服务器,您可以在终端上使用此命令打开 cron table:

crontab -e

然后添加条目以制定适合您需要的时间表,
crontab 文件的每一行都有六个参数,顺序是:

  • 分钟(0 到 59)
  • 小时(0 到 23)
  • 一个月中的第几天(1 到 31)
  • 月(1 到 12)
  • 星期几 (0 – 6)
  • command(要执行的命令)

示例:

0 13 * * * php [application_path]/index.php dbbackup

为什么不用crontabmysqldump在需要的时候备份,其实没必要用dbutilclass,[=与 dbutil class.

相比,13=] 会更快更可靠

如果您阅读 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