Php 使用CodeIgniter自动备份MySQL数据库
我已经在Codeigniter项目上创建了一个备份选项。现在我想每天定时自动备份数据库 这是我的备份代码: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
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
是标准工具。@Sabbir30 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
是标准工具。@Sabbir3014***
用于在crontab中调度