如何掌握MySQL中的双写

分类:编程技术 时间:2024-02-20 15:48 浏览:0 评论:0
0
本文介绍了《如何掌握MySQL双写》的相关知识。在实际案例操作过程中,很多人都会遇到这样的困境。接下来就让小编带领大家学习一下如何处理这些情况。酒吧!我希望你能仔细阅读并学到一些东西!

在介绍double write之前,我们需要先了解一下部分页写入问题:
InnoDB Page Size 一般是 16KB,它的数据验证也是根据这个 16KB 来计算的。将数据写入磁盘是以页为单位执行的。计算机硬件和操作系统在极端情况下(比如断电)往往无法保证这个操作的原子性。当16K数据写入4K时,出现系统断电/操作系统崩溃,仅部分写入成功。是的,在这种情况下是部分页面写入问题。
很多DBA会认为系统恢复后,MySQL就可以了根据重做日志恢复。在恢复过程中,MySQL会检查页面的校验和。校验和是pgae的最后一笔交易号。当发生部分页写入问题时,该页已经损坏。 ,如果页面中找不到交易号,则无法恢复。

什么是双写?
双写是InnoDB在表空间上的128页(2个区域),即2MB;
原理:
为了解决部分页写问题,当mysql将脏数据flush到数据文件这样做时,首先使用memcopy将脏数据复制到内存中的双写缓冲区中,然后通过双写缓冲区分为两次,每次写入1MB到共享表空间,然后立即调用fsync函数将其同步到磁盘,以避免缓冲带来的问题,在这个过程中,doublewrite是顺序写入的,开销并不大。双写完成后,将双写缓冲区写入每个表空间文件。这是离散写作。
如果出现极端情况(断电),InnoDB再次启动后,发现某个Page数据已经损坏,那么此时可以从doublewrite buffer中恢复数据。


双写的缺点是什么?
位于共享表空间上的双写缓冲区实际上是一个文件。写入DWB会导致系统有更多的fsync操作。 ,以及硬盘的fsync性能,所以会降低mysql的整体性能。但不会减少到原来的50%。这主要是因为:
1)双写是连接的存储空间,因此硬盘在写入数据时是顺序写入,而不是随机写入,因此性能更高。
2)当从双写缓冲区向真实段写入数据时,系统会自动合并连接空间刷新方法。可以引用多个页面一次性刷新;恢复期间双写如何工作?
如果有部分页面写入双写缓冲区本身,原始页面仍将位于磁盘上的实际位置。-
--如果写入双写缓冲区本身出现故障,数据不会写入磁盘。 InnoDB此时会从磁盘加载原始数据,然后通过InnoDB事务日志计算出正确的数据并重写。
当InnoDB恢复时,它将使用原始页面而不是双写缓冲区中损坏的副本。但是,如果双写缓冲区成功并且写入页面实际位置失败,InnoDB将在恢复期间使用双写缓冲区中的副本。
--如果doublewrite buffer写入成功但写入磁盘失败,InnoDB不需要通过事务日志计算,而是直接使用buffer数据重新写入。
InnoDB知道什么时候a 页面已损坏 b因为每页末尾都有一个校验和;校验和是最后写入的内容,因此如果页面的内容与校验和不匹配,则该页面已损坏。因此,恢复后,InnoDB 仅读取双写缓冲区中的每个页面并验证校验和。如果某个页面的校验和不正确,则从其原始位置读取该页面。
--恢复时,InnoDB 直接比较该页面的校验和。如果错误,则从硬盘加载原始数据,然后从事务日志中推导出正确的数据。因此,InnoDB的恢复通常需要很长时间。 4.我们一定需要双写吗?
在某些情况下,双写缓冲区确实没有必要——例如,您可能想在从属设备上禁用它。另外,某些文件系统(例如 ZFS)本身也做同样的事情,因此 InnoDB 这样做是多余的。您可以通过将 InnoDB_doublewrite 设置为 0 来禁用双写缓冲区。

5 如何使用双写
InnoDB_doublewrite=1表示启动double write
show status like 'InnoDB_dblwr%'可以查询double write的使用情况;
相关参数及状态
double write的使用情况:
show status like "%InnoDB_dblwr%";InnoDB_dblwr_pages_writing 从bp刷新到DBWB的页数
InnoDB_dblwr_writes写入的文件数
每次写操作合并的页数= InnoDB_dblwr_pages_writing/InnoDB_dblwr_writes

《如何掌握MySQL中的双写》就介绍到这里。感谢您的阅读。如果您想了解更多行业资讯,可以关注网站,小编将为大家输出更多优质实用文章!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何掌握MySQL中的双写

用户评论