我理解的MySQL Double Write_MySQL
没有Double Write特性的时候
更新数据后,会将dirty page放到innodb buffer cache中。此时页的checksum值会发生变化。
页的头部fileheader部分有checksum项,名为file_page_space_or_checksum。
页的尾部filetailer部分也有用来比较checksum的项,名为file_page_end_lsn。
它们使用特殊的checksum函数来比较,以此来验证页的完整性。
这里我们简单的理解为等值比较。
这个时候执行刷新磁盘操作,16KB的页,如果只写了其中的8KB,这时候发生了意外状况,服务器掉电、MySQL示例突然停掉。这时候就会发生partial page write的问题,即只有页的部分数据同步到了磁盘上面。
checksum无法通过。
其实MySQL的Innodb以及Oracle数据库的redo log,不是记录纯物理的操作,而是物理和逻辑结合的日志。(这样可以减少redo的生成)
物理到page,也就是page具体在硬盘上的具体位置。
后面对于page的操作,则是根据自己的格式逻辑存储的(应用的时候需要通过特定的解析函数),比如说向page里面插入一条记录。
当然Oracle数据库也是类似的,物理,只到block级别。
所以说,当page 损坏之后,其实应用redo是没有意义的。
这时候无法使用redo来恢复,因为原始页已经损坏了.
会发生数据丢失。
当有doublewrite 特性以后
写脏数据到磁盘的时候,会先通过memcpy函数将dirty page拷贝到大小为2MB 的double write buffer内存区域中。
然后double write buffer第一步先将这2MB的数据每次1MB写入到共享表空间中分配的double write区域中。
第二步才将数据页写到数据文件中去。
当第二步过程中发生故障,也就是发生partial page write的问题。
先检查页内的checksum是否相同。
不一致,则直接从doublewrite中恢复。
当然,如果页的checksum通过,但是与doublewrite中的checksum不同,则可以直接应用redo log来执行恢复操作。
本文只介绍关于double write相关的内容,崩溃恢复的过程要复杂的多,想要了解更多可以到下面的链接中找到答案。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

L'article discute de l'utilisation de l'instruction ALTER TABLE de MySQL pour modifier les tables, notamment en ajoutant / abandon les colonnes, en renommant des tables / colonnes et en modifiant les types de données de colonne.

L'article discute de la configuration du cryptage SSL / TLS pour MySQL, y compris la génération et la vérification de certificat. Le problème principal est d'utiliser les implications de sécurité des certificats auto-signés. [Compte de caractère: 159]

L'article traite des stratégies pour gérer de grands ensembles de données dans MySQL, y compris le partitionnement, la rupture, l'indexation et l'optimisation des requêtes.

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]

L'article discute de la suppression des tables dans MySQL en utilisant l'instruction TABLE DROP, mettant l'accent sur les précautions et les risques. Il souligne que l'action est irréversible sans sauvegardes, détaillant les méthodes de récupération et les risques potentiels de l'environnement de production.

L'article discute de la création d'index sur les colonnes JSON dans diverses bases de données comme PostgreSQL, MySQL et MongoDB pour améliorer les performances de la requête. Il explique la syntaxe et les avantages de l'indexation des chemins JSON spécifiques et répertorie les systèmes de base de données pris en charge.

L'article discute de l'utilisation de clés étrangères pour représenter les relations dans les bases de données, en se concentrant sur les meilleures pratiques, l'intégrité des données et les pièges communs à éviter.

L'article discute de la sécurisation MySQL contre l'injection SQL et les attaques brutales à l'aide de déclarations préparées, de validation des entrées et de politiques de mot de passe solides (159 caractères)
