前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL8.0特性之redo logging动态开关

MySQL8.0特性之redo logging动态开关

作者头像
AsiaYe
发布2020-09-21 15:22:37
1.9K0
发布2020-09-21 15:22:37
举报
文章被收录于专栏:DBA随笔DBA随笔

MySQL8.0特性之redo logging动态开关

我们知道MySQL是采用WAL技术实现事务的持久性的,所谓的WAL技术是指在写磁盘前先写log,保证在MySQL服务器crash之后,通过redo log来数据找回来。要通过redo log来找到未写入磁盘的数据,则需要将redo log落盘,在Innodb中通过ib_logfile文件组来控制redo log的个数以及大小。

在MySQL8.0.21版本中,MySQL引入了redo logging的开关,首先解释下为什么需要这个开关,我个人理解是在某些导入数据的场景下,需要关闭redo log来增加导入的效率,如果不关闭redo log,那么对于数据页的所有变更,都会写入redo log,可能会影响效率。在MySQL5.7版本中,导入数据的时候,为了提高效率,通常情况下会将"双1模式"打破,常见做法是flush_logs_at_trx_commit参数设置为2,而将sync_binlog参数设置为一个较大的值,减少磁盘的刷盘频率。在MySQL8.0.21中可以通过关闭redo log来使得相关事务可以跳过记录redo日志和doublewrite buffer,从而加快数据导入的速度。但与此同时,这种做法损坏了事务的ACID特性。

开启或者关闭redo log的语法是:

代码语言:javascript
复制
ALTER INSTANCE DISABLE INNODB REDO_LOG
ALTER INSTANCE ENABLE  INNODB REDO_LOG

除此之外,开启或者关闭redo log还需要INNODB_REDO_LOG_ENABLE这个权限,可以通过下面的参数来查看redo log的状态:

代码语言:javascript
复制
mysql> SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_enabled';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Innodb_redo_log_enabled |  OFF  |
+-------------------------+-------+

在导入数据的场景下,正确的操作步骤是:

1、关闭innodb 的redo log

2、检查redo log状态,确认已经关闭

3、导数据

4、开启innodb 的redo log

5、检查redo log状态,确认已经关闭

使用该特性,有以下几点注意事项:

  • 该特性仅用于新实例导入数据场景,尽量避免用于线上的生产环境;
  • Redo logging关闭状态下,支持正常流程的关闭和重启实例;但在异常宕机情况下,可能会导致丢数据和页面损坏;Redo logging关闭后异常宕机的实例需要废弃重建,直接重启会有如下报错:[ERROR] [MY-013578] [InnoDB] Server was killed when Innodb Redo logging was disabled. Data files could be corrupt. You can try to restart the database with innodb_force_recovery=6.
  • Redo logging关闭状态下,不支持cloning operations和redo log archiving这两个功能;
  • 执行过程中不支持其他并发的ALTER INSTANCE操作;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档