SQL必知必会
陈旸
清华大学计算机博士
立即订阅
10179 人已学习
课程目录
已完结 49 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨SQL可能是你掌握的最有用的技能
免费
第一章:SQL语法基础篇 (19讲)
01丨了解SQL:一门半衰期很长的语言
02丨DBMS的前世今生
03丨学会用数据库的方式思考SQL是如何执行的
04丨使用DDL创建数据库&数据表时需要注意什么?
05丨检索数据:你还在SELECT * 么?
06丨数据过滤:SQL数据过滤都有哪些方法?
07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?
08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?
09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?
10丨常用的SQL标准有哪些,在SQL92中是如何使用连接的?
11丨SQL99是如何使用连接的,与SQL92的区别是什么?
12丨视图在SQL中的作用是什么,它是怎样工作的?
13丨什么是存储过程,在实际项目中用得多么?
14丨什么是事务处理,如何使用COMMIT和ROLLBACK进行操作?
15丨初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?
16丨游标:当我们需要逐条处理数据时,该怎么做?
17丨如何使用Python操作MySQL?
18丨SQLAlchemy:如何使用Python ORM框架来操作MySQL?
19丨基础篇总结:如何理解查询优化、通配符以及存储过程?
第二章:SQL性能优化篇 (18讲)
20丨当我们思考数据库调优的时候,都有哪些维度可以选择?
21丨范式设计:数据表的范式有哪些,3NF指的是什么?
22丨反范式设计:3NF有什么不足,为什么有时候需要反范式设计?
23丨索引的概览:用还是不用索引,这是一个问题
24丨索引的原理:我们为什么用B+树来做索引?
25丨Hash索引的底层原理是什么?
26丨索引的使用原则:如何通过索引让SQL查询效率最大化?
27丨从数据页的角度理解B+树查询
28丨从磁盘I/O的角度理解SQL查询的成本
29丨为什么没有理想的索引?
30丨锁:悲观锁和乐观锁是什么?
31丨为什么大部分RDBMS都会支持MVCC?
32丨查询优化器是如何工作的?
33丨如何使用性能分析工具定位SQL执行慢的原因?
34丨答疑篇:关于索引以及缓冲池的一些解惑
35丨数据库主从同步的作用是什么,如何解决数据不一致问题?
36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?
37丨SQL注入:你的SQL是如何被注入的?
第三章:认识DBMS (7讲)
38丨如何在Excel中使用SQL语言?
39丨WebSQL:如何在H5中存储一个本地数据库?
40丨SQLite:为什么微信用SQLite存储聊天记录?
41丨初识Redis:Redis为什么会这么快?
42丨如何使用Redis来实现多用户抢票问题
43丨如何使用Redis搭建玩家排行榜?
44丨DBMS篇总结和答疑:用SQLite做词云
第四章:SQL项目实战 (3讲)
45丨数据清洗:如何使用SQL对数据进行清洗?
46丨数据集成:如何对各种数据库进行集成和转换?
47丨如何利用SQL对零售数据进行分析?
结束语 (1讲)
结束语 | 互联网的下半场是数据驱动的时代
SQL必知必会
登录|注册

36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?

陈旸 2019-09-16
我们上节课讲解了 MySQL 的复制技术,通过主从同步可以实现读写分离,热备份,让服务器更加高可用。MySQL 的复制主要是通过 Binlog 来完成的,Binlog 记录了数据库更新的事件,从库 I/O 线程会向主库发送 Binlog 更新的请求,同时主库二进制转储线程会发送 Binlog 给从库作为中继日志进行保存,然后从库会通过中继日志重放,完成数据库的同步更新。这种同步操作是近乎实时的同步,然而也有人为误操作情况的发生,比如 DBA 人员为了方便直接在生产环境中对数据进行操作,或者忘记了当前是在开发环境,还是在生产环境中,就直接对数据库进行操作,这样很有可能会造成数据的丢失,情况严重时,误操作还有可能同步给从库实时更新。不过我们依然有一些策略可以防止这种误操作,比如利用延迟备份的机制。延迟备份最大的作用就是避免这种“手抖”的情况,让我们在延迟从库进行误操作前停止下来,进行数据库的恢复。
当然如果我们对数据库做过时间点备份,也可以直接恢复到该时间点。不过我们今天要讨论的是一个特殊的情况,也就是在没做数据库备份,没有开启使用 Binlog 的情况下,尽可能地找回数据。
今天的内容主要包括以下几个部分:
InnoDB 存储引擎中的表空间是怎样的?两种表空间存储方式各有哪些优缺点?
如果.ibd 文件损坏了,数据该如何找回?
如何模拟 InnoDB 文件的损坏与数据恢复?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《SQL必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • Monday
    开启innodb_force_recovery只能进行有限制的select操作,那后续的四步中,怎么还能再删除旧表?
    上网查的资料都是innodb_force_recovery>0时,可以select,create,drop但是不可以insert,update,delete。。。恨windows系统下安装的mysql没找到在哪里设置innodb_force_recovery的值,所以没验证。。。

    作者回复: 可能文件隐藏了,需要先将隐藏文件设置为课件,然后在C:\ProgramData\MySQL\MySQL Server 8.0中找到my.ini,然后再添加innodb_force_recovery数值

    2019-09-16
    2
  • 隰有荷
    老师,我在使用ibd文件进行数据恢复时,进入了my.cnf文件,
    然后设置了innodb_force_recovery = 1,再重新启动Mysql发现无法启动,然后在log里面看到下面这句话:
     [ERROR] /usr/sbin/mysqld: unknown variable 'innodb_force_recovery = 1

    我去网上搜索这个报错,但是目前没有发现好的解决办法,请问我该怎么样继续操作呢,即使无法获取数据,能获取原来的数据表结构也是好的,希望获取您的指导。
    2019-11-15
  • 爱思考的仙人球
    原来丢失数据连接这个错误是由于数据损坏造成的
    2019-10-25
  • Venom
    代码可不可以都放上来呀 少一句创建存储过程的语句也很麻烦的。。。
    2019-10-17
  • 空知
    如果 ibd文件损坏的数据在开头,那会都select不出来吗?
    2019-09-17
  • 许童童
    磁盘也是逻辑删除,只要文件还没有被覆盖写,也是可以通过物理的方式把数据找回来的。

    作者回复: 使得 可以使用恢复工具

    2019-09-16
  • 蒙开强
    老师,你好,那个存储引擎是可以针对表级设定的么

    作者回复: 对 MySQL中存储引擎是针对数据表的

    2019-09-16
    1
收起评论
7
返回
顶部