xtrabackup工具介绍、安装及模拟数据库故障使用xtrabackup工具恢复数据等操作详细说明

一、xtrabackup工具介绍

Percona XtraBackup

Percona XtraBackup是一个适用于MySQL的开源热备份工具,它在备份期间不锁表。它可以备份InnoDB、XtraDB以及MyISAM存储引擎的表。

2.4版本支持MySQL5.1、5.5、5.6以及5.7。

它有两个实用命令,分别是xtrabackup和innobackupex,xtrabackup只能备份InnoDB和XtraDB两种存储引擎的表,innobackupex是一个Perl脚本,封装了xtrabackup,它还可以备份MyISAM存储引擎的表,但在处理MyISAM存储引擎的表时需要加一个读锁。

Xtrabackup有如下优点:

备份速度快,物理备份可靠

备份过程不会打断正在执行的事务(无需锁表)

能够基于压缩等功能节约磁盘空间和流量

自动备份校验

还原速度快

可以流传,就是将备份传输到另外一台机器上

在不增加服务器负载的情况下备份数据

Xtrabackup的备份原理如下:

XtraBackup是基于InnoDB的crash-recovery功能的。它会复制InnoDB的数据文件,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得恢复的数据一致。

InnoDB维护了一个事务日志,它包含了InnoDB数据的所有改动情况。当InnoDB启动的时候,它会先去检查数据文件和事务日志,并且会做两步操作:

1、应用已提交的事务日志项到数据文件;

2、对任何修改了数据但是没有提交的事务日志项执行回滚。

XtraBackup在备份的时候,一页一页地复制InnoDB的数据,而且不锁表,与此同时,XtraBackup还有另外一个线程监视着事务日志,一旦事务日志发生变化,就把变化过的日志页复制走。为什么要急着复制走呢?因为事务日志的文件大小有限,写满之后,就会从头再开始写,所以新数据可能会覆盖到旧数据。

在prepare的过程中,XtraBackup使用复制到的事务日志对备份出来的InnoDB数据文件进行crash-recovery。

具体如下:

innobackupex启动后,会先派生一个进程,用于启动xtrabackup,然后等待xtrabackup备份数据文件;

xtrabackup在备份InnoDB数据时,有2种线程:事务日志复制线程和数据文件复制线程。xtrabackup进程开始执行后,会启动一个事务日志复制线程,用于从最新的检查点开始顺序复制事务日志;再启动数据文件复制线程,复制数据文件。这里是先启动事务日志复制线程的。在这个阶段,innobackupex进行处于等待状态;

xtrabackup复制完成数据文件之后,会通知innobackupex,同时xtrabackup进入等待状态(事务日志复制线程依旧在复制事务日志);

innobackupex收到xtrabackup通知后,执行FLUSH TABLES WITH READ LOCK(FTWRL),取得一致性位点,然后开始备份非InnoDB数据文件,在复制非InnoDB数据文件的过程中,数据库处于全局只读状态;

当innobackupex拷贝完所有的非InnoDB数据文件之后,会通知xtrabackup,通知完成后,进入等待状态;

xtrabackup收到innobackupex备份完成的通知之后,会停止事务日志复制线程,然后通知innobackupex,事务日志复制完成;

innobackupex收到事务日志复制完成的通知后,就进行解锁操作,执行:UNLOCK TABLES;

最后innbackupex和xtrabackup进程各自释放资源,写备份元数据信息等,innobackupex等xtrabackup子进程结束后退出。

注意,XtraBackup是以读写模式打开InnoDB数据文件,然后对其进行复制的。其实它不会修改此文件。也就是说,运行xtrabackup的用户,必须对InnoDB的数据文件具有读写权限。

二、数据库mysql5.7编译安装 

(一)、安装包下载

MySQL :: Download MySQL Community Server (Archived Versions)

进入上述mysql官方地址找到对应的mysql版本下载到服务器上即可。

(二)、步骤

1、压缩包上传至服务器并解压

tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz// 修改文件夹命令(可选)
mv mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz mysql57

2、进入mysql57,创建data和log文件

// 进入mysql57
cd mysql57/// 创建data 和 log文件,并修改权限
mkdir data
mkdir log
chmod 777 -R ./data
chmod 777 -R ./log

3、新建用户和组

sudo groupadd mysql
sudo useradd -r -g mysql mysql
sudo passwd mysql
# 输入用户mysql密码// 修改mysql57文件夹所属为mysql用户
chown -R mysql:mysql [mysql文件位置]

4、初始化MySQL

// 进入mysql-->bin目录下
cd [mysql文件位置]/bin// 数据库初始化
./mysqld --initialize --user=mysql --basedir=[mysql文件位置] --datadir=[mysql文件位置]/data// 复制mysql.server到/etc/init.d/mysqld;更快启动
sudo cp [mysql文件位置]/support-files/mysql.server /etc/init.d/mysqld

初始化密码如图位置(初始化密码建议复制到文本文件里方便安装完mysql之后使用)

5、编辑MySQL配置文件,相当于win的my.ini

vim /etc/my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
character-set-server=utf8
# 默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1

修改my.cnf权限

chmod -R 775 /etc/my.cnf

6、启动MySQL、停止、重启指令

启动:service mysqld start
停止:service mysqld stop
重启:service mysqld restart

7、启动成功后进入MySQL修改密码

mysql -uroot -p
# 输入密码:密码上边截图!或可修改配置文件跳过输入密码;// 提示以下信息
-bash :mysql :command not fount// 1、可以进入MySQL文件夹下的bin目录再次执行;
// 2、可以配置环境变量
vim /etc/profile
// 添加环境变量
export PATH=$PATH:[mysql解压位置]/bin// 更新配置文件
source /etc/profile

8、进入数据库,修改密码

#修改密码 
ALTER USER 'root'@'localhost' IDENTIFIED BY '修改的密码';
#刷新数据库
flush privileges;#配置远程访问
grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;
#刷新数据库
flush privileges;

9、设置开机自启(可选)

systemctl enable mysqld

三、xtrabackup工具安装

1、官网下载和mysql版本相对应的版本到服务器上

https://www.percona.com/downloads

上述为下载地址,找到对应的版本和适配你的centos版本的安装包下载到服务器上,此处是xtrabackup2.4适配mysql5.7,操作系统版本centos7

 2、把默认的CentOS yum源修改成国内的aliyun yum源

(1)安装Centos后默认的yum源如下
ll /etc/yum.repos.d
(2)把默认yum源备份(可选)
 mkdir /opt/centos-yum.bakmv /etc/yum.repos.d/* /opt/centos-yum.bak/
(3)下载aliyun yum源repo文件(对应自己的系统版本下载即可)
#各系统版本repo文件对应的下载操作
CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
(4)清除缓存
yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras updates
Cleaning up everything
Cleaning up list of fastest mirrors
yum makecache //把yum源缓存到本地,加快软件的搜索好安装速度
yum list 

3、安装xtrabackup

(1)安装依赖包

yum -y install libev perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
yum -y install rsync perl-Digest-MD5

(2)安装xtrabackup

rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

4、创建备份用户及设置权限

CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'password';GRANT RELOAD,LOCK TABLES,PROCESS,REPLICATION CLIENT ON . TO 'bkpuser'@'localhost';FLUSH PRIVILEGES;

5、配置xtrabackup、创建备份目录

vim /etc/my.cnf[xtrabackup]user=bkpuserpassword=password
mkdir -p /data/backups/mysql/full_backup
chown -R mysql:mysql /data/backups/mmysql/full_backup

四、xtrabackup备份及恢复  

1、执行一次全备份

xtrabackup --backup --target-dir=/data/backups/MySQL/full_backup备份过程如下:
---
2024-05-18T15:06:24.060430+08:00 0 [Note] [MY-011825] [Xtrabackup] Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: /data/data/mysql.sock
2024-05-18T15:06:24.081369+08:00 0 [Note] [MY-011825] [Xtrabackup] Using server version 8.0.33
2024-05-18T15:06:24.086956+08:00 0 [Note] [MY-011825] [Xtrabackup] Executing LOCK INSTANCE FOR BACKUP ...
...
2024-05-18T15:06:24.533828+08:00 1 [Note] [MY-011825] [Xtrabackup] >> log scanned up to (19730331)
2024-05-18T15:06:24.592403+08:00 0 [Note] [MY-012953] [InnoDB] Disabling background ibuf IO read threads.
2024-05-18T15:06:24.798005+08:00 0 [Note] [MY-011825] [Xtrabackup] Generating a list of tablespaces
2024-05-18T15:06:24.798132+08:00 0 [Note] [MY-012204] [InnoDB] Scanning './'
2024-05-18T15:06:24.803212+08:00 0 [Note] [MY-012208] [InnoDB] Completed space ID check of 2 files.
2024-05-18T15:06:24.809533+08:00 0 [Warning] [MY-012091] [InnoDB] Allocated tablespace ID 2 for testdb/testtab, old maximum was 0

2、在全备份的基准上执行第一次增量备份

xtrabackup --backup --target-dir=/data/backups/mysql_increase1 --incremental-basedir=/data/backups/mysql/full_backup
往后的每一次增量备份都以上一次增量备份为基准xtarbackup --backup --target-dir=/data/backups/mysql_increase2 --incremental-basedir=/data/backups/mysql_increase2

3、xtrabackup恢复数据库

(1)模拟数据库故障

cd /[数据库安装路径]
mv data data.bak

(2)恢复数据库(需要时间)

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backups/mysql/full_backup
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backups/mysql/full_backup

(3)恢复验证

登录数据库,看表情况是否和故障前的一样:

[root@node1 data]# mysql -uroot -p'root' testdb
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.33 MySQL Community Server - GPLCopyright (c) 2000, 2023, Oracle and/or its affiliates.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.root@node1 16:23:  [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| testtab          |
+------------------+
1 row in set (0.00 sec)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python之briefcase生成安卓app解决按钮字母变大写问题

最近修改千纬认字&#xff0c;要在按钮上用拼音&#xff0c;发现拼音会自动变成大写的拼音加音调。 查了一下发现是android的问题。 Android学习之Button按钮在程序运行时全部变大写的处理 - 叶是风的眼泪 - 博客园 按照文中写的 在style.xml文件中加入&#xff1a;<item …

初始爬虫13(js逆向)

为了解决网页端的动态加载&#xff0c;加密设置等&#xff0c;所以需要js逆向操作。 JavaScript逆向可以分为三大部分&#xff1a;寻找入口&#xff0c;调试分析和模拟执行。 1.chrome在爬虫中的作用 1.1preserve log的使用 默认情况下&#xff0c;页面发生跳转之后&#xf…

【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)

2024年人机交互与虚拟现实国际会议&#xff08;HCIVR 2024&#xff09; 2024 International Conference on Human-Computer Interaction and Virtual Reality 官方信息 会议官网&#xff1a;www.hcivr.org 2024 International Conference on Human-Computer Interaction and …

Cuda By Example - 7 (光线追踪)

第6章以实现简单的光线追踪为例子&#xff0c;引入了Constant Memory和性能测量方法。 Constant Memory NVIDIA的硬件提供了64K的constant只读内存。定义constant内存的变量&#xff0c;使用关键字__constant__。从constant内存里读取出来的数据&#xff0c;可以缓存起来&…

【Ubuntu18.04命令行code打不开】可能的解决方法

目录 问题&#xff1a;命令行code打不开文件尝试① kimi是这么说的② sudo apt-get install apparmor apparmor_utils③ 在混沌的操作完以上一通后&#xff0c;sudo apt-get install snapd 我试了将近一个小时 : ( so depressed 我只是想用vscode打开个文件夹&#xff0c;我甚至…

Leetcode 1129. 颜色交替的最短路径

1.题目基本信息 1.1.题目描述 给定一个整数 n&#xff0c;即有向图中的节点数&#xff0c;其中节点标记为 0 到 n – 1。图中的每条边为红色或者蓝色&#xff0c;并且可能存在自环或平行边。 给定两个数组 redEdges 和 blueEdges&#xff0c;其中&#xff1a; redEdges[i] …

从零入门AI篡改图片检测(金融场景)#Datawhale十月组队学习

1.大赛背景 在全球人工智能发展和治理广受关注的大趋势下&#xff0c;由中国图象图形学学会、蚂蚁集团、云安全联盟CSA大中华区主办&#xff0c;广泛联合学界、机构共同组织发起全球AI攻防挑战赛。本次比赛包含攻防两大赛道&#xff0c;分别聚焦大模型自身安全和大模型生成内容…

安装好的 Nginx 增加 nginx-module-vts 模块

目录 1. nginx-module-vts 准备 2.查看已安装的的 nginx 编译参数 3. 重新编译 nginx 添加 nginx-module-vts 模块 4. 验证 1. nginx-module-vts 准备 # 解压 unzip nginx-module-vts-master.zip # 将解压包移动到/usr/local/目录 mv nginx-module-vts-master /usr/local/ …

jmeter响应断言放进csv文件遇到的问题

用Jmeter的json 断言去测试http请求响应结果&#xff0c;发现遇到中文时出现乱码&#xff0c;导致无法正常进行响应断言&#xff0c;很影响工作。于是&#xff0c;察看了其他测试人员的解决方案&#xff0c;发现是jmeter本身对编码格式的设置导致了这一问题。解决方案是在jmete…

轻松应对PDF编辑难题:四款免费pdf编辑器实测体验

作为一名办公室文员&#xff0c;每天处理各种文件是家常便饭。而PDF文档因其格式稳定、不易篡改的特性&#xff0c;在工作中扮演着重要角色。但编辑PDF文件却不像编辑Word文档那样简单&#xff0c;这就需要一款得心应手的PDF编辑器。今天&#xff0c;我就来分享一下我使用过的几…

如何利用解析器绕过访问控制

0x01 前言 每年blackhat总是会有一些新奇的攻击思路值得大家学习&#xff0c;在2024年blackhat的议题中发现一篇很有意思的文章&#xff0c;作者提出了一套基于邮箱的欺骗攻击思路&#xff0c;利用RFC标准中对SMTP协议中邮箱地址的特性&#xff0c;提供一系列绕过技巧&#xf…

揭秘Map与Set的键值奥秘与集合魅力,解锁高效数据魔法

文章目录 前言➰一、关联式容器1.1 关联式容器的概述1.2 关联式容器的工作原理1.3 关联式容器的核心特性 ➰二、键值对2.1 键值对的基本概念2.2 键值对在C中的实现 ➰三、树形结构的关联式容器3.1 树形结构的特点3.2 使用场景 ➰四、set的使用与定义4.1 set的基本特性4.2 set的…

Flutter UI组件库(JUI)

Flutter UI组件库 (JUI) 介绍 您是否正在寻找一种方法来简化Flutter开发过程&#xff0c;并创建美观、一致的用户界面&#xff1f;您的搜索到此为止&#xff01;我们的Flutter UI组件库&#xff08;JUI&#xff09;提供了广泛的预构建、可自定义组件&#xff0c;帮助您快速构建…

RHCE--ntp客户端,时间服务器服务端

NTP 是网络时间协议&#xff08; Network Time Protocol &#xff09;的简称&#xff0c;通过 udp 123 端口进行网络时钟同步。 Chrony 是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器&#xff08; NTP &#xff09;同步&#…

计算机网络:数据链路层 —— 以太网(Ethernet)

文章目录 局域网局域网的主要特征 以太网以太网的发展100BASE-T 以太网物理层标准 吉比特以太网载波延伸物理层标准 10吉比特以太网汇聚层交换机物理层标准 40/100吉比特以太网传输媒体 局域网 局域网&#xff08;Local Area Network, LAN&#xff09;是一种计算机网络&#x…

基于SSM果蔬经营系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商品信息管理&#xff0c;类型管理&#xff0c;系统管理&#xff0c;订单管理 前台账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;商品信息&#xff0c;广告…

爬虫+数据保存

爬虫以及数据保存 这篇文章, 分享如何将爬虫爬到的数据, 保存到excel表格当中。 文章目录 1.安装保存数据的第三方库openpyxl并使用 2.爬虫加单表数据保存 3.爬虫加多表数据保存 4.实战 一、安装保存数据的第三方库openpyxl并使用 我们需要安装openpyxl的第三方库 安装…

Qt第十三天:网络编程:TCP和UDP的使用

我发现了有些人喜欢静静看博客不聊天呐&#xff0c; 但是ta会点赞。 这样的人呢帅气低调有内涵&#xff0c; 美丽大方很优雅。 说的就是你&#xff0c; 不用再怀疑哦 ❤️TCP&#xff1a; 一、创建项目&#xff0c;命名为Server&#xff0c;继承QWidget 二、添加Qt设计师…

CentOS7安装RabbitMQ-3.13.7、修改端口号

本文安装版本&#xff1a; Erlang&#xff1a;26.0 官网下载地址 Erlang RabbitMQ&#xff1a;3.13.7 官网下载地址 RabbitMQ RabbitMQ和Erlang对应关系查看&#xff1a;https://www.rabbitmq.com/which-erlang.html 注&#xff1a;安装erlang之前先安装下依赖文件&#xff0…

云黑系统全解无后门 +搭建教程

这套系统呢是玖逸之前南逸写的一套云黑系统&#xff0c;功能带有卡密生成和添加黑名单等&#xff0c;源码放在我的网盘里已经两年之久&#xff0c;由于玖逸现在已经跑路了所以现在发出来分享给大家&#xff0c;需要的可以自己拿去而开&#xff0c;反正功能也不是很多具体的自己…