Xtrabackup备份工具
XtraBackup(PXB)工具是Percona公司用perl语言开发的一个用于 MySQL数据库物理热备的备份工具,能够非常快速地备份与恢复mysql数据库,且支持在线热备份(备份时不影响数据读写)。
Xtrabackup中包含两个工具:
- xtrabackup :用于热备份innodb,xtradb引擎表的工具,不能备份其他表。
- innobackupex :提供了用于myisam(会锁表)和innodb引擎,及混合使用引擎备份的能力。
Xtrabackup的优点:
- 备份速度快,物理备份可靠
- 备份过程不会打断正在执行的事务(无需锁表)
- 能够基于压缩等功能节约磁盘空间和流量
- 自动备份校验
- 还原速度快
- 可以流传,将备份传输到另外一台机器上
- 在不增加服务器负载的情况备份数据
- 支持增量备份
//语法
xtrabackup | innobackupex [--defaults-file=#] [--backup | --prepare | --copy-back | --move-back] [OPTIONS]
Xtrabackup工具备份常用选项:
选项类别 | 命令全名 | 含义 |
---|---|---|
通用选项 | --user=name | 数据库账号名 |
通用选项 | --password | 数据库密码 |
通用选项 | --host=name | 数据库主机IP地址 |
通用选项 | --port=name | 数据库主机端口号 |
通用选项 | --defaults-file | 定义包含默认配置的文件的路径。 |
通用选项 | --socket=name | 数据库socket文件地址 |
备份选项 | --target-dir | 备份文件的存放目录路径,如果目录不存在xtrabakcup会创建。如果目录存在且为空则成功。不会覆盖已存在的文件。 |
备份选项 | --databases=name | 指定要备份的数据库 |
增量选项 | --incremental-basedir | 使用增量备份 |
压缩/解压选项 | --compress | compress压缩 |
压缩/解压选项 | --compress-threads=n | 启用n个线程进行压缩 |
压缩/解压选项 | --decompress | 准备数据之前先解压 |
准备选项 | --prepare | 实现同步回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态 |
准备选项 | --apply-log-only | 阻止回滚未提完成的事务(最后一次增量备份的准备不需要此选项) |
准备选项 | --incremental-dir | 指定增量备份,与全备合并 |
还原选项 | --copy-back | 做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir。 |
还原选项 | --move-back | 这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项会移除backup文件,用时候必须小心。 |
Xtrabackup备份原理:
(1)innobackupex启动后,会先fork一个进程,用于启动xtrabackup,然后等待xtrabackup备份ibd数据文件;
(2)xtrabackup在备份innoDB数据是,有2种线程:redo拷贝线程和ibd数据拷贝线程。xtrabackup进程开始执行后,会启动一个redo拷贝的线程,用于从最新的checkpoint点开始顺序拷贝redo.log;再启动ibd数据拷贝线程,进行拷贝ibd数据。这里是先启动redo拷贝线程的。在此阶段,innobackupex进行处于等待状态(等待文件被创建)
(4)xtrabackup拷贝完成ibd数据文件后,会通知innobackupex(通过创建文件),同时xtrabackup进入等待状态(redo线程依旧在拷贝redo.log)
(5)innobackupex收到xtrabackup通知后哦,执行FLUSH TABLES WITH READ LOCK(FTWRL),取得一致性位点,然后开始备份非InnoDB文件(如frm、MYD、MYI、CSV、opt、par等格式的文件),在拷贝非InnoDB文件的过程当中,数据库处于全局只读状态。
(6)当innobackup拷贝完所有的非InnoDB文件后,会通知xtrabackup,通知完成后,进入等待状态;
(7)xtrabackup收到innobackupex备份完成的通知后,会停止redo拷贝线程,然后通知innobackupex,redo.log文件拷贝完成;
(8)innobackupex收到redo.log备份完成后,就进行解锁操作,执行:UNLOCK TABLES;
(9)最后innbackupex和xtrabackup进程各自释放资源,写备份元数据信息等,innobackupex等xtrabackup子进程结束后退出。
Xtrabackup的安装:
//下载安装
[root@dzc ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.22-15/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.22-15.1.el8.x86_64.rpm
--2021-08-30 03:00:18-- https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.22-15/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.22-15.1.el8.x86_64.rpm
正在解析主机 downloads.percona.com (downloads.percona.com)... 162.220.4.221, 162.220.4.222, 74.121.199.231
正在连接 downloads.percona.com (downloads.percona.com)|162.220.4.221|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:13563076 (13M) [application/octet-stream]
正在保存至: “percona-xtrabackup-80-8.0.22-15.1.el8.x86_64.rpm”
percona-xtrabackup-80-8.0.22-15.1.el8.x86_64.rpm 100%[=======================================================================================================>] 12.93M 2.62MB/s 用时 5.4s
2021-08-30 03:00:27 (2.40 MB/s) - 已保存 “percona-xtrabackup-80-8.0.22-15.1.el8.x86_64.rpm” [13563076/13563076])
[root@dzc ~]# yum -y localinstall percona-xtrabackup-80-8.0.22-15.1.el8.x86_64.rpm
评论区