只有InnoDB表,仅上备份锁

请点击输入图片描述

若有非InnoDB表,上全局锁

请点击输入图片描述

特性2:Redo Log Archiving

MEB能做到在线热备,备份时不影响数据库读写,这是利用了InnoDB事务日志,在备份期间持续监视redo log的变化,读取增量变化,写入到ibbackup_logfile,也就不需要上锁来保障备份一致性。(对非InnoDB的文件需要上读锁拷贝)

如果备份期间数据库写入负载特别大,而写入ibbackup_logfile速度较慢,redo log size也不大,很可能会出现ibbackup_logfile的写入速度跟不上redo log记录生成速度,redo log 空间不够时需要覆写日志文件,那么来不及写入ibbackup_logfile的记录会丢失,导致备份失败。

MEB 4.1对此做了优化,将redo log处理线程拆分成多线程分工合作,提高处理redo log的效率,降低了redo log覆写造成备份失败的概率,但redo log新增速度和ibbackup_logfile写入速度悬殊太大,问题依然会发生。

MySQL 8.0.17支持了redo log archiving 彻底解决了此问题,备份前设置innodb_redo_log_archive_dirs,指定redo log归档目录。MEB备份时自动开启日志归档,当checkpoint时会将旧记录归档到此目录,后续从归档文件中读取redo日志记录,避免了覆写可能导致的redo记录丢失。

请点击输入图片描述

注意:innodb_redo_log_archive_dirs 不能在数据目录下,目录权限要求是700

特性3:Page Tracking

Page Tracking 是为优化增量备份效率,减少不必要的数据页扫描。

增量备份当前有3种扫描模式:

page-track:利用LSN精确跟踪上次备份之后被修改页面,仅复制这些页面,效率最快。

optimistic:扫描上次备份之后被修改的InnoDB 数据文件中,找出并拷贝修改的页面。依赖系统时间,使用存在限制。

full-scan:扫描所有InnoDB数据文件,找出并拷贝自上次备份之后修改的页面,效率最慢

1、利用page-track增量备份,需先安装备份组件

mysql> INSTALL COMPONENT "file://component_mysqlbackup";

2、在全备前开启page-track

SELECT mysqlbackup_page_track_set(true);

3、全备之后,做增量备份时指定若满足page tracking条件,默认会使用page-track模式,否则会使用full-scan模式,也可以指定--incremental=page-track。

mysqlbackup --incremental-backup-dir=backup_incr --trace=3 --incremental=page-track --incremental-base=history:last_full_backup backup

incremental-base有3种选择

last_backup:基于前一次备份做增备,前一次备份可能是增备,也可能是全备。这种方式全备之间可能会有多个增备,每次增量可能比较小,但恢复时需要逐个合并。

last_full_backup:基于前一次全备做增备。这种方式增备会越往后体积可能越大,但恢复时只需要合并最后一次增量备份。

dir:基于前一次的备份目录,前一次备份可能是增备,也可能是全备。

测试对比full-scan 和page-track ,在变更页小于总体50%的情况下 ,备份效率至少能有1倍的速度提升。

page-track 模式 磁盘读写均衡,说明读写的都是修改页面。

请点击输入图片描述

full-scan模式 磁盘读写差别很大,说明读了很多未修改的页面。

请点击输入图片描述

mysql数据库备份机制_mysql备份机制有哪些相关推荐

  1. 备份mysql数据库攻略_mysql备份实例攻略

    本文系统Centos6.0 首先普及下备份术语:热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 我们备份,一般备份以下几个部分: 1.数据文件 2.日志文件 ...

  2. mysql数据库恢复策略_MySQL 备份和恢复策略(一)

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态.本文主要对MyISAM表做备份恢复. 备份策略一:直接拷贝数据 ...

  3. mysql数据库的在线数据备份与数据恢复

    MySQL是一种常用的关系型数据库管理系统,它支持在线备份和恢复数据.在线备份指的是在MySQL数据库运行时备份数据,而不会中断或影响现有的数据库服务.在本文中,我们将介绍MySQL数据库的在线数据备 ...

  4. MySQL数据库的mysqldump完全备份、binlog的增量备份与还原

    MySQL数据库的mysqldump完全备份.binlog的增量备份与还原 一. 备份的目的: 做灾难性恢复:对损坏的书籍进行恢复和还原 需求改变:因需求改变而需要把数据还原到改变以前 二. 备份需要 ...

  5. linux上mysql定时备份数据库数据_Linux下如何实现MySQL数据库每天定时自动备份

    在云计算的浪潮下,企业多将业务部署在云上.对于数据库中的数据,直接使用云数据库自带的备份功能实现备份,操作简单.但是云数据库备份数据的存储空间有限制,一旦超出存储量便自动关闭备份功能,运维人员往往也会 ...

  6. Linux mysql数据库每天定时自动备份数据

    liunx mysql数据库每天定时自动备份数据 创建一个shell文件,把如下代码放入创建的shell文件中并保存 1.sh脚本 #备份文件后缀时间 time='date +%Y%m%d%H'; # ...

  7. mysql数据库咋还原_mysql数据库备份和还原

    一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...

  8. mysql备份数据库某表格_MySQL备份:使用自动轮换表格备份,轻松恢复部分/完整数据库...

    MySQL备份:按表自动轮换备份,易于恢复部分/完整数据库 这是一个MySQL备份脚本,可以采用压缩格式的表格备份(每个数据库的每个表的单个备份文件). 它还提供了自动轮换旧的备份文件. 备份脚本分别 ...

  9. mysql数据库增量复制_mysql数据库增量备份

    增量备份 增量备份是由一个二进制日志mysqlbinlog实现的,该日志有一旦开启后,用户的每条语句除了select,都会被记录在该日志当中,. 一.开启该日志: #vim /etc/my.cnf m ...

  10. php mysql备份脚本_MySQL备份脚本,mysql脚本

    MySQL备份脚本,mysql脚本 mysqlbackup.php: php//备份mysql set_time_limit(0); date_default_timezone_set('PRC'); ...

最新文章

  1. php ping 命令注入,CTF关于ping命令注入问题
  2. 一键将Word转换为MarkDown
  3. 【BLE MIDI】MIDI 文件格式分析总结 ★★★
  4. Linux驱动之平台设备
  5. ABP vNext IOC替换原有Service实现
  6. 这 10 个云计算错误,会让你的业务一蹶不振!
  7. 开发者如何快速精简容器云镜像?| 技术头条
  8. java css路径_java web开发中CSS路径有问题吗,运行jsp文件为什么找不到css文件?...
  9. ODP.NET开发和部署的相关问题
  10. 初中计算机知识ppt,初中信息技术操作考试系统题库PowerPoint部分
  11. 网页国际化处理(中英文切换)
  12. python函数调用执行的四个步骤_如何调用python函数
  13. (一)软件测试的目的和定义
  14. Unity3D使用鼠标旋转缩放平移视角
  15. ubuntu 切换 java 版本
  16. QT中读取STL并显示
  17. stata foreach循环语句的使用
  18. 英语写作中常见的“转折”小结
  19. NB-IoT 接入 5G 核心网丨边缘计算阅读周
  20. onload和ready的不同

热门文章

  1. 诞生11年,入华9年,今年的智慧城市会更好吗?
  2. 有传递函数画matlab,matlab画传递函数曲线
  3. 计算机视觉论文-2021-07-14
  4. 计算机网络对英语教学的消极影响,浅谈计算机对英语写作和教学的影响
  5. 造数常用的Excel表达式
  6. Flutter系列之改变CupertinoSwitch的大小
  7. r library car_医学统计与R语言:双因素重复测量方差分析(Twoway repeated measures ANOVA)...
  8. UVALive 7269 Snake Carpet
  9. 十进制和二进制转换原理
  10. Spring Boot学习笔记