Php 使用CodeIgniter自动备份MySQL数据库

Php 使用CodeIgniter自动备份MySQL数据库,php,mysql,database,codeigniter,database-backups,Php,Mysql,Database,Codeigniter,Database Backups,我已经在Codeigniter项目上创建了一个备份选项。现在我想每天定时自动备份数据库 这是我的备份代码: function dbbackup(){ $this->load->dbutil(); $prefs = array( 'format' => 'zip', 'filename' => 'my_db_backup.sql' ); $backu

我已经在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
如果您使用的是live server,则可以在终端上使用以下命令打开cron表:

crontab -e
然后添加条目以制定适合您需要的计划,
crontab文件的每一行都有六个参数,它们的顺序如下:

  • 分钟(0至59)
  • 小时数(0至23)
  • 月日(1日至31日)
  • 月份(1至12)
  • 星期几(0-6)
  • 命令(要执行的命令)
例如:

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

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

php 'path/to/project/index.php' dbbackup
如果您使用的是live server,则可以在终端上使用以下命令打开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
class,
mysqldump
将比
dbutil
class更快更可靠

如果您阅读的源代码,您将了解它是如何影响性能的

举个例子,每天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

为什么不使用
crontab
mysqldump
在所需时间进行备份,实际上不需要使用
dbutil
类,
mysqldump
将比
dbutil
类更快更可靠

如果您阅读的源代码,您将了解它是如何影响性能的

举个例子,每天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


Save crontab

我使用live Server我使用live Server在uploads目录中保存备份文件是愚蠢的,如果它可以被公众访问,但是为什么brother@AkshayHegdeis如果有人窃取了你的网站数据就可以了?这就是为什么它不能被公众访问的原因,所以不要担心在uploads目录中保存备份文件是愚蠢的,如果它可以被公众访问,但是为什么@Akshayhegdei兄弟有人窃取你的网站数据可以吗?这就是为什么它不能被公众访问的原因,所以不用担心,所以我只是在我的代码底部添加以下代码,对吗?@Sabbir,你错了,这不是php代码,你必须在你的crontab中设置它,如果您不知道终端上有@Sabbir,请执行此命令
/usr/bin/mysqldump--user=user--password=password--databases DBNAME1 DBNAME2 | gzip>/home/someuser/backup.$(日期+%d_%m_%Y_%H_%m_%S”).sql.gz
并进行验证,但不要忘记替换用户名、密码、数据库名和备份location@Sabbir是的,你可以,没问题,它只会导出数据库,mysql会在导出时锁定表,如果您没有信心,请在其他具有小型数据库的机器上测试它,然后验证,
mysqldump
是标准工具。@Sabbir
30 14***
用于在crontab中进行调度,所以我只需在代码底部添加以下代码,是吗?@Sabbir,你搞错了,这不是php代码,你必须在你的crontab中设置它,如果你不知道终端上有@Sabbir,执行这个命令
/usr/bin/mysqldump--user=user--password=password--databases DBNAME1 DBNAME2 | gzip>/home/someuser/backup.$(date+%d_%m_%Y_%H_%m_%S”).sql.gz
并验证,但别忘了替换用户名、密码、数据库名和备份location@Sabbir,是的,你可以,没有问题,它只会导出数据库,mysql在导出时会锁定表,如果你没有信心,可以在其他有小数据库的机器上测试,然后验证,
mysqldump
是标准工具。@Sabbir
3014***
用于在crontab中调度