MySQL热备之PXB备份与恢复

news2024/12/23 2:20:21

📢📢📢📣📣📣
哈喽!大家好,我是【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/

在这里插入图片描述

📣 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 makecache
yum install net-tools -y


yum install libaio
yum -y install perl perl-devel
yum install libncurses*
yum -y install autoconf
yum -y install numactl.x86_64

✨ 3.2 创建目录

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

✨ 3.3 创建快捷方式

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

✨ 3.4 用户组添加

groupadd mysql
useradd -r -g mysql mysql
chown -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
## 启动mysql
mysqld_safe &

在这里插入图片描述

✨ 3.7 新增用户改密码

[root@pxb ~]# mysql -uroot -p
mysql> 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;

在这里插入图片描述

📣 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 -version
xtrabackup version 8.0.28-20 based on MySQL server 8.0.28 Linux (x86_64) (revision id: 4cc3081873d)

在这里插入图片描述

📣 5.备份恢复

✨ 5.1 全备和恢复

1.登陆mysql
[root@pxb /]# mysql -uroot -p
mysql> 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/full


3.全量恢复
##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/data

4、启动数据库验证数据
## 启动mysql
mysqld_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/full

2.一级增备
[root@pxb /]# xtrabackup -uroot -proot -S/tmp/mysql.sock --backup --target-dir=/bk/inc1 --incremental-basedir=/bk/full

3.二级增备
xtrabackup -uroot -proot -S/tmp/mysql.sock --backup --target-dir=/bk/inc2 --incremental-basedir=/bk/inc1

4.恢复增备
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/data
chown -R mysql:mysql /usr/local/mysql80/mysql8027/data

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【语音处理】使用块反射器的基于DFT的系统中用于旁瓣抑制的正交预编码(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

Java中的多线程(下)

作者:~小明学编程 文章专栏:JavaEE 格言:热爱编程的,终将被编程所厚爱。 目录 多线程案例 单例模式 饿汉模式 懒汉模式 阻塞式队列 为什么要引入阻塞队列 Java中的阻塞队列 模拟实现阻塞队列 定时器 标准库中的定时器 …

docker的虚悬镜像是什么?

虚悬镜像是什么? 答:仓库名、标签都是<none>的镜像,俗称:dangling image 我们使用Dockerfile写一个: 1:编写 from ubuntu CMD echo action is success2:构建 docker build . 注意没有 -t 产生原因: 1:构建时候因为编写错误导致 2:删除的时候 对于这样…

数据溢出的二进制原理

char 类型的数据占一个字节&#xff0c;一个字节有 8 位&#xff0c;最高位为符号位&#xff0c;1表示负数&#xff0c;0表示正数。在计算机中&#xff0c;数据用补码表示&#xff0c;正数的补码是它本身&#xff0c;负数的补码为 “符号位不变&#xff0c;其他位取反后再加1”…

Spring Cloud 系列之OpenFeign:(4)集成OpenFeign

目录 传送门 服务间调用 集成OpenFeign 说明文档 添加pom依赖 启用OpenFeign 声明OpenFeign接口 改造远程调用 定义OpenFeign接口 测试OpenFeign调用 传送门 Spring Cloud Alibaba系列之nacos&#xff1a;(1)安装 Spring Cloud Alibaba系列之nacos&#xff1a;(2)单…

离散数学数理逻辑部分【2】

文章目录命题逻辑等值演算公式的使用【重点】析取范式和合取范式【重点】范式存在定义【了解】求公式A的范式的步骤&#xff1a;【重点】极大项和极小项【重点】主合取范式和主析取范式【重点】等式演算求主析取范式【重点】真值表求主析取范式【了解】主范式的应用【重点】推理…

Python : 使用python实现教务管理系统(GUI界面+数据库)

一、设计目的 1.熟悉Python和相关软件的操作。 2.基于本学期所学Python知识&#xff0c;熟练应用掌握&#xff0c;制作符合要求的教务管理系统。 3.会对程序运行中的错误代码进行分析&#xff0c;找出合理的解决方案。 4.掌握tkinter开发流程&#xff0c;布局方法和主要组件&a…

C语言位域

如果程序的结构中包含多个开关量&#xff0c;只有 TRUE/FALSE 变量&#xff0c;如下&#xff1a; struct {unsigned int widthValidated;unsigned int heightValidated; } status; 这种结构需要 8 字节的内存空间&#xff0c;但在实际上&#xff0c;在每个变量中&#xff0c;…

JavaScript游戏开发(4)(笔记)

文章目录八、角色动作状态的管理8.1 准备部分8.2 角色状态改变的基本方式8.3 完善整个代码8.4 存在的问题九、简单的横板动作卷轴游戏9.1 准备部分9.2 输入管理器9.3 状态管理器9.4 背景管理器9.5 敌人管理器9.6 碰撞检测、UI绘制9.7 更多的角色状态与特效9.8 完善游戏附录素材…

跳槽、换房、不忘输出,与你分享我匆忙的 2022~

前些日子下班回家的瞬间&#xff0c;忽然想起去年春节还在跟老爸吐露职场的困境和对房子的无奈。哪曾想过了不到半年的时间竟全部解决&#xff0c;令我不禁感叹人生的捉摸不透。 让我姑且花点文字记录下&#xff0c;与你分享我这一年的匆匆忙忙&#xff5e; 目录前瞻&#xf…

Listener监听器 | 监听域对象创建和销毁、使用监听器统计网站在线人数

目录 一&#xff1a;监听域对象创建和销毁 1、什么是监听器&#xff1f;监听器有什么用&#xff1f; 2、Servlet规范中提供了哪些监听器&#xff1f; 3、实现一个监听器的步骤 4、HttpSessionBindingListener 5、HttpSessionIdListener & HttpSessionActivationList…

【编译原理】实验二:NFA到DFA

目录 实验二 NFA 到 DFA 一、实验目的 二、预备知识 三、实验内容 NFA向DFA的转换的思路 NFA和DFA之间的联系 NFAToDFA.h 文件 main.c 文件 RegexpToPost.c 文件 PostToNFA.c 文件 NFAFragmentStack.c 文件 PostToNFA.h 文件 NFAFragmentStack.h 文件 NFAStateStack.h 文件 dem…

【C++】使用yaml-cpp操作yaml文件

目录 1 安装yaml-cpp 2 工程结构 &#xff08;1&#xff09;test.yaml的内容 &#xff08;2&#xff09;CmakeLists.txt &#xff08;3&#xff09;代码 3 运行结果 4 报错处理 1 安装yaml-cpp &#xff08;1&#xff09;cd 到yaml-cpp下载的目的路径 例如&#xff1a;…

spring之反射机制之Spring-DI核心实现

文章目录前言一、回顾反射机制之反射调用方法1、编写一个方法类SomeService2、通过反射机制调用SomeService类中的方法二、反射机制之Spring-DI核心实现前言 调用一个方法当中含有几个要素&#xff1f; 1、调用哪个对象 2、调用哪个方法 3、调用方法的时候传什么参数 4、方法执…

一文弄懂 React ref

前言 对于 Ref 理解与使用&#xff0c;一些读者可能还停留在用 ref 获取真实 DOM 元素和获取类组件实例层面上 其实 ref 除了这两项常用功能之外&#xff0c;还有很多别的小技巧 通过本篇文章的学习&#xff0c;你将收获 React ref 的基本和进阶用法&#xff0c;并且能够明白…

LeetCode HOT 100 —— 621. 任务调度器

题目 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行&#xff0c;并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间&#xff0c;CPU 可以完成一个任务&#xff0c;或者处于待命状态。 然…

使用 SwiftUI 布局协议构建六边形网格,如何制作在六边形网格中显示子视图的通用 SwiftUI 容器

我们将要制作的组件可以作为Swift 包使用。 SwiftUI 非常擅长构建矩形框架的层次结构。随着最近的加入,Grid它变得更好了。然而,今天我们要构建一个疯狂的六边形布局。当然,没有专门的布局类型。所以我们用协议建立我们自己的Layout! 绘制一个六边形 让我们首先为我们的…

在linux中配置redis去中心化集群

目录 前情回顾 一、集群配置 二、启动redis集群 三、检验是否成功 成功&#xff01; 前情回顾 linux中配置redis主从复制及开启哨兵模式 一、集群配置 查看所有的redis服务进程 ps -ef | grep redis 关闭所有的redis服务&#xff08;6379,6380,6381) kill -9 99168 kill …

第十章:数据库恢复技术

1、【多选题】下列哪些属于事务的特征&#xff1a; 正确答案&#xff1a; AD 2、【多选题】下列关于故障恢复的说法正确的是&#xff1a; 正确答案&#xff1a; BC 3、【多选题】下列说法错误的是&#xff1a; 正确答案&#xff1a; AB

无线通信网络优化的自动路测系统设计(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 无线通信网络是一个动态的网络&#xff0c;无线网络优化是一项贯穿于整个网络发展全过程的长期工程。在网络建成投入运营以后,…