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

推案教程:MySQL数据库入门视频教程

此次,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 redo

log archiving feature addresses this issue by sequentially writing redo log

records to an archive file. Backup utilities can copy redo log records from

the 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

...

# 测试后的LSN

LOG

---

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的未来。

mysql数据库的新特性_【数据库】MySQL新特性归档介绍相关推荐

  1. mysql数据库特点特性_简述MySQL数据库的特性和优势

    众所周知,MySQL数据库速度快.可靠性强,而且极具适应性.因此可以说,MySQL是管理内容的最好选择,尤其是对于在不需要事务化处理的情况下.本文就和大家一起来认识一下MySQL数据库,了解它的特性和 ...

  2. 阐述一下Mysql事务的四个特性_数据库事务的四个基本性质?

    本文转载:http://www.sqlstudy.com/sql_article.php?id=2008080302 数据库事务概念 什么是数据库事务? 事务(transaction)是由一系列操作序 ...

  3. mysql基础小测试三_数据库---MySQL(三)

    一.视图 视图是一个虚拟表,是sql的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会影响到视图[i ...

  4. mysql隔离级别 简书_数据库事务和四种隔离级别

    什么是事务 事务(Transaction):访问并可能更新数据库中各种数据项的一个程序执行单元(unit),它通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起 ...

  5. mysql数据库事务隔离级别是_数据库事务隔离级别-MySQL为例 · Sean

    在银行系统的存取款过程中,当遇到对一个账户并发存取的时候,系统该如何处理比较好.可能不少人会想到线程同步,然而在应用层使用同步会导致对象锁定,大大影响并发效率.此时,充分利用数据库的事务隔离机制可以很 ...

  6. mysql5.7 json特性_【Mysql】Mysql5.7新特性之-json存储

    一 写在前面 本系列文章基于 5.7.12 版本讲述MySQL的新特性.从安装,文件结构,SQL ,优化 ,运维层面 复制,GITD等几个方面展开介绍 5.7 的新特性和功能.同时也建议大家跟踪官方b ...

  7. mysql开发是做什么_数据库开发是做什么东西的

    展开全部 数据库开发工程师(Database Developer)是从事数据库管理系统62616964757a686964616fe58685e5aeb931333365663565(DBMS)和数据 ...

  8. mysql视图改造实体表_数据库视图改了对基表

    数据库必知词汇:数据库视图 视图是从一个或几个基本表(或视图)中导出的虚拟的表.在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据.视图与表(有时为与视图区别,也称表为基本表--Base Ta ...

  9. mysql数据应用从入门_《MySQL数据库应用从入门到精通》

    第1章 数据库概述 1.1基本概念 1.1.1数据库技术发展阶段 人工管理阶段-->文件系统阶段-->数据库系统阶段 1.1.2涉及的概念 数据库(DB).数据库管理系统(DBMS).数据 ...

  10. MySQL数据库test连接语句_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!...

    本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1.   首先使用两个简单的查询语句: 查询当前版本:se ...

最新文章

  1. IDEA + Vim = 得劲
  2. android NDK 二、编译方法
  3. Kafka使用Java客户端进行访问
  4. 排序算法——堆排序(C++)
  5. 动态规划求解0-1背包
  6. SAP Spartacus API 的事务处理特性
  7. 如何用ABAP代码的方式在短时间内批量生成大量订单数据用于性能测试
  8. 区域赛铜牌专题(一)
  9. JDK的目录结构及结构图
  10. 火爆Github的刷题攻略,现在配套网站上线了!!力扣刷题网站,刷题路线
  11. spring中使用i18n(国际化)
  12. 2022年上半年软件设计师下午真题试题(案例分析)及答案
  13. 基因测序技术发展历史以及一、二、三代测序技术原理及应用
  14. shell编写三角函数_VB中三角函数计算.doc
  15. word文件打不开,千万别删除!教你轻松修复
  16. BIG-ENDIAN VS LITTLE-ENDIAN
  17. javascript汉字转拼音代码
  18. java 写字板源代码_基于JAVA的模拟写字板的设计与实现(含录像)
  19. bootstrapTable 数据格式
  20. Springboot垃圾分类管理系统836b7计算机毕业设计-课程设计-期末作业-毕设程序代做

热门文章

  1. UIScrollView实现不全屏分页的小技巧
  2. 转:Xcode下的GDB调试命令
  3. 使用input type=file 上传文件时需注意
  4. 修改oracle用户资源限制,RHEL5中安装Oracle11gR2修改用户SHELL限制、环境配置、内核参数...
  5. php响应超过三十秒会报错么,如何捕捉致命错误:PHP中超过30秒的最大执行时间...
  6. docker安装kafka,超级简单的
  7. rocketmq中各个角色介绍
  8. Java技术:为什么不推荐使用BeanUtils属性转换工具
  9. 20个堪称神器的Linux命令行软件
  10. 吕梁离石学校计算机专业在哪里,山西吕梁计算机大专学校有哪些太重技校告诉您...