Mysql之xtrabackup工具的使用

xtrabackup介绍

MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周实用完整备份,周一到周六实用增量备份。而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具

注:xtrabackup只能备份innoDB和xtraDB两种数据引擎的表,而不能备份MyISAM数据表。

xtrabackup优缺点

XtraBackup的优点:

(1)备份速度快,物理备份可靠
(2)备份过程不会打断正在执行的事务(无需锁表)
(3)能够基于压缩等功能节约磁盘空间和流量
(4)自动备份校验
(5)还原速度快
(6)可以流传将备份传输到另外一台机器上
(7)在不增加服务器负载的情况备份数据

XtraBackup的缺点:
(1)文件大
(2)不总是可以跨平台、操作系统和MySQL版本

xtrabackup的使用

XtraBackup 8.0支持mysql 8.0

XtraBackup 2.4支持mysql 5.1、5.5、5.6、5.7

XtraBackup 8.0下载地址:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

XtraBackup 2.4下载地址:https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/ 

解压安装包

rpm -ivh percona-xtrabackup-24-2.4.21-1.el6.x86_64.rpm

warning: percona-xtrabackup-24-2.4.21-1.el6.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
error: Failed dependencies:
	libev.so.4()(64bit) is needed by percona-xtrabackup-24-2.4.21-1.el6.x86_64
	perl(DBD::mysql) is needed by percona-xtrabackup-24-2.4.21-1.el6.x86_64
	perl(Digest::MD5) is needed by percona-xtrabackup-24-2.4.21-1.el6.x86_64

可能会出现以上错误,是因为缺少依赖包导致的

wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm

rpm -ivh libev-4.04-2.el6.x86_64.rpm

yum -y install perl-DBD*

yum -y install perl-Digest*

依赖包安装完成后重新解压即可 

echo "export PATH=\$PATH:/usr/local/xtrabackup/bin" >> /etc/profile

登录数据库创建备份用户

mysql -uroot -p

create user 'backup'@'%' identified by 'yayun';
grant all privileges on *.* to 'backup'@'%' identified by 'yayun';
flush privileges;

创建目录存放mysql备份文件

mkdir -p /data/backup/

mkdir -p /data/backup/inc1

mkdir -p /data/backup/inc2

全量备份

#mysql.sock填入自己实际路径即可

innobackupex --defaults-file=/etc/my.cnf --user=backup --password=yayun --socket=/tmp/mysql.sock /data/backup

#在做增量备份时,自己可以先对数据库添加点数据

第一次增量备份

#incremental-basedir指定全量备份生成的文件

innobackupex --defaults-file=/etc/my.cnf --user=backup --password=yayun --socket=/tmp/mysql.sock --incremental /data/backup/inc1 --incremental-basedir=/data/backup/2022-04-18_19-54-40

第二次增量备份

#incremental-basedir指定第一次增量备份生成的文件

innobackupex --defaults-file=/etc/my.cnf --user=backup --password=yayun --socket=/tmp/mysql.sock --incremental /data/backup/inc2 --incremental-basedir=/data/backup/inc1/2022-04-18_19-56-38

查看备份文件

#可以看到除了全量备份外,其他两个增量备份都很小

[root@localhost backup]# du -sh 2022-04-18_19-54-40/
142M	2022-04-18_19-54-40/

[root@localhost inc1]# du -sh 2022-04-18_19-56-38/
11M	2022-04-18_19-56-38/

[root@localhost inc2]# du -sh 2022-04-18_19-58-24/
11M	2022-04-18_19-58-24/  

备份恢复

#先停止mysql数据库

systemctl stop mysqld

#将数据库data目录中的数据删除,可以先进行备份,data目录根据自己实际情况而定

mv /usr/local/mysql/data /usr/local/mysql/data_backup20220419

mkdir /usr/local/mysql/data

#全量备份回滚,这里指定到全量备份生成的文件

innobackupex --apply-log --redo-only /data/backup/2022-04-18_19-54-40

#第一次增量备份回滚,这里指定到第一次增量备份生成的文件

innobackupex --apply-log --redo-only /data/backup/2022-04-18_19-54-40  --incremental-dir /data/backup/inc1/2022-04-18_19-56-38

#第二次增量备份回滚,,这里指定到第二次增量备份生成的文件

innobackupex --apply-log /data/backup/2022-04-18_19-54-40  --incremental-dir /data/backup/inc2/2022-04-18_19-58-24

#数据copy到数据库目录,这里指定到全量备份生成的文件

innobackupex --copy-back /data/backup/2022-04-18_19-54-40

授权data目录

chown -R mysql.mysql /usr/local/mysql/data

重启mysql即可

systemctl restart mysqld

posted @ 2022-04-19 18:12  RFAA  阅读(422)  评论(0编辑  收藏  举报