用户
 找回密码
 入住 CI 中国社区
搜索
123
返回列表 发新帖
楼主: jeongee
收起左侧

[讨论/交流] CI数据库备份与还原入门小例子

  [复制链接]
发表于 2013-1-14 10:40:06 | 显示全部楼层
非常好,利用CI提供的数据库备份工具之后,使用CI的模型进行还原时出现各种问题,这个问题困扰了许久,也尝试过各种办法,分解SQL,利用query一条一条的执行等等,但没想到问题处在注释部分,利用你给出的正则表达式取出注释部分,完美解决了还原问题
发表于 2013-1-14 14:25:28 | 显示全部楼层
我用的是crontab 定时执行 mysqlback ,两种方法,那种更优
发表于 2013-1-15 11:27:02 | 显示全部楼层
不错啊
发表于 2017-6-12 14:06:47 | 显示全部楼层
PHP复制代码
 
case 'add':
                //生成数据库备份
                $this->load->helper('string');
                $this->load->dbutil();
                $prefs = array(
                    'ignore'    => array($this->db->dbprefix('ci_sessions')),
                    'format'    => 'txt'
                );
                $backup = $this->dbutil->backup($prefs);
                $this->load->helper('file');
                write_file($bak_dir.$this->db->database.'_'.date('Ymd').'_'.random_string('alnum', 8).'.sql', $backup);
                $data['mes']="备份成功!";
                $data['backurl']= base_url('/set/backup');
                $this->load->view('templates/note',$data);
                break;
            case 'recover':   //恢复指定数据库
                    $this->load->helper('file');
                    $this->load->helper('string');
                    $file = $bak_dir.$id; //.sql文件实际地址
                    //数据库信息
                    $host = $this->db->hostname;
                    $user = $this->db->username;
                    $pwd  = $this->db->password;
                    $db   = $this->db->database;
 
                    $string = read_file($file);
                    $mysqli = new mysqli($host,$user,$pwd,$db);
                    $mysqli->set_charset("utf8");
                    $result = $mysqli->multi_query($string);
                    $mysqli->close();
                    if($result){
                        $data['mes']="数据库恢复成功!";
                    } else{
                        $data['mes']="数据库恢复失败!";
                    }
                    $data['backurl']= base_url('/set/backup');
                    $this->load->view('templates/note',$data);
                break;
 
复制代码
发表于 2017-6-12 14:08:56 | 显示全部楼层
发表于 2017-6-14 16:10:49 | 显示全部楼层
如何备份指定的数据库了?
发表于 2017-6-14 16:14:07 | 显示全部楼层
上面的方法,只是备份默认的数据库test,如何备份需要指定的数据库了?
发表于 2017-6-16 09:24:56 | 显示全部楼层
豪气东来 发表于 2017-6-14 16:14
上面的方法,只是备份默认的数据库test,如何备份需要指定的数据库了?

$mysqli = new mysqli($host,$user,$pwd,$db);
将这几个参数改成你要备份的数据库相关信息就好了

本版积分规则