跳转至

17. xtrabackup安装使用

1. 下载rpm包

# 浏览器访问:    https://www.percona.com/downloads/Percona-XtraBackup-LATEST/#
# 选择下载的版本
# 选择平台

img_2.png

# 选择好后,就会出现下载链接

1. 2.4版本下载

# 2.4版本的下载地址    https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
# 选择好版本和平台后,就可以下载了
# 一共4个选项,下载第二个
percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm

2. 下载二进制包

# 选择目前最新版本:8.0.26-18
# 选择Linux-Generic,二进制包
# 选择第3个,558MB!点击下载
# 二进制包比较大,但是解压缩就能用,类似绿色软件!

2. 安装依赖环境

yum install -y perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

3. 安装rpm

#1.准备安装包
[root@151 ~]# ls
percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm

#2.安装2.4.22
[root@151 ~]# rpm -ivh percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm
warning: percona-xtrabackup-24-2.4.22-1.el7.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.22-1.el7.x86_64
        perl(Digest::MD5) is needed by percona-xtrabackup-24-2.4.22-1.el7.x86_64

#3.下载依赖包1
[root@151 ~]# yum install -y libev
#4.查找依赖包2
[root@151 ~]# yum list |grep perl|grep Digest

#5.下载依赖包2
[root@151 ~]# yum install -y perl-Digest-MD5.x86_64

#6.再次安装2.4.22,成功
[root@151 ~]# rpm -ivh percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm
warning: percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:percona-xtrabackup-24-2.4.22-1.el################################# [100%]

#7.查看安装的包信息
[root@151 ~]# rpm -qa |grep xtrabackup
percona-xtrabackup-24-2.4.22-1.el7.x86_64

##8.查看命令
[root@151 ~]# inno
innobackupex  innochecksum

4. xbk备份实现原理

1.非innodb引擎,锁定表,直接复制表数据文件
2.innodb引擎
    1)在备份开始时刻,立即触发checkpoint动作,将内存数据刷写到磁盘
    2)拷贝此时所有的数据文件,以及在此过程中产生的日志文件(redo、undo)
        数据页+日志
        备份完成后:
        ibd
        frm
        idata1

热备:备份某个时间点的数据,以及备份过程中产生的变化数据
# xbk只能实现全备和增量备份

5. 备份命令简单使用

mkdir /backup
#加上socket文件
innobackupex --user=root --password=123456 -S /application/mysql/tmp/mysql.sock  /backup
#执行后,生成以当前时间命名的备份目录
[root@151 ~]# ls /backup/
2021-04-29_17-15-22
[root@151 ~]# ls /backup/2021-04-29_17-15-22/
backup-my.cnf  ibdata1  luffy  luffy2  mysql  performance_schema  test  world  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile
[root@151 ~]#
#备份目录中的文件
xtrabackup_binlog_info:     #备份时间点二进制日志信息
xtrabackup_checkpoints:     #
xtrabackup_info:            #详细显示
xtrabackup_logfile:         #备份期间产生的redo日志文件

6. 全备

#不加时间戳目录,自己指定目录
innobackupex --user=root --password=123456 --no-timestamp /backup/full
#加上socket文件测试
innobackupex --user=root --password=123456 -S /application/mysql/tmp/mysql.sock --no-timestamp /backup/full
[root@151 ~]# innobackupex --user=root --password=123456 -S /application/mysql/tmp/mysql.sock --no-timestamp /backup/full
[root@151 ~]# ls /backup/
2021-04-29_17-15-22  full
[root@151 ~]# ls /backup/full/
backup-my.cnf  ibdata1  luffy  luffy2  mysql  performance_schema  test  world  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile

7. 恢复全备

1.停库

pkill mysqld
netstat -tunlp|grep 330

2.删数据

ls /application/mysql/data/
rm -rf /application/mysql/data/*
ls /application/mysql/data/
[root@151 ~]# pkill mysqld
[root@151 ~]# netstat -tunlp|grep 330
[root@151 ~]#
[root@151 ~]#
[root@151 ~]# ls /application/mysql/data/
151.err  auto.cnf  ibdata1  ib_logfile0  ib_logfile1  luffy  luffy2  mysql  performance_schema  test  world
[root@151 ~]# rm -rf /application/mysql/data/*
[root@151 ~]# ls /application/mysql/data/
[root@151 ~]#

3.准备备份(使用redo前滚,undo回滚,保证数据一致性)

innobackupex --apply-log /backup/full/
root@151 ~]# innobackupex --apply-log /backup/full/

4.恢复数据:

#方法1
cp -a /backup/full/*    /application/mysql/data/
#方法2

#加数据目录,加上测试
innobackupex --copy-back --datadir=/application/mysql/data  /backup/full/

8. 改权限

chown -R mysql.mysql /application/mysql/data/*

9. 起数据库,验证数据

/etc/init.d/mysqld start
mysql -uroot -p

show databases;
#成功!
[root@151 ~]# chown -R mysql.mysql /application/mysql/data/*
[root@151 ~]#
[root@151 ~]#
[root@151 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/application/mysql-5.6.36/data/151.err'.
.. SUCCESS!
[root@151 ~]#
[root@151 ~]#
[root@151 ~]#
[root@151 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.36 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| luffy              |
| luffy2             |
| mysql              |
| performance_schema |
| test               |
| world              |
+--------------------+
7 rows in set (0.00 sec)

mysql>

最后更新: 2022-02-20 11:21:58