返回顶部
首页 > 资讯 > 数据库 >mysql中如何设置innodb_force_recovery
  • 688
分享到

mysql中如何设置innodb_force_recovery

2024-04-02 19:04:59 688人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关Mysql中如何设置innodb_force_recovery的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql> show vari

这篇文章给大家分享的是有关Mysql中如何设置innodb_force_recovery的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

mysql> show variables like '%innodb_force_recovery%';

+-----------------------+-------+

| Variable_name         | Value |

+-----------------------+-------+

| innodb_force_recovery | 0     |

+-----------------------+-------+

该参数默认值为0,代表当发生需要恢复时,机型所有的恢复操作,当不能进行有效恢复时,如数据页发生了corruption,Mysql数据库可能法师宕机(crash),并把错误写入错误日志中。

该参数还可以设置为6个非零的值:1-6。大的数字表示包含了前面所有小数字表示的影响

1 srv_force_ignore_corrupt:     忽律检查到corrupt页

2 srv_force_no_background:      阻止Master Thread线程的运行,如Master Thread线程需要进行full purge操作,而这会导致crash。

3 srv_force_no_trx_undo:        不进行事务的回滚操作

4 srv_force_no_ibuf_merge:      不进行插入缓冲的合并操作

5 srv_force_no_undo_log_scan: 不查看撤销日志(undo log),InnoDB存储引擎会将未提交的事务视为已提交

6 srv_force_no_log_redo             不进行前滚操作

注意:

    当参数innodb_force_recovery设置大于0的值,用户可以对表进行select,create和drop操作,但insert\update\delete这类DML操作是不允许的。

模拟故障

Database changed

mysql> start transaction

    -> ;

Query OK, 0 rows affected (0.00 sec)


mysql> update t4 set VERSION=1;

Query OK, 581632 rows affected (11.40 sec)

Rows matched: 581632  Changed: 581632  Warnings: 0


[root@mysql5-7 ~]# ps aux | grep mysql    

root      3928  0.0  0.0 106244  1448 pts/1    S    14:55   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf

root      4585  0.0  0.1 126688  3012 pts/1    S+   14:55   0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock

mysql     4624 10.3 21.7 2269864 417796 pts/1  Sl   14:57   0:18 /usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3306/logs/mysql_ray.err --open-files-limit=10240 --pid-file=/data/3306/logs/ray.pid --Socket=/data/3306/soket/mysql.sock --port=3306

root      5884  0.0  0.0 100952   612 pts/2    S+   15:00   0:00 tail -f /data/3306/logs/mysql_ray.err

root      5889  0.0  0.0 103260   832 pts/3    S+   15:00   0:00 grep mysql

[root@mysql5-7 ~]# kill -9 3928

[root@mysql5-7 ~]# kill -9 4624

[root@mysql5-7 ~]# ps aux | grep mysql

root      4585  0.0  0.1 126688  3012 pts/1    S+   14:55   0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock

root      5884  0.0  0.0 100952   612 pts/2    S+   15:00   0:00 tail -f /data/3306/logs/mysql_ray.err

root      5895  0.0  0.0 103260   836 pts/3    S+   15:00   0:00 grep mysql


2017-05-25T07:01:10.663268Z 0 [Note] InnoDB: Database was not shutdown nORMally!

2017-05-25T07:01:10.663287Z 0 [Note] InnoDB: Starting crash recovery.

2017-05-25T07:01:10.695649Z 0 [Note] InnoDB: 1 transaction(s) which must be rolled back or cleaned up in total 581632 row operations to undo

2017-05-25T07:01:10.695733Z 0 [Note] InnoDB: Trx id counter is 5888

2017-05-25T07:01:10.700667Z 0 [Note] InnoDB: Last MySQL binlog file position 0 62744449, file name ray-bin.000007

2017-05-25T07:01:10.806383Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"

2017-05-25T07:01:10.806472Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables

这里看到 581632 row operations to undo,因为回滚了数据,所以启动时间会加长,如果回滚数据非常多,启动时间就会很慢。

重新做一次实验,innodb_force_recovery设置为3.

[root@mysql5-7 ~]# ps aux | grep mysql    

root      4585  0.0  0.1 126640  3004 pts/1    S+   14:55   0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock

root      5884  0.0  0.0 100952   612 pts/2    S+   15:00   0:00 tail -f /data/3306/logs/mysql_ray.err

root      5916  0.0  0.0 106244  1456 pts/3    S    15:01   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf

mysql     6546  7.3 21.7 2269272 417740 pts/3  Sl   15:01   0:19 /usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3306/logs/mysql_ray.err --open-files-limit=10240 --pid-file=/data/3306/logs/ray.pid --socket=/data/3306/soket/mysql.sock --port=3306

root      6586  0.0  0.0 103260   836 pts/3    S+   15:05   0:00 grep mysql

[root@mysql5-7 ~]# kill -9 5916

[root@mysql5-7 ~]# kill -9 6546


[root@mysql5-7 ~]# ps aux | grep mysql    

root      4585  0.0  0.1 126640  3004 pts/1    S+   14:55   0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock

root      5884  0.0  0.0 100952   612 pts/2    S+   15:00   0:00 tail -f /data/3306/logs/mysql_ray.err

root      5916  0.0  0.0 106244  1456 pts/3    S    15:01   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf

mysql     6546  7.3 21.7 2269272 417740 pts/3  Sl   15:01   0:19 /usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3306/logs/mysql_ray.err --open-files-limit=10240 --pid-file=/data/3306/logs/ray.pid --socket=/data/3306/soket/mysql.sock --port=3306

root      6586  0.0  0.0 103260   836 pts/3    S+   15:05   0:00 grep mysql

[root@mysql5-7 ~]# kill -9 5916

[root@mysql5-7 ~]# kill -9 6546


2017-05-25T07:06:05.298605Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.

2017-05-25T07:06:05.299344Z 0 [Note] InnoDB: 5.7.10 started; log sequence number 805301564

2017-05-25T07:06:05.299424Z 0 [Note] InnoDB: !!! innodb_force_recovery is set to 3 !!!

2017-05-25T07:06:05.300353Z 0 [Note] Plugin 'FEDERATED' is disabled.

2017-05-25T07:06:05.302471Z 0 [Note] Recovering after a crash using /data/3306/logs/ray-bin

2017-05-25T07:06:05.302981Z 0 [Note] InnoDB: Loading buffer pool(s) from /data/3306/data/ib_buffer_pool

2017-05-25T07:06:05.303049Z 0 [Note] InnoDB: not started

2017-05-25T07:06:05.305844Z 0 [Note] Starting crash recovery...

2017-05-25T07:06:05.305926Z 0 [Note] Crash recovery finished.

因为没有进行回滚,所以启动很快就完成了。但是用户应当小心当前数据库的状态,并自己确认是否不需要回滚事务的操作。

感谢各位的阅读!关于“mysql中如何设置innodb_force_recovery”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: mysql中如何设置innodb_force_recovery

本文链接: https://lsjlt.com/news/62429.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql中如何设置innodb_force_recovery
    这篇文章给大家分享的是有关mysql中如何设置innodb_force_recovery的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql> show vari...
    99+
    2024-04-02
  • mysql中innodb_force_recovery参数分析
    这篇文章主要讲解了“mysql中innodb_force_recovery参数分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中innodb_f...
    99+
    2024-04-02
  • MySQL中 prompt如何设置
    这篇文章给大家介绍MySQL中 prompt如何设置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mysql prompt方法一:linux环境变量shell> export M...
    99+
    2024-04-02
  • mysql中如何设置sql_mode
    本篇文章为大家展示了mysql中如何设置sql_mode,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1,执行SQL查看select @@session....
    99+
    2024-04-02
  • MySQL中innodb_log_file_size如何设置
    这篇文章主要介绍了MySQL中innodb_log_file_size如何设置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2024-04-02
  • mysql中如何设置Innodb_buffer_pool_size
    小编给大家分享一下mysql中如何设置Innodb_buffer_pool_size,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • mysql中如何设置null
    mysql 中设置 null 的方法包括:1. 使用 insert 语句插入 null 值;2. 使用 update 语句更新值为 null;3. 使用 alter table 语句将列...
    99+
    2024-04-29
    mysql
  • mysql中如何设置编码
    这篇文章将为大家详细讲解有关mysql中如何设置编码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、文件编码:指的是页面文件(.html,.php等)本身...
    99+
    2024-04-02
  • mysql中如何设置binlog_format=MIXED
    这篇文章给大家分享的是有关mysql中如何设置binlog_format=MIXED的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  bin...
    99+
    2024-04-02
  • Mysql中如何设置外键
    在 MySQL 中,可以使用 FOREIGN KEY 约束来设置外键。外键约束用于确保关系数据库中的数据的完整性和一致性。以下是在 ...
    99+
    2023-10-26
    Mysql
  • mysql中文版如何设置
    如何在 mysql 中设置中文版本?安装 mysql 服务器和 mysql workbench。修改 mysql 配置文件,添加 character-set-server=utf8 和 ...
    99+
    2024-06-14
    mysql linux macos
  • Mysql中如何设置字符集
    这篇文章将为大家详细讲解有关Mysql中如何设置字符集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。############################...
    99+
    2024-04-02
  • mysql 如何设置character_set_client
    要设置 MySQL 的 character_set_client,可以使用以下命令:1. 登录到 MySQL 的命令行界面。2. 执...
    99+
    2023-08-18
    mysql
  • tomcat中如何设置mysql连接池
    这篇文章主要介绍“tomcat中如何设置mysql连接池”,在日常操作中,相信很多人在tomcat中如何设置mysql连接池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”to...
    99+
    2024-04-02
  • MySQL中如何设置全局变量
    这篇文章将为大家详细讲解有关MySQL中如何设置全局变量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 ERROR 1418 (HY000): This ...
    99+
    2024-04-02
  • mysql中如何设置文本排序
    mysql中设置文本排序的方法首先,在命令行中启动MySQL服务;service mysql start  MySQL服务启动后,在命令行中输入mysql的用户名和密码登录到MySQL;mysql -u root -p登录到MySQL后,选...
    99+
    2024-04-02
  • 如何在mysql中设置持久化
    如何在mysql中设置持久化?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、持久化的设置MySQL的设置可以在运行时通过SET GLOBAL命令来更改,但是这...
    99+
    2023-06-15
  • mysql中如何设置两个主键
    在 mysql 中设置两个主键的方法有两种:复合主键:alter table table_name add primary key (column1, column2);多列主键:alt...
    99+
    2024-04-29
    mysql
  • mysql如何设置密码
    mysql如何设置密码 新装的mysql默认是没有密码的,下面我们直接root用户进入mysql有很多方法: 1.用root 进入mysql后 mysql>set pa...
    99+
    2024-04-02
  • mysql如何设置主键
    mysql 中的主键用于唯一标识表中的每条记录,可通过以下步骤设置:在 create table 语句中指定 primary key 子句;使用 alter table 语句添加主键;使...
    99+
    2024-06-15
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作