MySQL 8.0 开关 Redo Logging

一 前言

前几天有客户测试使用云数据库的时候提出 要禁止mydumper 关闭redo log的操作 (说白了就是导入数据时保持MySQL 实例的redo logging功能), 这才想起 在 MySQL 8.0.21 版本中,开启了一个新特性 “Redo Logging 动态开关”

在新实例导数据的场景下,通过关闭 redo logging ,写入操作的事务可以跳过记录 redo日志和 doublewrite buffer,从而加快导入数据的速度。但是也有负面作用付出的代价是短时间牺牲了数据库的ACID保障。

官方文档特别强调该功能不能使用在生产环境,仅仅用于新实例的加速 数据导入,不知道客户之前经历了什么,特别强调支不支持禁用这个功能。

官方文档如是说:

As of MySQL 8.0.21, you can disable redo logging using the 
ALTER INSTANCE DISABLE INNODB REDO_LOG statement. 
This functionality is intended for loading data into a new MySQL instance. 

既然官方说了不建议在生产库使用,我们就学习一下吧,万一以后用的着呢。。

二 介绍

2.1

为了支持 redo logging 开关功能 ,MySQL 增加新的 SQL语法:

ALTER INSTANCE {ENABLE/DISABLE } INNODB REDO_LOG。

具备 INNODB_REDO_LOG_ENABLE 权限的用户,才能被允许执行 Redo Logging 动态开关的操作,所以如果需要禁用该操作,可以通过控制用户的权限,云数据库实例应该不会开放该权限,但是自建的数据库的 具有super权限的用户就不好控制了。

新增状态值 Innodb_redo_log_enabled ,用于显示当前 Redo Logging 开关状态。

2.2 纸上来得终觉浅

为用户赋权

GRANT INNODB_REDO_LOG_ENABLE ON . to the_bad_gay;

关闭redo logging

检查redo logging是否成功关闭

导数据

重新开启redo logging

ALTER INSTANCE ENABLE INNODB REDO_LOG;

确认redo logging状态

SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_enabled';

2.3 使用限制
  1. 开关 Redo Logging 执行过程中获取 排他模式的 backup metadata lock,故不支持其他并发的 ALTER INSTANCE 操作;

  2. Redo logging关闭状态下,不支持cloning operations和redo log archiving这两个功能;

  3. 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.

三 总结:

写这篇文章的时候,搜集了一下 资料发现, mydumper 紧跟 MySQL 8.0 的技术发展,再新的版本中 增加了新的参数 --disable-redo-log Disables the REDO_LOG and enables it after, doesn't check initial status.

对于客户的诉求,我估计是有人在生产库使用 mydumper 导入数据时,加上了上面的参数,导致了一些列的故障。

学习新技术,用不好的话, 也不是什么好事儿。 have fun with your MySQL instance

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【IPC通信--消息队列】

消息队列(也叫做报文队列)是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息…

[C#]Onnxruntime部署Chinese CLIP实现以文搜图以文找图功能

【官方框架地址】 https://github.com/OFA-Sys/Chinese-CLIP 【算法介绍】 在当今的大数据时代,文本信息处理已经成为了计算机科学领域的核心议题之一。为了高效地处理海量的文本数据,自然语言处理(NLP)技术应运而生。而在诸多N…

电子实验室设备:从零开始配置实验室(一)

本文译自 Electronics Lab Equipment: Kitting out a Lab from Scratch 随着多次国际迁徙以及在几家公司(或其分支机构)工作,尤其是在没有强大电子工程团队的情况下,我不得不为自己和客户设置多个电子实验室。那些计划进行内部测试…

网页设计与制作web前端设计html+css+js成品。电脑网站制作代开发。vscodeDrea 【企业公司宣传网站(HTML静态网页项目实战)附源码】

网页设计与制作web前端设计htmlcssjs成品。电脑网站制作代开发。vscodeDrea 【企业公司宣传网站(HTML静态网页项目实战)附源码】 https://www.bilibili.com/video/BV1Hp4y1o7RY/?share_sourcecopy_web&vd_sourced43766e8ddfffd1f1a1165a3e72d7605

【C++】STL 算法 ⑥ ( 二元谓词 | std::sort 算法简介 | 为 std::sort 算法设置 二元谓词 排序规则 )

文章目录 一、二元谓词1、二元谓词简介2、 std::sort 算法简介3、 代码示例 - 为 std::sort 算法设置 二元谓词 排序规则 一、二元谓词 1、二元谓词简介 " 谓词 ( Predicate ) " 是一个 返回 布尔 bool 类型值 的 函数对象 / 仿函数 或 Lambda 表达式 / 普通函数 , …

逆置算法和数组循环移动算法

元素逆置 概述:其实就是将 第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,依次到中间位置。用途:可用于数组的移动,字符串反转,链表反转操作,栈和队列反转等操作。 逆置图解 …

2024年1月7日15:09:50

2024年1月7日15:09:55复习:我今天学了有价值的东西,那就是在瓦罗兰特拿到了三杀 2024年1月7日15:11:10学习了如何使用vivopad2的键盘 可以稍微用一下 2024年1月7日15:17:58 学习一个编程的题目 2024年1月7日15:31:27不用机械键盘打字效率就是比不用低…

深入理解堆(Heap):一个强大的数据结构

. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 前言堆的实现基本操作结构体定义初始化堆(HeapInit)销毁堆(HeapDestroy) 重要函数交换函数(…

Talk | EMNLP 2023 最佳长论文:以标签为锚-从信息流动的视角分析上下文学习

本期为TechBeat人工智能社区第561期线上Talk。 北京时间1月4日(周四)20:00,北京大学博士生—王乐安的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “以标签为锚-从信息流动的视角分析上下文学习”,介绍了他的团队在上下文学…

STM32深入系列02——BootLoader分析与实现

文章目录 1. STM32程序升级方法1.1 ST-Link / J-link下载1.2 ISP(In System Programing)1.3 IAP(In Applicating Programing)1.3.1 正常程序运行流程1.3.2 有IAP时程序运行流程 2. STM32 Bootloader实现2.1 方式一:Boo…

Qt/QML编程学习之心得:Linux下Thread线程创建(26)

GUI设计中经常为了不将界面卡死,会用到线程Thread,而作为GUI设计工具,Qt也提供了一个这样的类,即QThread。 QThread对象管理程序中的一个控制线程。线程QThread开始在run()中执行。默认情况下,run()通过调用exec()启动事件循环,并在线程内运行Qt事件循环。 也可以通过…

【第6期】使用Iview的Select组件进行远程搜索并在编辑时设置一个或多个默认值

本期简介 下拉框这个组件用的地方非常多,普通用法就是将数据列表一次性查询渲染,在列表里面直接本地搜索,优点是可缓存、速度快,但在某些场合并不适用,比如要在下拉框中选择一所中国的学校,幼儿园/小学/初…

20240107查看Android11下移远的4G模块EC20在Firefly的AIO-3399J开发板跑通时的相关服务

20240107查看Android11下移远的4G模块EC20在Firefly的AIO-3399J开发板跑通时的相关服务 2024/1/7 11:24 缘起:友善之臂的SDK:rk3399-android-11-r20211216.tar.xz可以跑通EC20,但是Toybrick的不行! 同样是Andrid11,因此…

Python的核心知识点整理大全66(已完结撒花)

目录 D.3 忽略文件 .gitignore 注意 D.4 初始化仓库 D.5 检查状态 D.6 将文件加入到仓库中 D.7 执行提交 D.8 查看提交历史 D.9 第二次提交 hello_world.py D.10 撤销修改 hello_world.py 注意 D.11 检出以前的提交 往期快速传送门👆(在文…

外贸独立站建站详细操作流程一览,跨境电商卖家营销必看!

独立站是一个独立的网站,包括有独立的服务器,独立的网站程序以及网站域名。关于独立站的优势已经说了很多,本文就不再细谈,想了解的小伙伴可以自行查找之前发布的文章观看。 今天就来说说搭建独立站的详细步骤都有哪些&#xff1f…

Docker mysql 主从复制

目录 介绍:为什么需要进行mysql的主从复制 主从复制原理: ✨主从环境搭建 主从一般面试问题: 介绍:为什么需要进行mysql的主从复制 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能&#xff…

【AI视野·今日NLP 自然语言处理论文速览 第七十期】Thu, 4 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 4 Jan 2024 Totally 29 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Multilingual Instruction Tuning With Just a Pinch of Multilinguality Authors Uri Shaham, Jonathan Herzi…

3D点云平面拟合算法

假设你有一组 3D 中的 n 个点,并且想要为它们拟合一个平面。 在本文中,我将推导出一个简单的、数值稳定的方法,并提供它的源代码。 听起来很好玩? 我们开始吧! NSDT工具推荐: Three.js AI纹理开发包 - YOLO…

阿里云服务器“可用区”是什么意思?

阿里云可用区是什么意思?可用区是同一个地域下电力和网络相互独立的区域,可用区是用来搭建高可用高容灾应用架构的,因为可用区之间可以做到故障隔离。阿里云服务器网aliyunfuwuqi.com简单说下可用区什么是可用区及可用区的选择方法&#xff1…

简易计算器的实现(MFC)

文章目录 1.预备知识1.简单计算器的实现2.快捷键1.全局快捷键1.创建2.注销 2.局部快捷键 3.计算机内部浮点数的存储1.浮点数表示格式2.浮点数的计算3.实例 2.实验目的3.实验内容4.代码实现1.界面编写2.准备工作3.数字输入4.特殊数字输入(指数与小数)1.指…