XtraBackup 备份加速【转】
概述
XtraBackup 是一款对于 MySQL 物理备份必不可少的工具,但是有时候在备份数据量级较大的数据库时,如果未做优化的话,还是有点慢,当然相对于逻辑备份,已然是很快了,那到底还能不能再快一点呢,又是什么参数在影响着 XtrBackup 的备份速度呢?带着这个疑问我们往下看。
首先我们需要先了解 XtraBackup 的备份原理,话不多说直接看图。
如图所示:
1. 当 innobackupex 命令开始备份的时候,首先会启动 xtrabackup 进程,xtrabackup 又分为两个线程,一个用于拷贝 ibd 文件,一个用于拷贝 redo 文件,redo 的拷贝线程只有一个,在 ibd 的拷贝线程启动前启动,在 ibd 的拷贝线程结束后结束。
2. xtrabackup 拷贝完成 idb 后,通知 innobackupex(通过创建文件),同时自己进入等待(redo 线程仍然继续拷贝)
3. innobackupex 收到 xtrabackup 通知后,执行 FLUSH TABLES WITH READ LOCK (FTWRL),取得一致性位置点,然后开始备份非 InnoDB 文件(包括 frm、MYD、MYI、CSV、opt、par 等)。拷贝非 InnoDB 文件过程中,因为数据库处于全局只读状态,非 InnoDB 表(主要 是MyISAM)如果比较多的话整库只读时间就会比较长。
4. 当 innobackupex 拷贝完所有非 InnoDB 表文件后,通知 xtrabackup(通过删文件) ,同时自己进入等待(等待另一个文件被创建);
5. xtrabackup 收到 innobackupex 备份完非 InnoDB 通知后,就停止 redo 拷贝线程,然后通知 innobackupex,redo log 拷贝完成(通过创建文件);
6. innobackupex 收到 redo 备份完成通知后,就开始解锁,执行 UNLOCK TABLES;
7. 最后 innobackupex 和 xtrabackup 进程各自完成收尾工作,如资源的释放、写备份元数据信息等,innobackupex 等待 xtrabackup 子进程结束后退出。
参数介绍
能够让我们加速备份的参数其实严格来说有以下两个:
1. --parallel
2. --compress-threads
先来说第一个参数 --parallel,先看下官方解释:
也就是说,这个参数的作用是,在 XtraBackup 备份开始拷贝 ibd 文件的时候可以并行拷贝的线程数量,默认的话是单线程拷贝的,如果 ibd 文件较多的话只能拷贝完一个再继续下一个,有一点需要注意如果表存储在一个 ibd 文件中,那么他将不会起到任何作用。
再看 --compress-threads 官网给出的解释:
简单来说就是针对 InnoDB 数据文件进行压缩的线程数,在指定这个参数的时候无需加上 --compress 也可以实现压缩。
测试
备份命令:
[root@TEST/data]# innobackupex --host=127.0.0.1 --user=root --password=123456 --port=3306 --parallel=4 --compress-threads=4 --stream=xbstream --tmpdir=/backup/tmp --no-version-check /backup >/backup/20210125/20210125`date +%H%M`
硬件 | 数据量 | 参数 | 所用时间 |
---|---|---|---|
8C/8G | 100G | null | 20分钟 |
8C/8G | 100G | --compress-threads=4 | 15分钟 |
8C/8G | 100G | --parallel=4 | 12分钟 |
8C/8G | 100G | --parallel=4;--compress-threads=4 | 8分钟 |
转自
技术分享 | XtraBackup 备份加速
https://mp.weixin.qq.com/s?__biz=MzI3MTAxMTY5OA==&mid=2671917866&idx=1&sn=84e062a2a1fc438c749deb175726f114&chksm=f07ec137c7094821f17fdcce86782622b308f13c841c23a70fd696113948d40c59a8ff55e9ce&scene=0&xtrack=1&key=eaadb4033992dd912619de6a5926884b8dd9caaed4f5e62325998d88c425c93810e5d556839f222bfffe209fd54bb589cca99badb61b44eb64d1d7353c26fe4ae2a9b106822c8928fc760d2bf28dad3e9ea17f97e0882bdfd91bded1a252ccbcb4d2a52e735b85b2a286f743da44056bb0ea85d60eb3acbb1d67a34fe7157f9a&ascene=1&uin=Mjk2Njc3MTAyMQ%3D%3D&devicetype=Windows+7&version=62060739&lang=zh_CN&exportkey=Ad1n5CuLaZ5GdO6VvISlmeA%3D&pass_ticket=2KMovkHJScO3B7tu5UMgYXP5Ud4BV2764l11TUbkdf81Bari8rFliEHXEDCraUkz&wx_header=0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2018-03-16 优化MySQL的21个建议 – MySQL Life【转】
2017-03-16 linux通过sendmail发送邮件