> 文档中心 > MySQL热备之PXB备份与恢复

MySQL热备之PXB备份与恢复


📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.PXB介绍
    • 📣 2.PXB特点
    • 📣 3.MySQL8.0安装
      • ✨ 3.1 安装依赖
      • ✨ 3.2 创建目录
      • ✨ 3.3 创建快捷方式
      • ✨ 3.4 用户组添加
      • ✨ 3.5 初始化
      • ✨ 3.6 环境变量
      • ✨ 3.7 新增用户改密码
    • 📣 4.PXB安装
    • 📣 5.备份恢复
      • ✨ 5.1 全备和恢复
      • ✨ 5.2 增备恢复

前言

Percona-Xtrabackup就是为了实现MySQL增量备份而出现的一款主流备份工具。


📣 1.PXB介绍

Xtrabackup 是由 Percona 公司提供的一款 MySQL 数据库备份恢复工具,是一款开源的能够对 Innodb 和 xtradb 存储引擎数据库进行热备的工具(备份时不影响数据读写)MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份, 在实际生产环境中增量备份是非常实用的.,而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具。

官网:https://www.percona.com/
下载地址:https://www.percona.com/downloads/

MySQL热备之PXB备份与恢复

📣 2.PXB特点

(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;
注意事项
1.PXB的版本8.0 只支持mysql8.0版本
2.PXB的版本2.4 只支持mysql5.6、5.7
3.PXB一定要和mysql服务安装在一起

📣 3.MySQL8.0安装

✨ 3.1 安装依赖

cd /etc/yum.repos.d/sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*生成缓存更新yum makecacheyum install net-tools -yyum install libaioyum -y install perl perl-develyum install libncurses*yum -y install autoconfyum -y install numactl.x86_64

✨ 3.2 创建目录

mkdir -p /usr/local/mysqlsofttar -Jxf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysqlsoft

✨ 3.3 创建快捷方式

mkdir -p /usr/local/mysql80ln -s /usr/local/mysqlsoft/mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql80/mysql8027

✨ 3.4 用户组添加

groupadd mysqluseradd -r -g mysql mysqlchown -R mysql:mysql /usr/local/mysqlsoft

✨ 3.5 初始化

/usr/local/mysql80/mysql8027/bin/mysqld --initialize-insecure --user=mysql \--basedir=/usr/local/mysql80/mysql8027 --datadir=/usr/local/mysql80/mysql8027/data

✨ 3.6 环境变量

[root@pxb /]# echo "export PATH=$PATH:/usr/local/mysql80/mysql8027/bin" >> /root/.bashrc[root@pxb /]# source /root/.bashrc## 启动mysqlmysqld_safe &

MySQL热备之PXB备份与恢复

✨ 3.7 新增用户改密码

[root@pxb ~]# mysql -uroot -pmysql> select user,host,authentication_string from mysql.user; mysql> ALTER USER root@'localhost' identified with mysql_native_password BY 'root';mysql> select user,host,authentication_string from mysql.user;mysql> create user root@'%' identified with mysql_native_password by 'root';mysql> grant all on *.* to root@'%' with grant option;mysql> flush privileges;

MySQL热备之PXB备份与恢复

📣 4.PXB安装

[root@pxb /]# tar -zxvf percona-xtrabackup-8.0.28-20-Linux-x86_64.glibc2.17.tar.gz[root@pxb /]# mv percona-xtrabackup-8.0.28-20-Linux-x86_64.glibc2.17 /usr/local/percona-xtrabackup##创建软连接[root@pxb /]# ln -s /usr/local/percona-xtrabackup/bin/xtrabackup /usr/bin/xtrabackup[root@pxb /]# ln -s /usr/local/percona-xtrabackup/bin/xbstream /usr/bin/xbstream[root@pxb /]# which xtrabackup  /usr/bin/xtrabackup[root@pxb /]# xtrabackup -versionxtrabackup version 8.0.28-20 based on MySQL server 8.0.28 Linux (x86_64) (revision id: 4cc3081873d)

MySQL热备之PXB备份与恢复

📣 5.备份恢复

✨ 5.1 全备和恢复

1.登陆mysql[root@pxb /]# mysql -uroot -pmysql> select @@socket;+-----------------+| @@socket |+-----------------+| /tmp/mysql.sock |+-----------------+1 row in set (0.00 sec)##环境准备create database ceshi character set utf8mb4;create table ceshi.articles (id int primary key auto_increment,content longtext not null) ENGINE=InnoDB;insert into ceshi.articles (id,content) values (11,'aa'),(12,'bb'),(13,'cc'),(14,'dd');mysql> select * from ceshi.articles;+----+---------+| id | content |+----+---------+| 11 | aa      || 12 | bb      || 13 | cc      || 14 | dd      |+----+---------+4 rows in set (0.00 sec)2.全量备份[root@pxb /]# mkdir -p /bk/[root@pxb /]# xtrabackup -uroot -proot -S/tmp/mysql.sock --backup --target-dir=/bk/full3.全量恢复##prepare过程[root@pxb /]# xtrabackup --prepare --target-dir=/bk/full --no-server-version-check“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态##copy-back过程,先关闭数据库[root@pxb /]# cd /usr/local/mysql80/mysql8027/data[root@pxb data]# rm -rf *[root@pxb /]# xtrabackup --copy-back --target-dir=/bk/full --datadir=/usr/local/mysql80/mysql8027/data[root@pxb /]# chown -R mysql:mysql /usr/local/mysql80/mysql8027/data4、启动数据库验证数据## 启动mysqlmysqld_safe &mysql> select * from ceshi.articles;+----+---------+| id | content |+----+---------+| 11 | aa      || 12 | bb      || 13 | cc      || 14 | dd      |+----+---------+4 rows in set (0.01 sec)

✨ 5.2 增备恢复

1.插入数据mysql> insert into ceshi.articles (id,content) values (110,'bbbbbbb'),(111,'ccccc'),(112,'aaaaaa'),(113,'dddddddd');mysql> select * from ceshi.articles;+-----+----------+| id  | content  |+-----+----------+|  11 | aa||  12 | bb||  13 | cc||  14 | dd|| 110 | bbbbbbb  || 111 | ccccc    || 112 | aaaaaa   || 113 | dddddddd |+-----+----------+8 rows in set (0.00 sec)在做增备前做一次全备[root@pxb /]# xtrabackup -uroot -proot -S/tmp/mysql.sock --backup --target-dir=/bk/full2.一级增备[root@pxb /]# xtrabackup -uroot -proot -S/tmp/mysql.sock --backup --target-dir=/bk/inc1 --incremental-basedir=/bk/full3.二级增备xtrabackup -uroot -proot -S/tmp/mysql.sock --backup --target-dir=/bk/inc2 --incremental-basedir=/bk/inc14.恢复增备xtrabackup --prepare --apply-log-only --target-dir=/bk/full/##将第一次增备加载至全备中xtrabackup --prepare --apply-log-only --target-dir=/bk/full/ --incremental-dir=/bk/inc1##将第二次增备加载至全备中xtrabackup --prepare --target-dir=/bk/full/ --incremental-dir=/bk/inc2##恢复的过程xtrabackup --copy-back --target-dir=/bk/full/ --datadir=/usr/local/mysql80/mysql8027/datachown -R mysql:mysql /usr/local/mysql80/mysql8027/data

MySQL热备之PXB备份与恢复
在这里插入图片描述