加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

让物联网数据为您服务

发布时间:2021-01-30 16:38:36 所属栏目:传媒 来源:互联网
导读:记住! 记住! 记住! 上边这张图,她是MySQL更新数据的基础流程,其中包括redo log、bin log、undo log三种日志间的大致关系,好了闲话少说直奔主题。 redo log(重做日志) redo log属于MySQL存储引擎InnoDB的事务日志。 MySQL的数据是存放在磁盘中的,每次读写

记住! 记住! 记住! 上边这张图,她是MySQL更新数据的基础流程,其中包括redo log、bin log、undo log三种日志间的大致关系,好了闲话少说直奔主题。

redo log(重做日志)

redo log属于MySQL存储引擎InnoDB的事务日志。

MySQL的数据是存放在磁盘中的,每次读写数据都需做磁盘IO操作,如果并发场景下性能就会很差。为此MySQL提供了一个优化手段,引入缓存Buffer Pool。这个缓存中包含了磁盘中部分数据页(page)的映射,以此来缓解数据库的磁盘压力。

当从数据库读数据时,首先从缓存中读取,如果缓存中没有,则从磁盘读取后放入缓存;当向数据库写入数据时,先向缓存写入,此时缓存中的数据页数据变更,这个数据页称为脏页,Buffer Pool中修改完数据后会按照设定的更新策略,定期刷到磁盘中,这个过程称为刷脏页。

MySQL宕机

如果刷脏页还未完成,可MySQL由于某些原因宕机重启,此时Buffer Pool中修改的数据还没有及时的刷到磁盘中,就会导致数据丢失,无法保证事务的持久性。

为了解决这个问题引入了redo log,redo Log如其名侧重于重做!它记录的是数据库中每个页的修改,而不是某一行或某几行修改成怎样,可以用来恢复提交后的物理数据页,且只能恢复到最后一次提交的位置。

redo log用到了WAL(Write-Ahead Logging)技术,这个技术的核心就在于修改记录前,一定要先写日志,并保证日志先落盘,才能算事务提交完成。

有了redo log再修改数据时,InnoDB引擎会把更新记录先写在redo log中,在修改Buffer Pool中的数据,当提交事务时,调用fsync把redo log刷入磁盘。至于缓存中更新的数据文件何时刷入磁盘,则由后台线程异步处理。

注意:此时redo log的事务状态是prepare,还未真正提交成功,要等bin log日志写入磁盘完成才会变更为commit,事务才算真正提交完成。

这样一来即使刷脏页之前MySQL意外宕机也没关系,只要在重启时解析redo log中的更改记录进行重放,重新刷盘即可。

大小固定

redo log采用固定大小,循环写入的格式,当redo log写满之后,重新从头开始如此循环写,形成一个环状。

那为什么要如此设计呢?

因为redo log记录的是数据页上的修改,如果Buffer Pool中数据页已经刷磁盘后,那这些记录就失效了,新日志会将这些失效的记录进行覆盖擦除。
 

三、故障修复越来越难:网络复杂性增加、云化网络和传统网络并存等导致故障定位定界难度越来越大;

四、运维人才越来越缺:新人不愿进,老人想离开,ICT融合对运维技能要求越来越高,导致运维人才能力和数量出现断层;

五、业务体验要求越来越高:传统运维称为“被动运维”,网络出现告警、性能指标异常或用户投诉后才启动运维流程,这种方式响应速度慢,会影响用户体验,已无法适应对网络质量的稳定性要求极高的5G toB时代,需向“主动式运维”演进,即通过引入AI预测网络行为,实现在故障发生之前将网络隐患扼杀于萌芽状态。

机遇与挑战并存

听起来自动化是运营商解决网络和业务收入难题的灵丹妙药,但与任何一次变革一样,实现的道路上总是充满荆棘。

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读