数据库备份恢复的各种方式

实验:备份mysql数据库

  1. 冷备份
    1) 停止服务
    [root@centos01 ~]# systemctl stop mysq 在这里插入图片描述
    2) 备份数据
    [root@centos01 ~]#mkdir /backup
    [root@centos01 ~]# tar zcf /backup/mysql_backup-$(date +%F).tar.gz /usr/local/mysql/data/
    tar: 从成员名中删除开头的“/” ··········
    在这里插入图片描述
    在这里插入图片描述
    3) 模拟数据库丢失
    [root@centos01 ~]# mv /usr/local/mysql/data/ /opt/ 剪切
    在这里插入图片描述
    4) 恢复数据
    [root@centos01 ~]#mkdir restore 创建目录
    [root@centos01 ~]# tar zxf /backup/mysql_backup-2020-06-22.tar.gz -C ./restore
    [root@centos01 ~]# mv ./restore/usr/local/mysql/data/ /usr/local/mysql 剪切
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5) 重启服务
    systemctl start mysql
    在这里插入图片描述
  2. 使用mysqldump备份恢复数据库
    实验案例:完整备份和增量备份与恢复
    实验环境
    莫学校近期在进行期中考试,要求数据库管理员负责一班,二班学生的考试成绩录入。为保证数据的可靠性,数据库管理员在录入学生成绩后均要做数据库备份,并且为了测试备份数据是否可用,模拟数据丢失故障,进行数据还原。
    需求描述
    在数据库表中,分三次录入学生考试成绩,具体的考试成绩信息分别参见表1~3
    表1 一班学生成绩
    姓名 班级 学号 语文 数学 英语 理综
    张三 一班 20170822 110 105 92 235
    李四 一班 20170820 95 115 110 260
    王五 一班 20170818 95 103 108 270
    赵六 一班 20170816 100 109 112 265
    表2 二班学生成绩(1)
    姓名 班级 学号 语文 数学 英语 理综
    李宁 二班 20170824 92 98 105 235
    陈铭 二班 20170826 111 107 96 204
    表3 二班学生成绩(2)
    姓名 班级 学号 语文 数学 英语 理综
    付杰 二班 20170828 115 118 116 268
    郭尚 二班 20170830 111 99 80 259
    首次录入成绩后,做该表的完全备份,后两次成绩的录入之后,分别做增量备份。
    模拟数据丢失,并使用增量备份分别基于位置和时间点恢复一班所有学生成绩与二班陈铭
  3. 创建数据库与表
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ’create database benet;’ 创建数据库’
    在这里插入图片描述
    [root@centos01 ~]# mysql -u root -ppwd@123 -e 'create table benet. student (姓名 char(5),班级 char(10),学号 char(10),语文 int,数学 int,英语 int,理综 int,primary key (学号));’ 创建表
    在这里插入图片描述
  4. 分三次录入学生成绩,并在分别进行完整备份和增量备份。
    1)完整备份恢复
    录入一班成绩查看并完整备份
    Mysql> Insert into benet.student values (‘’.’’.’’.’’.’’.’’.’*’); *代表插入的数据在这里插入图片描述
    备份表
    [root@centos01 ~]# mysqldump -u root -p benet student > benet_table_student.sql
    在这里插入图片描述
    备份库
    [root@centos01 ~]# mysqldump -u root -p --database benet > database_benet.sql
    在这里插入图片描述
    备份所有库
    [root@centos01 ~]# mysqldump -u root -p --opt --all-database > all_database.sql
    在这里插入图片描述
    故障恢复表
    模拟故障
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘delete from benet.student;’ 删除表
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘select * from benet.student;’ 查看
    在这里插入图片描述
    恢复验证
    [root@centos01 ~]# mysql -u root -p benet <./benet_table_student.sql 恢复表
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘select * from benet.student;’ 查看
    在这里插入图片描述
    故障恢复库
    模拟故障
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘drop database benet;’ 删除benet
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘show databases’ 查看库
    在这里插入图片描述
    创建空库并恢复
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘create database benet;’ 创建benet
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘show databases’ 查看
    [root@centos01 ~]# mysql -u root -p benet < ./database_benet.sql 恢复到benet
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘select * from benet.student;’ 查看表内容是否恢复
    在这里插入图片描述
    所有库故障恢复
    模拟故障
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘drop database benet;’
    在这里插入图片描述
    恢复
    [root@centos01 ~]# mysql -u root -p < ./all_databases.sql 恢复所有数据库
    [外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblog.csdnimhn/TpcK20201009095828224.png#pic_center9(https://img-blog.csdnimg.cn/20201009095828224.png#pic_center)]
    验证
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘select * from benet.student;’
    在这里插入图片描述
    2)增量备份恢复
    开启mysql二进制日志功能 (源代码安装默认已开启不用管)
    [root@centos01 ~]# vim /etc/my.cnf 进入
    49 log-bin=mysql-bin 开启功能
    在这里插入图片描述
    在这里插入图片描述
    保存的默认位置
    [root@centos01 ~]# ls /usr/local/mysql/data/
    在这里插入图片描述
    查看二进制日志文件
    [root@centos01 ~]# mysqlbinlog /usr/local/mysql/data/mysql-bin.000005
    在这里插入图片描述
    配置二进制切割 刷新二进制日志
    [root@centos01 ~]# mysqladmin -u root -ppwd@123 flush-logs
    在这里插入图片描述
    一般故障恢复
    插入新数据
    在这里插入图片描述
    在这里插入图片描述
    切割日志进行刷新
    [root@centos01 ~]# mysqladmin -u root -ppwd@123 flush-logs
    在这里插入图片描述
    查看最新日志文件
    [root@centos01 ~]# mysqlbinlog /usr/local/mysql/data/mysql-bin.000006
    在这里插入图片描述
    备份二进制文件到当下目录
    [root@centos01 ~]# cp /usr/local/mysql/data/mysql-bin.000006 ./
    在这里插入图片描述
    模拟故障删除benet
    在这里插入图片描述
    恢复完整备份数据但新数据没有
    在这里插入图片描述
    使用二进制文件恢复增量备份数据
    [root@centos01 ~]# mysqlbinlog --no-defaults mysql-bin.000006 | mysql -u root -ppwd@123
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ''select * from benet.student;
    在这里插入图片描述
    基于位置恢复
    模拟故障
    在这里插入图片描述
    恢复完整备份
    在这里插入图片描述
    新数据使用二进制日志恢复
  1. 开始到指定(只恢复李宁)查看日志文件
    在这里插入图片描述
    [root@centos01 ~]# mysqlbinlog --stop-position=‘405’ ./mysql-bin.000006 | mysql -u root -ppwd@123
    在这里插入图片描述
    验证
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘select * from benet.student;’
    在这里插入图片描述
  2. 指定到结束(只恢复陈铭)
    在这里插入图片描述
    恢复验证
    [root@centos01 ~]# mysqlbinlog --start-position=‘405’ ./mysql-bin.000006 | mysql -u root -ppwd@123
    [root@centos01 ~]# mysql -u root -ppwd@123 -e ‘select * from benet.student;’
    在这里插入图片描述
    基于时间恢复
    一样是模拟故障
    恢复完整备份数据
    使用二进制恢复新数据基于时间
    在这里插入图片描述
    开始到指定
    在这里插入图片描述
    [root@centos01 ~]# mysqlbinlog --stop-datetime=‘2020-06-23 22:08:35’ ./mysql-bin.000006 | mysql -u root -ppwd@123
    在这里插入图片描述
    指定到结束
    [root@centos01 ~]# mysqlbinlog --start-datetime=‘2020-06-23 22:08:35’ ./mysql-bin.000006 | mysql -u root -ppwd@123
    在这里插入图片描述
    指定到指定
    在这里插入图片描述
    [root@centos01 ~]# mysqlbinlog --start-datetime=‘2020-06-23 22:07:57’ --stop-datetime=‘2020-06-23 22:11:37’ ./mysql-bin.000006 | mysql -u root -ppwd@123
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值