Mysql数据库备份恢复
【实验环境描述】
某学校近期在进行其中考试,要求数据库管理员负责一班、二班学生的考试成绩录入,为保证数据的可靠性,数据库管理员在录入学生成绩后均要做数据库备份,并且为了测试备份数据是否可用,模拟数据丢失故障,进行数据还原。
【需求描述】
在数据库表中,分三次录入期中考试成绩,具体的考试成绩信息分别参见表
一班学生成绩
姓名 班级 学号 语文 数学 英语 理综
张三 一班 20170822 110 105 92 235
李四 一班 20170820 95 115 110 260
王五 一班 20170818 95 103 108 270
赵六 一班 20170816 100 109 112 265
二班学生成绩(1)
姓名 班级 学号 语文 数学 英语 理综
李宁 二班 20170824 92 98 105 235
陈铭 二班 20170826 111 107 96 204
二班学生成绩(2)
姓名 班级 学号 语文 数学 英语 理综
付杰 二班 20170828 115 118 116 268
郭尚 二班 20170830 111 99 80 259
首次录入成绩后,做该表的完全备份,后两次成绩的录入之后,分别做增量备份
模拟数据丢失,并使用增量备份分别基于位置和时间点恢复一班所有学生成绩与二班陈铭与付杰的成绩
【推荐步骤】
- 创建数据库与表
- 分三次录入学生成绩,并在分别进行完全备份与增量备份
- 模拟数据丢失,进行数据恢复
【实验步骤】
1) 创建数据库 期中考试成绩
mysql> create database 期中考试成绩;
2) 创建student表
mysql> create table 期中考试成绩.student (姓名 char(3),班级 char(2),学号 char(9),语文 char(3),数学 char(3),英语 char(3),理综 char(3));
查看表结构
3)第一次录入学生成绩
查看表中数据
3) 做该表的完全备份
[root@centos02 ~]# mkdir /mysql-bak
[root@centos02 ~]# mysqldump -uroot -p 期中考试成绩 student >/mysql-bak/期中考试成绩_student.sql
查看备份文件
5)做增量备份
设置日志切割
[root@centos02 ~]# mysqladmin -uroot -p flush-logs
插入数据:
查看表数据
[root@centos02 ~]# mysqladmin -uroot -p flush-logs
查看日志文件:
备份增量信息
[root@centos02~]#cp /usr/local/mysql/data/mysql-bin.000004 /mysql-bak/
设置日志切割
[root@centos02 ~]# mysqladmin -uroot -p flush-logs
插入数据:
查看表数据
[root@centos02 ~]# mysqladmin -uroot -p flush-logs
查看日志文件:
备份增量信息
[root@centos02~]#cp /usr/local/mysql/data/mysql-bin.000006 /mysql-bak/
6)模拟表中数据损坏
7)基于位置恢复第二次插入数据
查看二进制文件具体内容
[root@centos02 ~]# mysqlbinlog --no-defaults /mysql-bak/mysql-bin.000004
恢复日志编号‘604’以前的数据
[root@centos02 ~]# mysqlbinlog --no-defaults --stop-position=‘604’ /mysql-bak/mysql-bin.000004 |mysql -uroot -p
验证:
8)基于时间恢复第三次输入数据