数据备份与恢复--MySQL--XtraBackup

在进行性能测试、操作数据的过程中可能会出现数据错误,甚至数据库崩溃的情况,而有效的定时备份能很好地保护数据库。
但MySQL备份工具种类繁多,如何在这些繁杂的工具中找到一款适合自己的呢?
想知道答案的话,就跟随小编往下看吧!
1 MySQL数据备份策略
首先,让我们了解下MySQL数据备份策略。常见的MySQL数据备份策略有以下三种:
1. 直接拷贝数据库文件(文件系统备份工具CP):适合小型数据库,是最可靠的。
2. 利用mysqldump(单线程)/mysqlpump(多线程)/mysqldumper(多线程)备份数据库(完全备份+增加备份):备份数据速度相对较慢,适合中小型数据库。
3. 利用XtraBackup(免费)/innobackup(收费)/mysqlbackup(收费)备份数据库:从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份,适合业务比较繁忙的大型数据库。
在性能测试过程中,随着性能测试种类(负载测试、压力测试、并发测试、可靠性测试…)及场景的不断增加,数据量也在不断倍增,mysqldumper在大数据量面前已经显得捉襟见肘。
因此,对于数据库十分庞大的苍穹系统而言,采取第三种数据备份策略更为合适。但具体应选择哪一款备份工具呢?XtraBackup是一款又快又好用且零成本的备份工具,可满足苍穹系统。
接下来,小编就为大家详细讲解如何利用XtraBackup对MySQL数据进行备份与还原。
注:后续讲解均基于MySQL5.x版本。
2 数据备份类型
在讲解具体的备份与还原步骤前,我们有必要先了解下备份类型。
备份类型主要分为热备与冷备两种:
1)热备:在线备份,在数据库节点不停机的状态下执行的备份。
热备存在的问题:数据库备份的时候会全局加读锁,备份期间节点只能读取数据不能写入数据。

热备原理示例
2)冷备:需要停机,在数据库已经关闭的情况下对数据进行备份。
冷备存在的问题:
数据库必须停机备份;
备份的文件非常占用存储空间,不支持增量备份;
冷备的是所有数据文件和日志文件,所以无法按照逻辑库和数据表恢复数据。

冷备原理示例
注:
从另外一个维度出发,数据备份可分为逻辑备份及物理备份,如下所示:

逻辑备份与物理备份区别
3 XtraBackup工具简介
XtraBackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源、免费、支持在线热备、备份恢复速度快、占用磁盘空间小等特点,并且支持不同情况下的多种备份形式。
XtraBackup的官方下载地址如下:
http://www.percona.com/software/percona-xtrabackup。
XtraBackup包含两个主要的工具,即xtrabackup和innobackupex。
3.1 优势
1. 备份过程中加读锁,数据可读,但是不可写;
2. 备份过程不会打断正在执行的事务;
3. 能够基于压缩等功能节约磁盘空间和流量。
3.2 原理
1. 物理备份工具,通过协议链接到MySQL服务端,然后读取并复制底层的文件,完成物理备份。

XtraBackup备份原理示例
2. 支持对InnoDB引擎做全量备份和增量备份,但对MyISAM引擎只能做全量备份。

XtraBackup全量备份原理示例
增量备份的过程主要是通过拷贝innodb中有变更的“页”,这些变更的数据页指的是“页”的LSN(Log Sequence Number,日志序列号)大于xtrabackup_checkpoints中给定的LSN。

XtraBackup增量备份原理示例
当数据库执行了delete、update、insert操作,LSN变大,备份工具会识别这个最大号备份,从而执行增量备份。
3.3 安装方法
利用Centos7安装XtraBackup,具体方法如下:
软件包下载:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.24/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.24-1.el7.x86_64.rpm
软件包安装:
yum install -y percona-xtrabackup-24-2.4.24-1.el7.x86_64.rpm

XtraBackup安装示例
3.4 常用命令

XtraBackup常用命令
小知识:
1. Xbstream创建压缩文件和写入压缩包有2次IO操作,而使用流式压缩不需要创建硬盘文件,直接创建压缩文件,只有1次IO操作。

备份和压缩文件原理示例
2. XtraBackup无法备份MyISAM引擎,且只能备份数据文件,无法备份结构文件 。
3. innobackupex支持备份数据文件、结构文件和索引文件,同时也支持备份MyISAM引擎,但只能全量备份不能增量备份,而备份inNoDB引擎则支持全量和增量备份。
虽然目前一般不用MyISAM表,但是MySQL库下的系统表是MyISAM,因此备份基本都是通过innobackupex命令进行。
3.5 备份流程
XtraBackup的备份流程如下所示:

XtraBackup备份流程图
4 XtraBackup备份与还原详解
4.1 全量备份
全量备份是备份全部数据。备份过程时间长,占用空间大。
备份命令如下:
innobackupex --defaults-file=/etc/my.cnf --host=192.168.99.151 --user=admin --password=admin --port=3306 -S /var/lib/mysql/mysql.sock --compress --compress-threads=8 --compress-chunk-size=4G --parallel=4 --stream=xbstream ./ >/home/demo1.xbstream
命令解析如下:
--defaults-file:该选项指定了从哪个文件读取MySQL配置,必须放在命令行的第一个选项位置。
--host:该选项表示备份的数据库地址,如果备份的是本机,可省略。
--user:该选线表示备份的账号。
--password:该选项表示备份的密码。
--port:该选线表示备份的端口号,如果端口号为默认的3306,可省略。
--stream:开启流式压缩。
--compress:开启压缩。
--compress-threads=8:使用8个线程做压缩,默认使用4个线程。
--compress-chunk-size:压缩线程的缓存,机器内存够大可以配置大一些。
--parallel=4:备份线程数4个,默认使用4个。
-S:备份数据库启动的sock。
./:表示备份当前数据库所有内容。
--databases:该选项接收的参数为数据库名,如果要指定多个数据库,彼此间需要用空格隔开,例:xtra_test dba_test。该选项对innodb引擎表无效,还是会备份所有的innodb表。例子:mysqldatabase.tablebos。
--include:需要备份的数据表的正则表达式。
查看备份结果,如下图所示:

备份结果示例
查看备份目录,如下图所示:

备份目录示例
小知识:
1. 不建议使用远程备份,远程备份有大量IO操作及网络传输,且需要查找本地MySQL数据目录,软件也不支持断点续传。
2. 推荐使用流式备份--stream=xbstream,例如:500GB的数据文件耗时80分钟压缩之后,文件大小为170GB,而流式备份耗时40分钟即可将文件大小压缩至46GB,无论是时间还是空间,流式备份的优势明显。
3. 可以指定数据库备份,但是不建议这么做,备份完整的库,能够避免恢复时出现意料之外的问题。
4. MySQL备份文件包含:数据文件、日志文件(事务日志、二进制日志)、存储过程、存储函数、触发器、配置文件。
4.2 增量备份
增量备份只备份变化的那部分数据,备份时间短,占用空间小。

增量备份原理示例
注:增量备份前提是必须先做一轮全量备份。
增量备份命令:
Innobackupex --defaults-file=/etc/my.cnf --host=192.168.0.100 --user=admin --password=admin --port=3306 --incremental-basedir=/home/backup/2021-09-17_22-30-52 --compress --compress-thread=8 --stream=xbtream --incremental /home/backup/increment
命令解析:
--incremental-basedir:全量备份路径,如第二次增量,填写第一次增量路径。
--incremental:增量备份路径,如第二次增量,填写第二次增量备份路径。
注意事项:
无论全量热备份使用了流式压缩,还是内容加密,都必须解密、解压缩成普通全量热备份。
增量热备份可以使用流式压缩或者内容加密。
增量备份不单只备份数据文件,还备份日志。
4.3 全量还原
全量还原的具体步骤如下:
步骤一: 删除数据库,然后恢复全备,命令如下:
mysql> drop database XXX_database;Query OK, 1 row affected (0.04 sec)
步骤二:关闭MySQL数据库,命令如下:
[root@MySQL-PerTest]# /etc/init.d/mysqld stopShutting do
数据备份与恢复--MySQL--XtraBackup
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



