站保站

服务市场
  • 网站市场
  • 单机游戏
  • 平台大厅
  • 转让市场
  • 发卡市场
  • 广告市场
  • 下载市场
  • 收录市场
  • 本站平台
    平台客服
    微信Q群



    平台微博/weibo    平台微信/公众号    平台抖音/快手   
    曝光台    保障    地图   
    上传资源 快速赚钱
    站保站    登录      |  注册  |  

    只需一步,快速开始!

     找回密码   |   协议
    热门搜索: 网站开发 App报毒 挖矿源码 代办资质

    新特性速递 | InnoDB redo log archiving(归档)

    • 时间:2019-07-23 07:30 编辑:老叶茶馆_ 来源: 阅读:1172
    • 扫一扫,手机访问
    摘要:
    
     
    
     

    640?wx_fmt=png

    导读

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

    Enjoy MySQL 8.0 :)

    延伸阅读

    640?wx_fmt=png


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


    • 全部评论(0)
    • 最新

    信息加载中,请等待

    微信客服(速回)

    微信客服(慢回)



    企业微信客服二维码
    联系我们
    平台客服: 平台QQ客服

    平台电话:400电话迁移中!

    平台邮箱:28292383@qq.com

    工作时间:周一至周五:早10:00 晚:18:00

    营业执照     网站ICP备案:鲁ICP备20027607号-1     鲁公网安备:37068702000078号     增值电信业务经营许可证、在线数据与交易处理业务许可证:鲁B2-20200681      © 2016-2024 站保站  https://www.zhanbaozhan.com/ 版权所有!      平台规范:   关于我们   广告合作   隐私条款   免责声明   法律声明   服务条款   网站地图   平台工单!