xtrabackup 使用
官网
Percona XtraBackup
Use APT repositories - Percona XtraBackup
一 安装
下载
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
wget https://repo.percona.com/apt/percona-release_latest.zesty_all.deb
可下载列表 Percona Repo
加源
dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
dpkg -i percona-release_latest
.zesty_all.deb
源文件列表 用于检查
/etc/apt/sources.list.d/percona-release.list
允许使用
percona-release enable-only tools release
或者配和mysql使用 percona-release enable-only tools
.
安装
apt updateapt install percona-xtrabackup-80
可用参数
xtrabackup --help
--host='ip地址'
--user='用户名'
--password='密码'
--port='端口'
--backup 将备份保存到target-dir
--target-dir='目标目录'
--incremental-basedir=全量备份位置 (对于--backup):只复制指定目录下比backup更新的。ibd页面。
--perpare 准备一份备份,以便在备份上启动mysql服务器。redo log日志合并。
--apply-log-only 在准备过程中应用日志后,停止恢复进程,不进行LSN进程。
--copy-back 将以前备份的所有文件从备份目录复制到它们的原始位置。
二 备份
全量备份
xtrabackup --host='ip地址' --user='用户名' --password='密码' --backup --target-dir=全量备份保存位置
增量备份
xtrabackup --host='ip地址' --user='用户名' --password='密码' --backup --incremental-basedir=全量备份位置 --target-dir=增量备份位置
三 还原
增量备份的--prepare步骤与完全备份的--prepare步骤不同。
在完全备份中,执行两种类型的操作以使数据库保持一致:根据数据文件从日志文件重放已提交的事务,回滚未提交的事务。在准备增量备份时,必须跳过未提交事务的回滚,因为在备份时未提交的事务可能正在进行中,并且很可能在下一次增量备份中提交。您应该使用--apply-log-only选项来防止回滚阶段。
全量还原
#日志还原
xtrabackup --prepare --target-dir=全量备份位置#文件还原
xtrabackup --copy-back --target-dir =全量备份位置
增量还原
如果不使用--apply-log-only选项来阻止回滚阶段,那么增量备份将是无用的。回滚事务后,不能应用进一步的增量备份。
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=全量备份位置 --incremental-dir=增量备份位置xtrabackup --defaults-file=/etc/my.cnf --copy-back --apply-log-only --target-dir=全量备份位置 --incremental-dir=增量备份位置
四 原理
基本概念
mysql日志包括 redo log和undo log。redo log又叫事务日志,记录包含了对InnoDB数据的每次更改的记录。所以使用redo log备份InnoDB数据。
在MySQL中,IBD文件是InnoDB存储引擎的表空间文件,用于存储数据和索引。每个InnoDB表都会对应一个或多个.ibd文件,其中包含了表的数据和索引信息。
LSN(Log Sequence Number,日志序列号)是一个核心概念,是数据库内部用于跟踪事务日志(redo log)中各个记录位置的唯一标识符。
xtrabackup将提交的事务日志项应用于数据文件,并对修改数据但未提交的任何事务执行撤消操作。
流程
XtraBackup启动时运行一个后台进程来监视事务日志文件,并复制任何更改。
之后记住LSN,然后复制数据文件。LSN反映了数据库在不同时间点的状态。
XtraBackup会持续这样做。事务日志以循环方式写入,并且可以重用,即备份流程结束。
当服务器支持备份锁时,xtrabbackup首先复制InnoDB数据,然后运行LOCK TABLES FOR backup,然后复制MyISAM表。完成此操作后,将开始备份文件,会备份.frm, .MRG, .MYD, .MYI, .CSM, .CSV, .sdi and .par 文件。
xtrabbackup使用Backup锁,备份完成后解锁。
总结
XtraBackup启动时,监控并复制任何更改,即热备。
之后记住LSN版本,并复制相关用于还原的文件。增量备份,需保证LSN版本大于之前版本。
五 参考内容
详细分析MySQL事务日志(redo log和undo log)_redolog和undolog的区别-CSDN博客
Xtrabackup工作原理_xtrabackup备份原理-CSDN博客
How Percona XtraBackup works - Percona XtraBackup
MySQL中LSN介绍(日志序列号)_mysql lsn-CSDN博客
mysql中的ibd文件是什么_mysql中的ibd文件是什么意思-常见问题-PHP中文网
MySQL中的xtrabackup的原理解析_xtrabackup --prepare-CSDN博客