使用CodeIgniter备份MySQL数据库

mut*_*ebm 9 php mysql database codeigniter

我一直在研究CodeIgniter附带的用户指南.我对这个dbutil()方法很感兴趣.特别是以下代码行:

// Load the DB utility class
$this->load->dbutil();

// Backup your entire database and assign it to a variable
$backup =& $this->dbutil->backup(); 

// Load the file helper and write the file to your server
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup); 

// Load the download helper and send the file to your desktop
$this->load->helper('download');
force_download('mybackup.gz', $backup); 
Run Code Online (Sandbox Code Playgroud)

它应该备份当前加载的MySQL数据库.但不幸的是,它不起作用,我收到以下消息:

遇到PHP错误

严重性:注意

消息:未定义的属性:CI_Loader :: $ dbutil

文件名:views/view.php

行号:10

致命错误:在第10行的C:\ xampp\htdocs\CodeIgniter\application\views\view.php中的非对象上调用成员函数backup()

我在这里错过了什么?任何帮助将非常感激.

Sal*_*eem 24

试试这个,你可以改变格式zip到gz如果你喜欢:)

$this->load->dbutil();

$prefs = array(     
    'format'      => 'zip',             
    'filename'    => 'my_db_backup.sql'
    );


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

$db_name = 'backup-on-'. date("Y-m-d-H-i-s") .'.zip';
$save = 'pathtobkfolder/'.$db_name;

$this->load->helper('file');
write_file($save, $backup); 


$this->load->helper('download');
force_download($db_name, $backup);
Run Code Online (Sandbox Code Playgroud)


Nik*_*ams 7

使用php执行此操作仅适用于非常小的数据库.如果增加其他性能问题,您将很快遇到内存限制.

最好的方法是使用mysqldump创建转储:

header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="dbbackup.sql.gz"');
passthru("mysqldump --user=xx --host=xx --password=xx dbname | gzip");
Run Code Online (Sandbox Code Playgroud)

当然,你必须拥有所需的权限才能做到这一点.


小智 5

//load helpers

$this->load->helper('file');
$this->load->helper('download');
$this->load->library('zip');

//load database
$this->load->dbutil();

//create format
$db_format=array('format'=>'zip','filename'=>'backup.sql');

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

// file name

$dbname='backup-on-'.date('d-m-y H:i').'.zip';
$save='assets/db_backup/'.$dbname;

// write file

write_file($save,$backup);

// and force download
force_download($dbname,$backup);
Run Code Online (Sandbox Code Playgroud)