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

实验:备份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
    评论
数据库备份恢复是保护数据完整性和可恢复性的重要手段。以下是一些常见的数据库备份恢复方式: 1. 完全备份:完全备份是将整个数据库的数据和结构进行备份,包括表、索引、存储过程等。这是最基本的备份方式,能够提供最完整的数据恢复。 2. 增量备份:增量备份是只备份自上次完全备份或增量备份以来发生变化的数据。它可以减少备份的时间和存储空间,并提供相对较快的恢复速度。 3. 差异备份:差异备份是只备份自上次完全备份以来发生变化的数据。与增量备份不同的是,差异备份是相对于上次完全备份而言,而不是相对于上次备份。它可以提供相对较快的恢复速度,但备份文件相对较大。 4. 日志备份:日志备份是备份数据库事务日志,记录了数据库的变更操作。它可以用于增量或差异备份的恢复过程中,以保证数据的一致性。 5. 冷备份和热备份:冷备份是在数据库处于停机状态下进行的备份,热备份是在数据库运行状态下进行的备份。热备份能够提供实时的备份和恢复能力,但可能会对数据库性能产生一定影响。 6. 数据库复制和镜像:通过数据库复制和镜像技术,可以将数据库的副本放置在另一台或多台服务器上,实现数据的实时备份和故障恢复。 7. 定期测试和验证:进行定期的备份测试和验证,确保备份文件的完整性和可用性。这包括恢复测试、验证备份文件的正确性等。 请注意,备份策略应根据具体的业务需求和数据库系统进行定制。对于重要的生产环境,建议采用多重备份方式,并将备份数据存储在安全的位置,以确保数据的安全性和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值