MySQL OCP888题解056-InnoDB强制启动(forcing-innodb-recovery)

2023-10-18 21:20

本文主要是介绍MySQL OCP888题解056-InnoDB强制启动(forcing-innodb-recovery),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1、原题
    • 1.1、英文原题
    • 1.2、中文翻译
    • 1.3、答案
  • 2、题目解析
    • 2.1、题干解析
    • 2.2、选项解析
  • 3、知识点
    • 3.1、知识点1:InnoDB强制启动(forcing-innodb-recovery)
  • 4、总结

1、原题

1.1、英文原题

The InnoDB tablespace is corrupted and you start the server with option --innodb_force_recover=4 Which backup method would you use to reload the corrupted InnoDB tables?
A、A text backup. InnoDB does not allow you to make binary backups while the server is running.
B、a binary backup taken with MySQL Enterprise Backup that backup up even corrupted tables
C、a binary backup that uses transportable tablespaces and allows you to reload a corrupted table
D、A text backup. A binary backup will still contain the corrupted segments.

1.2、中文翻译

InnoDB表空间已损坏,您使用选项–InnoDB_force_recover=4启动服务器,您会使用哪种备份方法来重新加载损坏的InnoDB表?
A、 文本备份。InnoDB不允许您在服务器运行时进行二进制备份。
B、 使用MySQL Enterprise backup进行的二进制备份,甚至可以备份损坏的表
C、 二进制备份,使用可传输的表空间,并允许您重新加载损坏的表
D、 文本备份。二进制备份仍将包含损坏的段。

1.3、答案

D

2、题目解析

2.1、题干解析

本题考察InnoDB强制启动(forcing-innodb-recovery)相关的知识。

2.2、选项解析

  1. InnoDB一旦强制恢复,则物理存储已经损坏,但是可以通过文本备份来机型一致性恢复,所以选项D正确。

3、知识点

3.1、知识点1:InnoDB强制启动(forcing-innodb-recovery)

  • 在一些数据库发生严重损坏导致数据库无法正常启动的情况下,可以使用innodb_force_recovery选项来强制InnoDB存储引擎启动,这样可以忽略启动时的一些内部操作,牺牲数据的一致性,从而先让数据库启动起来,从而获得备份的可能性和时间。方法是在选项文件的[mysqld]部分添加以下一行:
[mysqld]
innodb_force_recovery = 1
  • innodb_force_recovery默认为0(正常启动,没有强制恢复),允许的非零值是1到6。一个较大的值包括较小值的功能。例如,一个3的值包括1和2的所有功能。只有在紧急情况下才将innodb_force_recovery设置为大于0的值。4或更大的值会永久地损坏数据文件。当强制InnoDB恢复时,你应该总是从innodb_force_recovery=1开始尝试,并且只在必要时逐步增加该值。如果你能够在innodb_force_recovery的值为3或更小的情况下转储你的表,那么你就相对安全了,只有个别页面上损坏的一些数据会丢失。4或更大的值被认为是危险的,因为数据文件可能被永久地损坏。6的值被认为是剧烈的,因为数据库页被留在一个过时的状态,这反过来可能会给B-树和其他数据库结构带来更多的损坏。

  • 在使用innodb_force_recovery选项启动数据库之前,确保你有一个数据库的备份,以备在数据库损坏的情况下可以恢复。

  • 当innodb_force_recovery大于0时,InnoDB会阻止INSERT、UPDATE或DELETE操作。innodb_force_recovery设置为4或更大时,InnoDB会进入只读模式。选项的具体含义如下所示:

官方参考文档

4、总结

  1. 当InnoDB引擎的MySQL数据库发生严重损坏时,可以尝试用innodb_force_recovery来强制启动数据库,实质是忽略MySQL启动时的一些内部操作,让数据库先启动起来。
  2. innodb_force_recovery的值大于1时都会有损坏数据库的风险,值越大可能发生的损害越大,4或者更大的值会导致数据文件的永久损坏。因此使用innodb_force_recovery前一定要先做备份,在使用innodb_force_recovery时要从1逐渐增大。

这篇关于MySQL OCP888题解056-InnoDB强制启动(forcing-innodb-recovery)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/235193

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T