志在指尖
用双手敲打未来

数据库备份(及恢复步骤方式有哪些)

数据库备份

第一种:运用mysqldump结合exec函数进行数据库备份操作。
代码如下:
/**
*Subject:php-mysql实现数据库备份.
*User:luokakale
*Date:2018/11/9
*Time:13:31*/header(‘Content-Type:text/html;charset=utf8’);ini_set(“max_execution_time”,”0″);//代码运转时刻不约束避免备份失败ini_set(‘memory_limit’,’128M’);//设置内存根据需求能够修正date_default_timezone_set(“PRC”);//创建需要保存sql文件的文件夹$path=’D:\SQL\databse_backup’;//定义数据库配置$user=”;//数据库账户$pwd=”;//数据库密码$dbname=”;//数据库名称
//备份数据库指令地址文件$sqladdress=’D:\phpStudy\MySQL\bin\mysqldump.exe’;//备份指定地址$time=time();$path=’D:\SQL\databse_backup’.’\\’.date(“Ymd”,$time);if(!file_exists($path))
{mkdir($path,0777,true);
}//备份的数据库文件名$sqlFile=$dbname.”_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%.sql”;//判别是否存在密码$password=$pwd==”?”:’-p’.$pwd;//拼接备份指令$order=$sqladdress.’–opt-u’.$user.$password.”.$dbname.’>’.$path.’\\’.$sqlFile;//执行指令exec($order);
仿制代码
我运用的是集成的phpstudy里边的mysql下面的mysqldump.exe来备份,备份的数据库姓名写法是数据库姓名+年月日时.上面代码中我对数据库密码进行了判别,我这边有些数据库是不需要密码的。最终运用exec执行指令。
第二种:运用php+mysql+header函数进行数据库备份和下载操作。
代码如下:
header(‘Content-Type:text/html;charset=utf8’);ini_set(“max_execution_time”,”0″);//代码运转时刻不约束避免备份失败ini_set(‘memory_limit’,’1024M’);//设置内存根据需求能够修正date_default_timezone_set(“PRC”);header(“Content-Type:text/html;charset=utf-8″);$host=””;$user=””;//账户$password=””;//密码$dbname=””;//数据库名称$con=mysqli_connect(“$host”,”$user”,”$password”,”$dbname”);mysqli_select_db($con,$dbname);$mysql=”setcharsetutf8;\r\n”;#formysql>=5.0mysqli_query($con,”SETNAMES’UTF8′”);$q1=mysqli_query($con,”showtables”);while($t=mysqli_fetch_array($q1)){$table=$t[0];$q2=mysqli_query($con,”showcreatetable`$table`”);$sql=mysqli_fetch_array($q2);$mysql.=$sql[‘CreateTable’].”;\r\n\r\n”;#DDL$q3=mysqli_query($con,”select*from`$table`”);while($data=mysqli_fetch_assoc($q3))
{$keys=array_keys($data);$keys=array_map(‘addslashes’,$keys);$keys=join(‘`,`’,$keys);$keys=”`”.$keys.”`”;$vals=array_values($data);$vals=array_map(‘addslashes’,$vals);$vals=join(“‘,'”,$vals);$vals=”‘”.$vals.”‘”;$mysql.=”insertinto`$table`($keys)values($vals);\r\n”;unset($data);
}$mysql.=”\r\n”;unset($t);
}mysqli_close($con);$filename=date(‘Ymj’).”.sql”;//文件名为当天的日期$time=time();$path=’D:\SQL\databse_backup’.’\\’.date(“Ymd”,$time).’\\’;//查看目录是否存在if(!is_dir($path)){//新建目录mkdir($path,0777,true);
}$file_name=$path.$filename;$fp=fopen($file_name,’w’);fputs($fp,$mysql);fclose($fp);$fp=fopen($file_name,”r”);$file_size=filesize($file_name);header(“Content-type:application/octet-stream”);header(“Accept-Ranges:bytes”);header(“Accept-Length:”.$file_size);header(“Content-Disposition:attachment;filename=”.$filename);//这儿一定要运用echo进行输出,不然下载的文家是空白的echofread($fp,$file_size);fclose($fp);exit;sql

数据库备份及恢复步骤方式有哪些

*数据库备份的几种方法的具体过程
怎么冷备??
1.确保2台机器上软件版别共同,最好装置版别也共同
A:原机B:康复机
关于原机:
2.将mysql数据库封闭
servicemysqldstop
3.scp拷贝到要进行康复的机器上
scp-r/usr/local/mysql/data/root@172.16.11.33:/usr/local/mysql/data/数据库备份的几种方法的具体过程
怎么冷备??
1.确保2台机器上软件版别共同,最好装置版别也共同
A:原机B:康复机
关于原机:
2.将mysql数据库封闭
servicemysqldstop
3.scp拷贝到要进行康复的机器上
scp-r/usr/local/mysql/data/root@172.16.11.33:/usr/local/mysql/data/数据库备份的几种方法的具体过程
怎么冷备??
1.确保2台机器上软件版别共同,最好装置版别也共同
A:原机B:康复机
关于原机:
2.将mysql数据库封闭
servicemysqldstop
3.scp拷贝到要进行康复的机器上
scp-r/usr/local/mysql/data/root@172.16.11.33:/usr/local/mysql/data/
4.能够正常发动mysql数据库
关于康复机
5.将mysql数据库封闭
6.留意data目录的mysql权限7.发动mysql数据库备份完结
运用mysqldump进行逻辑备份
1.检查mysqldump的运用格局2.在运用mysqldump之前需要在my.cnf配置文件里指定socket文件,不然会报错3.能够运用mysqldump进行逻辑备份4.检查生成的两个文件
(1)catceshi.sql//检查建表句子的文件(2)catceshi.txt//检查表中数据的文件用于导入数据
5.当时完结了对ceshi库的ceshi表进行了备份
6.模拟康复,将ceshi库的ceshi表删去(drop),然后康复
7.导入建表句子,也就是ceshi.sql8.导入完之后,返回数据库检查,ceshi库中的ceshi表已经建好,但是表中没有数据9.导入数据
导入数据有两种方法
mysqlimport-uroot-p123ceshi/tmp/ceshi.txt(留意运用绝对路径)或者
mysql>loaddatainfile‘/tmp/ceshi.txt’intotableceshi;
(1)运用mysqlimport同样的需要在my.cnf配置文件中进行配置mysqlimport-uroot-p123ceshi/tmp/ceshi.txt(留意运用绝对路径进入ceshi表检查数据是否存在(2)运用loaddata导入数据怎么进行逻辑备份
举例:经典用法
mysqldump-uroot-p123-l-F–single-transactionceshi>ceshi.sql
-l:锁住myisam,不锁innodb
-F:改写binlog,康复的时候就能够直接运用新binlog开端康复
–single-transaction:innodb不锁表和行
这个句子的意义是将ceshi库中的一切的建表句子,以及插入数据的句子等存放到ceshi.sql中
当康复时,发现表结构康复,表数据康复
运用xtrabackup进行热备
1.首先上传xtraback软件包进行xtrabackup的装置2.装置完结之后能够运用innobackupex敲两下tab验证
3.装置好之后进行物理全备
(1)创建备份目录(2)备份数据库(全备)备份到刚创建的备份目录
[root@fuxi1~]#innobackupex–user=root–password=123/backup/当呈现19061900:09:12completedOK!说明备份成功(3)当你开端从九点备份,备份持续了一个小时,xtrabackup东西会记录了你这一段时间的redo日志,这也是xtrabackup备份不是备份到开端时间,而是备份到完毕时间。应用redo日志,将这一个小时又发生改动的数据完结备份
(4)应用redo(自带回滚)
应用redo时有添加redo-only(只前滚不回滚)的选项和不添加redo-only的选项,两者的差异在于有一个优化的差异,但不影响数据的共同性
[root@fuxi1~]#innobackupex–apply-log/backup/2019-06-19_00-09-07/完结后也会有时间戳等的提示(5)封闭数据库
servicemysqldstop
4.康复演示
(1)为了稳妥起见,先对mysql配置文件进行下仿制备份(2)将数据目录(datadir)清空(3)康复数据库
[root@fuxi1data]#innobackupex–copy-back/backup/2019-06-19_00-09-07/(4)修改数据目录的权限(5)掩盖my.cnf配置文件默许运用的my.cnf不用掩盖
(6)发动数据库
(7)检查端口有没有发动成功
(8)进入数据库检查数据是否康复

未经允许不得转载:IT技术网站 » 数据库备份(及恢复步骤方式有哪些)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载