Mysql数据备份 —xtrabackup

一  备份介绍

### 优点:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【工具流】WSL2安装

一些废话 最近看到了PKU出品的cs自学指南,想要跟着里面的自学路径学国外的优质课程,无奈大多数pre教程里面都是直接Linux环境下的操作,并且我在CSwiki看到了那个熟悉的上学期学了一点的missing-semester课。 上学期自学missing-semester的时候…

Git 修改历史 commit message

一. 修改最新的 commit log 修改最近一次commit message, 直接使用命令 git commit --amend 就可以完成修改二. 修改历史 commit log 查看日志(按 q 退出) git log --oneline # 查看5步的log。 git log --oneline -5选择要修改的commit 信息 # 要修改的 commit log…

实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原

文/朱季谦 目录一、Elasticdump工具介绍二、Elasticdump工具安装三、Elasticdump工具使用 最近在开发当中做了一些涉及到Elasticsearch映射结构及数据导出导入的工作,怕以后会把这过程忘记,可谓好记性不如烂笔头,故而记录成一篇博文。 玩El…

Python开源项目DifFace——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践

无论是自己、家人或是朋友、客户的照片,免不了有些是黑白的、被污损的、模糊的,总想着修复一下。作为一个程序员 或者 程序员的家属,当然都有责任满足他们的需求、实现他们的想法。除了这个,学习了本文的成果,或许你还…

解决 requests.post 数据字段编码问题的方法

问题背景 在进行网络请求时,我们通常会使用requests库的post方法来发送POST请求。然而,当我们尝试发送包含特殊字符(如中文字符)的数据时,可能会遇到数据字段被编码的问题。这可能会导致请求失败或者服务器无法正确解…

AXglyph——轻量级科研绘图软件

今天博主将推荐一款简约却不简单的制图软件——axglyph。 AxGlyph是一款十分优秀的矢量绘图软件,官方版界面简洁,功能强大,支持自由矢量画笔、混合矢量路径和矢量漫水填充。支持自由定义的磁力点阵,支持插图编号及引用管理&#…

SecureCRT 9.2.4最新

SecureCRT是一款功能强大的终端仿真软件,它通过提供安全的、高效的会话,帮助用户在远程设备上完成各种任务。SecureCRT具有出色的性能和可靠性,能够处理复杂的网络环境,提供高效的远程访问和管理。 SecureCRT的主要特点包括&…

荧光量子效率积分球的优势是什么

荧光量子效率积分球是一种测量设备,可以用于测量荧光材料在特定波长下的量子效率。它由一个具有高朗伯特性的漫反射PTFE材料制成,具有高达99%的反射率和朗伯特性。积分球有三个开口,分别为光入射口、样品口和光出射口。光入射口设置有一准直镜…

Java_static 继承

static static修饰成员变量 static修饰成员变量的应用场景 static修饰成员方法 static修饰成员方法的应用场景 static的注意事项 static的应用知识:代码块 static的应用知识:单例设计模式 饿汉式单例模式 懒汉式单例模式 面向对象三大特征之二:继承 什么是继承 继承的好处 继…

【用户实践】openGauss5.0在某省医保局实时数仓应用

一、项目背景 采用数据同步软件将各系统的数据库下的数据实时同步到openGauss数据库中;建立实时数仓;可以在实时数仓自行查询、分析、统计数据及报表;同时横向集成公共服务区和核心业务区生产库数据、集成其他委办局数据。纵向集成市级的生产…

ubuntu设置脚本开机自启动

rc-local.service flexmitd1:~$ cd /lib/systemd/system/ flexmitd1:/lib/systemd/system$ ls |grep rc-local.service rc-local.service rc-local.service.d flexmitd1:/lib/systemd/system$ pwd /lib/systemd/system flexmitd1:/lib/systemd/system$确保有rc-local.service文…

nginx快速部署一个网站服务 + 多域名 + 多端口

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

WPF下实现拖动任意地方都可以拖动窗口

首先在xaml中添加事件 <Window PreviewMouseLeftButtonDown"Window_PreviewMouseLeftButtonDown"PreviewMouseMove"Window_PreviewMouseMove"PreviewMouseLeftButtonUp"Window_PreviewMouseLeftButtonUp"/>然后脚本输入 Point _pressedP…

建筑楼宇智慧能源管理系统,轻松解决能源管理问题

随着科技的进步与人们节能减排意识的不断增强&#xff0c;建筑楼宇是当下节能减排的重要工具。通过能源管理平台解决能效管理、降低用能成本、一体化管控、精细化管理和服务提供有力支撑。 建筑楼宇智慧能源管理系统是一种利用先进手段&#xff0c;采用微服务架构&#xff0c;…

「Verilog学习笔记」优先编码器Ⅰ

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 分析编码器的功能表&#xff1a; 当使能El1时&#xff0c;编码器工作&#xff1a;而当E10时&#xff0c;禁止编码器工作&#xff0c;此时不论8个输入端为何种状态&…

基于单片机的智能考勤机(论文+源码)

1.系统设计 本课题为基于单片机的智能考勤机&#xff0c;其整个系统由STC89C52单片机&#xff0c;RC522 RFID模块&#xff0c;LCD液晶&#xff0c;按键等构成&#xff0c;在功能上&#xff0c;本系统智能考勤机主要应用在校园生活中&#xff0c;用户可以通过按键注销/注销相应的…

requests.post 数据字段编码问题的方法

今夜&#xff0c;我要在代码的海洋中遨游&#xff0c;捕捉那只顽皮的bug。作为一名程序员&#xff0c;不断解决问题是日常的工作。而今天我要解决的是 requests.post 数据字段编码问题。在编程中&#xff0c;数据的编码问题常常让人头疼&#xff0c;它可能会导致程序无法正常运…

工业品电商,新的隐形冠军藏不住了?

【潮汐商业评论/原创】 “时代真的变了。”自打从淘宝买了一批配件后&#xff0c;工厂老板李瓦就经常感慨。 李瓦经营着一家专门生产机器零部件的工厂&#xff0c;日常经常要采购传送带、螺丝、螺母等材料&#xff0c;过去他主要通过线下的方式进货。但最近朋友圈里一段淘宝工…

MySQL函数部分

资料来源:菜鸟教程 #初次知晓_2023-11-15 #中职在读 MySQL_函数部分 说明字符串函数数字函数日期函数高级函数 说明 本文依照 菜鸟教程 及课堂上课内容创作。 作者水平有限&#xff0c;如有错误请提出 若本文侵权请联系我删除 笔记下载&#xff1a; 百度云盘链接&#xff1a;…