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

相关文章

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq