导读

MySQL 8.0.17开始支持的redo log归档能干嘛用呢,好吃吗

今天,MySQL 8.0.17发布了,看了下release note,发现果真如之前预期的那样,恢复了redo log归档(redo log archiving)功能。之所以说是“恢复”,那是因为在InnoDB非常古老的版本(MySQL 4.0.6之前的版本)才存在,之后就取消了,当时还支持redo log mirror,老一点的MySQL DBA可能都还有印象,不过这两个功能当时没什么卵用,所以取消了。

此次,InnoDB重启redo log归档功能,按照开发团队的说法,主要是为了解决备份一致性的问题。文档里是这么写的:

Backup utilities that copy redo log records may sometimes fail to keep pacewith redo log generation while a backup operation is in progress, resultingin lost redo log records due to those records being overwritten. The redolog archiving feature addresses this issue by sequentially writing redo logrecords to an archive file. Backup utilities can copy redo log records fromthe archive file as necessary, thereby avoiding the potential loss of data.in lost redo log records due to those records being overwritten. The redolog archiving feature addresses this issue by sequentially writing redo logrecords to an archive file. Backup utilities can copy redo log records fromthe archive file as necessary, thereby avoiding the potential loss of data.

简言之,就是备份速度跟不上redo log生成的速度,结果导致redo log被覆盖了,然后备份就无法保证一致性。有了redo log归档,就可以在备份启动时同步启动redo log归档,备份结束时同步停止redo log归档,这样就可以避免这个问题了,备份结束后可以利用这期间生成的redo log进行数据恢复。

想要启用redo log归档功能,只需设置innodb_redo_log_archive_dirs选项即可,该选项可支持在线动态修改,例如:

[root@yejr.me]> SET GLOBAL innodb_redo_log_archive_dirs = "redolog-archiving-for-backup:/data/mysql8-redologs/";

指定 /data/mysql8-redologs/ 目录作为redo log归档存放路径,并且指定label为 "redolog-archiving-for-backup",也就是这是专用于备份的redo log归档存放目录。

我们还可以指定另一个目录用于未来基于redo log的物理复制用途(我瞎猜的,可能没那么快实现)。

[root@yejr.me]> SET GLOBAL innodb_redo_log_archive_dirs = "redolog-archiving-for-backup:/data/mysql8-redologs1/;redolog-archiving-for-repl:/data/mysql8-redologs2";

选项innodb_redo_log_archive_dirs可以指定多个目录作为归档redo log存放位置。不过这个选项有几个限制:

设置完后,就可以开始进行redo log归档了。

第一个参数是我们之前定义过的一个label,第二个参数是该label对应目录下的子目录,也就是 "/data/mysql8-redologs/20190722"。我们在相应目录下就可以看到这样的redo log归档文件了:

[root@yejr.me]> ls -l /data/mysql8-redologs/20190722-r--r-----. 1 mysql mysql 0 Jul 22 20:54 archive.f0ff5743-97be-11e9-a5d6-0050568bba82.000001.log

文件名中常常的那串字符,就是本实例的UUID。此时文件的大小是0字节。

我们在另一个session发动一个sysbench oltp测试。执行完sysbench测试结束后,我们停止redo log归档工作:

[root@yejr.me]> DO innodb_redo_log_archive_stop();Query OK, 0 rows affected (0.00 sec)

我分别记录了测试前后redo log LSN的变化如下:

# 测试前的LSNLOG---Log sequence number          27938813989...# 测试后的LSNLOG---Log sequence number          27945024531---Log sequence number          27938813989...

# 测试后的LSNLOG---Log sequence number          27945024531

两次LSN的差值是:6210542 字节。

然后我们查看redo log归档文件大小是多少:

[root@yejr.me]> ls -l /data/mysql8-redologs/20190722-r--r-----. 1 mysql mysql 6213632 Jul 22 21:19 archive.f0ff5743-97be-11e9-a5d6-0050568bba82.000001.log

可以看到文件大小是 6213632 字节,和上面的 6210542 字节只相差了 3090 字节,和本次测试产生的redo log日志大小相当。后面我们就可以利用这个redo log做数据恢复之用了(不过,相应的官方工具还没开发出来,拭目以待吧)。

一般情况下,redo log归档对性能的影响比较小(顺序写入),在大量高并发事务的场景下,可能对性能影响会稍大点,不过也不用太担心,以后有机会我再做个性能对比测试吧。

发车前,月月提醒我,MySQL企业版的备份工具已经提前支持redo归档了,希望Percona Xtrabackup也能尽快支持哈。

最后,再多说一句。大家也能注意到,MySQL 8.0版本之后,和ORACLE是越来越像了。有ORACLE这个最成功的商业数据库大哥在前面,我们完全有理由不用担心MySQL的未来。

Enjoy MySQL 8.0 :)

延伸阅读

[root@yejr.me]> DO innodb_redo_log_archive_start("redolog-archiving-for-backup","20190722");Query OK, 0 rows affected (0.02 sec)

新特性速递 | InnoDB redo log archiving(归档)相关推荐

  1. 【新特性速递】优化Shift/Ctrl行多选逻辑,和Windows的文件资源管理器保持一致!...

    别告诉我你不知道 别告诉我你不知道可以使用键盘的 Shift 和 Ctrl 来多选表格行,因为这个在 Windows 文件资源管理器中的常用操作,此时的画风是这样的: 这个动图中进行了如下操作: 1. ...

  2. mysql innodb redolog_MySQL · 引擎特性 · InnoDB redo log漫游(转)

    前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样, ...

  3. Vue实现仿音乐播放器6-实现新歌速递与swiper轮播图切换

    前言 前面在首页已经完成今日推荐以及访问百度API获取数据,现在继续来完善home主页. 效果 新歌速递 swiper实现轮播图 实现 实现新歌速递 在components下新建新歌速递组件News_ ...

  4. 判断作弊 牛客 编程_牛客企业服务产品-新功能速递-第5期

    <牛客企业服务产品功能速递> 栏目,旨在帮 助企业用户及时了解牛客企业服务产品功能更新/新增,让用户第一时间了解和使用我们的新产品/功能.锁定<牛客企业服务产品新功能速递>,我 ...

  5. 不停歇的Java即将发布JDK16新特性速览及从菜鸟到架构师[图]

    一.不停歇的Java即将发布JDK16新特性速览 当开发者深陷Java8版本之际,这边下一版本Java16有了最新的消息,与Java15一样,作为短期版本,Oracle仅提供6个月的支持. 根据发布计 ...

  6. 抖音火爆的早安推送在线版,新功能速递,支持推送时间自定义,添加生日日期计算

    抖音火爆的早安推送在线版,新功能速递,支持推送时间自定义,添加生日日期计算 传送门 问题咨询:1319723770@qq.com 新功能一:支持推送时间自定义 操作路径 消息推送列表界面,找到需要修改 ...

  7. mysql innodb log_MySQL · 引擎特性 · InnoDB redo log漫游

    前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样, ...

  8. 在文件log 加入commit id_从物理文件理解InnoDB Redo Log

    导读 作为MySQL DBA都应该知道,Redo Log是可被覆盖的,是ACID中的D的最重要的构成部分,也就是关系型数据库中的WAL中的L. Redo Log记录的是redo,那么redo是什么呢? ...

  9. golang1.16新特性速览

    目录 语言內建的资源嵌入支持 支持arm64 go modules的新特性 GO111MODULE现在默认为on go build不再更改mod相关文件 go install的变化 新的GOVCS环境 ...

最新文章

  1. 化敌为友 运营商组团拥抱OTT为哪般
  2. [asp.net core]SignalR一个例子
  3. 2020——网鼎杯 (青龙组)signal
  4. Windows事件等待学习笔记(一)—— 临界区自旋锁
  5. 一个c++ 2d图形引擎 AGG
  6. 指定开局五子棋c语言代码,C语言案例:控制台版本的五子棋游戏【代码】
  7. makefile编译脚本
  8. python创建类的实例化_在C中实例化python类#
  9. [翻译]CSS变量让你轻松制作响应式网页
  10. 兄弟,答应我?别再去东南亚写代码了好么?
  11. 【BZOJ-3573】米特运输 树形DP
  12. bootstrap之栅格化
  13. [2018 江苏省大学生程序设计大赛]JSCPC2018K. 2018 (测试数据范围有扩大)
  14. android状态栏右上角增加图标的方法
  15. Linux 文本 sed 命令 碱基对 替换
  16. JAVA-正则表达式匹配教程 使用正则表达式匹配字符串 截取匹配到的字符串
  17. 重磅!75岁柳传志正式退休!卸任联想控股董事长,接班人是谁?一文回顾:柳传志的创业史...
  18. 思科曹图强:勒索软件将打破安全防御平衡
  19. 常见拉丁文读法,肯定用得着~
  20. 第四篇 HTML5 伪类与伪元素

热门文章

  1. Invalid initial heap size: -Xms
  2. Android微信小尾巴,微信朋友圈小尾巴app
  3. 值得一生珍藏的经典台词
  4. 蚂蚁金服Java岗内推,quartz定时器的处理
  5. Windows11便签工具在哪 win11的便签在哪里打开
  6. 图虫:科技赋能图片版权领域创新发展
  7. JS实现倒计时动画效果
  8. 003 C语言 输出名言
  9. Win10 修复引导
  10. Docker:架构分解