- 一、实验目的
- 二、实验要求:
- 三、实验内容:
- Problem 1 查看状态
- Problem 2 表格数据备份和恢复
- Problem 3 使用mysqldump进行数据备份
- 1、备份整个Mysql所有数据库
- 2、备份某个数据库
- 3、备份某些table
- 4、导出表及结构
- 5、某些表除外其余表都需导出(只是导出结构)
- 6、恢复数据库或者表格数据
- 7、备份与恢复
- Problem 4 使用二进制日志进行备份和恢复
- Problem 5 请设计一个数据库恢复的综合实验
- 1、数据库example做一次完全备份;
- 2、 至少两个操作修改、insert或删除emp数据,然后做一次增量备份x;
- 3、 至少三个操作:修改某些数据op1、删除emp表格6号部门的所有数据op2、insert数据op3,然后再做一次增量备份x+1;
- 4、 现在假设操作3中的删除emp表格6号部门的所有数据op2是属于误操作,请设计备份和恢复方案并实现之。
E7 数据库备份和恢复 一、实验目的
在Mysql上,学习如何备份数据库和恢复的各种方法。
二、实验要求:1、基本硬件配置:英特尔Pentium III 以上,大于4G内存;
2、软件要求:Mysql;
3、时间:1小时;
4、撰写实验报告并按时提交。
show master status;
show variables like '%secure%';
my.ini中的secure-file-priv改为“”
select * into OUTFILe "e:\databases\data\test.sql" fields terminated by ',' lines terminated by ' ' from example.emp;
SET FOREIGN_KEY_CHECKS=0;
delete from emp;
load data infile "e:\databases\data\test.sql" into table example.emp fields terminated by ',' lines terminated by ' ';Problem 3 使用mysqldump进行数据备份 1、备份整个Mysql所有数据库
mysqldump -u root -p --all-databases --lock-all-tables > e:tempmysqldbs.sql
show master status;
create database test;
切换到e:
source e:/temp/mysqldbs.sql;
错误问题:
ERROR:
ASCII ‘ ’ appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII ‘ ’ is expected. Query: ‘ÿþ-’.
错误解决:
我是用powershell做的,出现了这个问题,我使用cmd就解决了这个问题,至于原因?不晓得hh
show master logs;
reset master;
flush logs;
show master logs;
show binlog events in 'binlog.000002';2、备份某个数据库
mysqldump -u root -p --databases example --lock-all-tables > e:\temp\example.sql
mysqldump -u root -p --databases example > e:\databases\data\example_1.sql.gz3、备份某些table
mysqldump -u root -p --databases example --tables emp > e:\temp\example_emp.sql
mysqldump -u root -p --databases example --tables emp dept > e:\temp\example_emp_dept.sql4、导出表及结构
mysqldump -u root -p -d --databases example --tables emp dept > e:\temp\example_struct.sql5、某些表除外其余表都需导出(只是导出结构)
mysqldump example -u root -p --tables dept > e:\temp\db_script.sql
mysqldump -u root -p --databases example --ignore-table=example.dept > e:\temp\example_1.sql6、恢复数据库或者表格数据
Source e:/temp/example_emp.sql;
source e:/temp/example_struct.sql;
flush logs;7、备份与恢复
mysqldump -u root -p --databases example --lock-all-tables > e:\temp\example.sql
show master logs;
改变数据
update emp set sal = 9999 where empno = 1;
flush logs;
改变数据
恢复:
source e:/temp/example.sql;
mysqlbinlog --no-defaults D:\MySQL\mysql-8.0.25-winx64\data\binlog.000002 | mysql -u root -pProblem 4 使用二进制日志进行备份和恢复
mysqldump -u root -p --databases example --lock-all-tables > e:\temp\example.sql
flush logs;
更新数据
insert into emp(empno) values(33);
show binlog events in 'binlog.000005'G;
flush logs;
更新数据
insert into emp(empno) values(34);
flush logs;(变为'binlog.000007')
show binlog events in 'binlog.000007'G;
source e:/temp/example.sql;
mysqlbinlog --no-defaults D:MySQLmysql-8.0.25-winx64databinlog.000006 | mysql -u root –p
mysqlbinlog --no-defaults D:MySQLmysql-8.0.25-winx64databinlog.000007 | mysql -u root –p
mysqlbinlog --no-defaults --stop-position=23425 D:MySQLmysql-8.0.25-winx64databinlog.000007 | mysql -u root -p
mysqlbinlog --no-defaults --start-position=23425 --stop-position=23456 D:MySQLmysql-8.0.25-winx64databinlog.000007 | mysql -u root -pProblem 5 请设计一个数据库恢复的综合实验
按次序完成以下功能:
1、数据库example做一次完全备份;mysqldump -u root -p --databases example --lock-all-tables > e:\temp\exampledb.sql2、 至少两个操作修改、insert或删除emp数据,然后做一次增量备份x;
insert into emp(empno) values(40);
delete from emp where empno = 23;
Flush logs;
Show master status;3、 至少三个操作:修改某些数据op1、删除emp表格6号部门的所有数据op2、insert数据op3,然后再做一次增量备份x+1;
SET FOREIGN_KEY_CHECKS=0;
delete from emp where deptno = 6;
insert into emp(empno) values(44);
Flush logs; show master status;4、 现在假设操作3中的删除emp表格6号部门的所有数据op2是属于误操作,请设计备份和恢复方案并实现之。
show binlog events in 'binlog.000010'G;
可以看到删除的部分是从448到1656所以我们跳过这一段就可以了
mysqlbinlog --no-defaults D:MySQLmysql-8.0.25-winx64databinlog.000009 | mysql -u root -p
tips:这里为什么是9是因为之前误操作了一下,导致多+1了,不过问题不大,大家能理解就行.QAQ
mysqlbinlog --no-defaults --start-position=4 --stop-position=448 D:MySQLmysql-8.0.25-winx64databinlog.000010 | mysql -u root -p
mysqlbinlog --no-defaults --start-position=1656 --stop-position=2094 D:MySQLmysql-8.0.25-winx64databinlog.000010 | mysql -u root -p
use example;
select * from emp;
可见成功将误操作的删除给还原了.



