Mysql数据备份 —xtrabackup

news2024/11/17 3:39:28

一  备份介绍

### 优点:

1. **在线备份:** XtraBackup 支持在线备份,这意味着你可以在 MySQL 服务器运行的同时进行备份,而无需停止数据库服务。这对于生产环境中的数据库是非常关键的,因为可以最小化停机时间。

2. **增量备份:** XtraBackup 支持增量备份,允许你仅备份自上次完整备份或增量备份以来发生更改的数据。这可以减少备份所需的时间和磁盘空间。

3. **高性能:** XtraBackup 通过使用 InnoDB 的快速检查点算法来实现高性能备份。这可以显著减少备份所需的时间,并降低对生产系统的影响。

4. **支持 InnoDB 和 XtraDB 存储引擎:** XtraBackup 不仅支持 MySQL 的默认存储引擎 InnoDB,还支持 Percona 的增强版 XtraDB 存储引擎。这使其成为使用这两种存储引擎的用户的理想选择。

5. **完整性检查和验证:** XtraBackup 在备份过程中会对备份数据的完整性进行检查,以确保备份文件是可用且正确的。这提供了额外的安全性。

二 工作原理 

1. 创建快照:          2. 应用日志:
   ┌──────────────┐      ┌──────────────────┐
   │ MySQL 数据库 │      │ 事务日志 (redo log)│
   └──────────────┘      └──────────────────┘
         │                       │
         ▼                       ▼
   ┌──────────────┐      ┌──────────────────┐
   │ 创建数据库快照│      │ 应用事务日志到快照 │
   └──────────────┘      └──────────────────┘

3. 备份元数据:         4. 创建备份文件:
   ┌──────────────┐      ┌──────────────┐
   │ 数据库元数据 │      │ 备份文件   │
   └──────────────┘      └──────────────┘
         │                       │
         ▼                       ▼
   ┌──────────────┐      ┌──────────────┐
   │ 备份数据库元数据 │      │ 备份文件操作 │
   └──────────────┘      └──────────────┘

          

三  获取xtarbackup

Percona 官方网站: 你可以从 Percona 的官方网站下载 XtraBackup。访问 Percona XtraBackup 下载页面icon-default.png?t=N7T8https://www.percona.com/downloads/XtraBackup/

使用包管理工具: 对于一些 Linux 发行版,你还可以使用系统的包管理工具来安装 XtraBackup。以下是一些示例

sudo apt-get install percona-xtrabackup
sudo yum install percona-xtrabackup

源码编译: 如果你需要特定版本或者无法通过包管理工具获取 XtraBackup,你还可以从源代码编译。在 Percona XtraBackup GitHub 仓库 上可以找到源代码

3.1   安装完整的xtrabackup软件

wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/tarball/percona-xtrabackup-2.4.28-Linux-x86_64.glibc2.17.tar.gz
tar -zxvf percona-xtrabackup*.tar.gz
rm -f *.tar.gz
mv percona-xtrabackup* /usr/local/xtrabackup-2.4
echo "export PATH=/usr/local/xtrabackup-2.4/bin:$PATH" >> ~/.bashrc  
source ~/.bashrc
xtrabackup --version

这里 /path/to/destination 是你想要安装 XtraBackup 的目标目录。

##适用于数据库5.7的mysql   若是8.0以上数据库则需要下载8.0版本

四 xtrabackup全库备份和恢复

4.1 创建数据db_one db_two  一个使用myisam引擎和innodb引擎

CREATE TABLE db_two (
  stock VARCHAR(255),
  price INT
) ENGINE = MyISAM;

CREATE TABLE db_one (
  stock VARCHAR(255),
  price INT
) ENGINE =INNODB;
INSERT INTO db_two (stock, price) VALUES
  ('三倍半导体做多', 18),
  ('三倍科技做多', 51);

INSERT INTO db_one (name, com) VALUES
  ('小明', '中国'),
  ('华为', '美国');

4.2 准备数据库备份的账号

CREATE USER 'xtrabackup'@'localhost' IDENTIFIED BY '123456';
GRANT REPLICATION CLIENT, RELOAD, PROCESS ON *.* TO 'xtrabackup'@'localhost';
FLUSH PRIVILEGES;
  • 'xtrabackup' 是你希望创建的用户名,你可以根据需要更改它。
  • 'localhost' 指定该用户只能从本地主机连接。如果你希望从远程主机连接,请替换为相应的主机名或 IP 地址。
  • '123456' 是用户的密码,确保你选择一个强密码。
  • GRANT REPLICATION CLIENT 授予用户 REPLICATION CLIENT 权限,使其能够执行主从复制操作。
  • GRANT RELOAD 授予用户 RELOAD 权限,以便在备份期间执行 FLUSH TABLES WITH READ LOCK 操作。
  • GRANT PROCESS 授予用户 PROCESS 权限,以便能够查看正在运行的进程

4.3  备份数据库

 mkdir /tmp/xbackup ##创建存储路径
 xtrabackup --backup --target-dir=/tmp/xbackup  --user=xtrabackup --password=123456
GRANT ALL PRIVILEGES ON *.* TO 'xtrabackup'@'localhost';
FLUSH PRIVILEGES;
##权限问题可以直接给这个用户全部权限 实验状态下

[root@master local]# ll /tmp/xbackup/
总用量 18456
-rw-r----- 1 root root      487 11月 13 17:07 backup-my.cnf
drwxr-x--- 2 root root      110 11月 13 17:07 db_defualt
-rw-r----- 1 root root     1581 11月 13 17:07 ib_buffer_pool
-rw-r----- 1 root root 18874368 11月 13 17:07 ibdata1
-rw-r----- 1 root root       21 11月 13 17:07 xtrabackup_binlog_info
-rw-r----- 1 root root      138 11月 13 17:07 xtrabackup_checkpoints
-rw-r----- 1 root root      520 11月 13 17:07 xtrabackup_info
-rw-r----- 1 root root     2560 11月 13 17:07 xtrabackup_logfile

xtrabackup --backup --target-dir=/tmp/xbackup/xtra-$(date +"%Y-%m-%d") --user=xtrabackup --password=123456  --apply-log

##第一次执行的命令就是备份前进行备份,但是在备份中的数据就不在了,然后这次使用apply-log参数 用于存储日志
 

4.4 模拟数据库故障及恢复

rm -rf /var/lib/mysql/data
xtrabackup --copy-back --target-dir=/tmp/xbackup/$(date +"%Y-%m-%d") --user=xtrabackup --password=123456
chown -R mysql:mysql  /var/lib/mysql/data

五   增量备份

因为xtrabackup是专注数据目录的恢复,所以每次恢复需要直接删除数据目录

增量备份基于已有的全备份(包含所有数据库文件和二进制日志文件)和之前的增量备份

rm -rf /tmp/xbackup

这边使用xtrabackup的封装,相对于xtraback命令更加直接一点

进行完整备份:这会创建数据库的一个基本副本。

innobackupex --user=root --password=123456   /tmp/xbackup

准备把全量备份中数据日志进行整合(就是第一条命令中备份时产生的数据)

[root@master xbackup]# ll
总用量 0
drwxr-x--- 8 root root 286 11月 14 11:01 2023-11-14_11-01-05
[root@master xbackup]# innobackupex --user=root --password=123456 --apply-log --redo-only /tmp/xbackup/2023-11-14_11-01-05/

5.1 向数据库中写入数据

mysql> INSERT INTO db_one (姓名,国家) VALUES   ('小明', '中国'),   ('华为', '日本');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from db_defualt.db_one
    -> ;
+--------+--------+
| 姓名   | 国家   |
+--------+--------+
| 小明   | 中国   |
| 华为   | 美国   |
| 小明   | 中国   |
| 华为   | 日本   |
+--------+--------+


5. 2 做增量备份

innobackupex --user=root --password=123456 --backup --incremental /tmp/xbackup --incremental-basedir=/tmp/xbackup/2023-11-14_11-01-05/  ##执行增量备份 基于11-01-05的
innobackupex --user=root --password=123456 --apply-log --redo-only /tmp/xbackup/2023-11-14_11-01-05/ --incremental-dir=/tmp/xbackup/2023-11-14_11-20-13/ ##应用日志到全量备份
 

5.3  删除数据库

rm -rf /var/lib/mysql/data/*

全量备份恢复

innobackupex --user=root --password=123456 --copy-back /tmp/xbackup/2023-11-14_11-01-05/
chown -R mysql:mysql /var/lib/mysql

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

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

相关文章

算法:记忆化搜索

文章目录 记忆化搜索斐波那契数列 例题不同路径最长递增子序列猜数字大小矩阵中的最长递增路径 记忆化搜索的原理其实很简单,简单来说就是对暴力搜索的一些优化,因此整体上来讲难度不高 记忆化搜索 所谓记忆化搜索,直白来说就是一个带有备忘…

MATLAB中plotmatrix函数用法

目录 语法 说明 示例 使用两个矩阵输入创建散点图矩阵 使用一个矩阵输入创建散点图矩阵 指定标记类型和颜色 创建并修改散点图矩阵 plotmatrix函数的功能是创建散点图矩阵。 语法 plotmatrix(X,Y) plotmatrix(X) plotmatrix(___,LineSpec) plotmatrix(ax,___) [S,AX,B…

一次显著的接口性能优化,从10s优化到0.9s

最近在登录项目后台的时候,发现当我输入账号和密码后,竟然就卡在了 Loading 页面。。 加载了10S才进后台 等了足足 10S 才进去后台! 通过 F12,打开 Network 网络请求一看,竟然是因为有两个接口返回的数据太慢了&#…

挑战单芯片NOA,这款“All in one”方案或将改变主流市场走向

随着降本增效、电子架构升级(尤其是跨域计算、多域融合等概念)以及供应链减复(降低电子物料的SKU)的需求愈加明确,对于车载计算赛道,也带来新的变化。 比如,去年9月,英伟达率先发布下…

群晖邮件设置,错误535 Authenticate failed问题

设置邮件通知或者报警很方便,群晖内部内置这个功能。在设置的时候遇到错误535 Error:authentication failed。 原因是:这个错误就是认证失败! 但是相信很多的同学明明用户名和密码填的是对的,就是说认证失败&#xf…

RTLS 颠覆制造业方式之——库存管理

跟踪库存对于每个行业(不仅仅是制造业)来说都是一项技术挑战。然而,在计划外停机每小时可能造成数十万美元损失的环境中,智能库存尤其重要,而这通常是由于一两个物体丢失造成的。 1.自动化库存报告 RTLS 提供的最有价…

[HTML]Web前端开发技术1,meta,HBuilder等——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

九. Linux网络命令

网络命令write 网络命令wall 网络命令ping 首先,ping程序会向域名服务器(DNS)发送请求,解析域名www.baidu.com的IP地址。DNS返回域名的一个别名www.a.shifen.com以及对应的IP地址183.2.172.185。之后ping程序开始向这个地址发送请求报文,每1s…

浅谈霍尔电流传感器在UPS蓄电池浮充电流远程监测方案的应用-安科瑞 蒋静

摘要:针对无人平台UPS蓄电池多次出现浮充电流过高的现象,介绍了UPS系统的结构和工作原理,通过应用霍尔电流传感器,DCS组态,实现UPS蓄电池浮充电流远程监控,异常电流故障报警,推动了无人平台的自…

IO流-数据流

一,IO流-数据流 二,数据输出流 三,案例 package BigDecimal;import java.io.DataOutputStream; import java.io.FileOutputStream;public class DATaOutputStreamss {public static void main(String[] args) {try ( //1,创建一个数据输出流…

linuxTcp状态转换

1.TCP状态转换 在TCP进行三次握手,或者四次挥手的过程中,通信的服务器和客户端内部会发送状态上的变化,发生的状态变化在程序中是看不到的,这个状态的变化也不需要程序猿去维护,但是在某些情况下进行程序的调试会去查…

YB203H系列是一组CMOS技术实现的三端低功耗高电压稳压器

概述: YB203H系列是一组CMOS技术实现的三端低功耗高电压稳压器。输出电流为200mA且允许的输入电压可高达80V。具有几个固定的输出电压,范围从2.1V到12.0V.CMOS技术可确保其具有低压降和低静态电流的特性。最高耐压100W.尽管主要为固定电压调节器而设计,…

Spring过滤器和拦截器的区别

📑前言 本文主要Spring过滤器和拦截器的区别的问题,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句&#x…

【Linux】Linux进程间通信(三)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】…

SMART PLC星三角延时启动功能块(梯形图FC)

这里我们介绍SMART PLC星三角延时启动功能块,SMART PLC的周期定时器功能块请参考下面文章链接: 周期定时器FB_Cycle_time(SCL+梯形图代码)-CSDN博客文章浏览阅读80次。博途PLC定时器指令使用详细介绍请参考下面文章链接:博途PLC IEC定时器编程应用(SCL语言)_scl定时器-CS…

机器学习第6天:线性回归模型正则化

文章目录 机器学习专栏 正则化介绍 岭回归 岭回归成本函数 核心代码 示例 Lasso回归 Lasso回归损失函数 核心代码 弹性网络 弹性网络成本函数 核心代码 结语 机器学习专栏 机器学习_Nowl的博客-CSDN博客 正则化介绍 作用:正则化是为了防止模型过拟合…

ESP32-0.96寸OLED通过低功耗蓝牙BLE通信显示出ESP32-BME280读取到的温湿度值

ESP32-0.96寸OLED通过低功耗蓝牙BLE通信显示出ESP32-BME280读取到的温湿度值 简介ESP32-BME280作为BLE Server手机作为BLE Client与ESP32-BME280 BLE Server通信ESP32-0.96寸OLED作为BLE Client与ESP32-BME280 BLE Server通信总结 简介 两个ESP32开发板,一个ESP32挂…

【Hello Go】Go语言复合类型

复合类型 分类指针基本操作new函数指针作为函数的参数 数组概述操作数据数组初始化数组比较在函数之间传递数组 slice概述切片的创建和初始化切片操作切片和底层数组关系内建函数appendcopy 切片作为函数传参 map概述创建和初始化常用操作赋值遍历 删除map作函数参数 结构体结构…

C语言青蛙爬井(ZZULIOJ1072:青蛙爬井)

题目描述 有一口深度为high米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬up米,夜里则顺井壁向下滑down米,若青蛙从某个早晨开始向外爬,对于任意指定的high、up和down值(均为自然数)&…

《rPPG》——(1)PyTorch——Windows环境配置

《rPPG》——(1)PyTorch——Windows环境配置 如何查看电脑是否已安装Python环境以及Python版本 anaconda对应python3.8的版本号是多少? 截止到我的知识截止日期(2022年1月),Anaconda支持Python 3.8的版本号是Anacond…