物理备份xtrabackup

news2024/9/20 21:25:06

物理备份xtrabackup

在这里插入图片描述

Xtrabackup 是一个开源的免费的热备工具,在 Xtrabackup 包中主要有 Xtrabackup 和innobackupex 两个工具。其中Xtrabackup 只能备份 InnoDB 和 XtraDB 两种引擎; innobackupex则是封装了Xtrabackup,同时增加了备份MyISAM引擎的功能。

Xtrabackup备份时不能备份表结构、触发器等等,也不能智能区分.idb 数据文件。另外
innobackupex还不能完全支持增量备份,需要和xtrabackup结合起来实现全备的功能。

安装

  • 下载安装包及依赖,根据版本下载

    [root@node1 ~]# mysql -V
    mysql  Ver 14.14 Distrib 5.7.42, for Linux (x86_64) using  EditLine wrapper
    
    
    https://www.percona.com/downloads
    
    http://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm
    
    https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.
    4.18/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.18-r29b4ca5-el7-x86_64-bundle.tar
    
  • 解压安装

    #上传文件
    [root@node1 ~]# ls
    libev-4.04-2.el6.x86_64.rpm  Percona-XtraBackup-2.4.18-r29b4ca5-el7-x86_64-bundle.tar
    
    [root@node1 ~]# rpm -ivh libev-4.04-2.el6.x86_64.rpm 
    [root@node1 ~]# tar -xf Percona-XtraBackup-2.4.18-r29b4ca5-el7-x86_64-bundle.tar 
    
    [root@node1 ~]# ls
    libev-4.04-2.el6.x86_64.rpm                               percona-xtrabackup-24-debuginfo-2.4.18-1.el7.x86_64.rpm
    Percona-XtraBackup-2.4.18-r29b4ca5-el7-x86_64-bundle.tar  percona-xtrabackup-test-24-2.4.18-1.el7.x86_64.rpm
    percona-xtrabackup-24-2.4.18-1.el7.x86_64.rpm
    
    [root@node1 ~]# yum -y install percona-xtrabackup-24-2.4.18-1.el7.x86_64.rpm 
    
    
  • 配置文件

    保证[mysqld]存在参数 datadir=/var/lib/mysql(指向数据目录),xtrbackup根据配置文件获取需要备份的文件。

  • 重启mysqld

使用

用户权限

  • 备份数据库时会涉及到两个用户:系统用户与数据库内部的用户。

  • 系统用户

    需要在 datadir(配置文件内设置的目录)上具有读写执行权限(rwx)。
    
  • 数据内部用户

    RELOAD 和 LOCK TABLES 权限,执行 FLUSH TABLES WITH READ LOCKREPLICATION CLIENT 权限,获取 binary log(二进制日志文件)位置;
    CREATE TABLESPACE权限,导入表,用户表级别的恢复;
    SUPER权限,在slave环境下备份用来启动和关闭slave线程。
    
  • 命令格式与参数

    innobackupex [参数] [目的地址|源地址]
    
    --user # 以什么用户身份进行操作
    --password   # 数据库用户的密码
    --port       # 数据库的端口号,默认3306
    --stream   # 打包(数据流)
    --defaults-file   # 指定默认配置文件,默认读取/etc/my.cnf
    --no-timestamp   # 不创建时间戳文件,而改用目的地址(可以自动创建)
    --copy-back           # 备份还原的主要选项
    --incremental         # 使用增量备份,默认使用的完整备份
    --incremental-basedir # 与--incremental选项联合使用,该参数指定上一级备份的地址来做增
    量备份
    

完整备份

[root@node1 ~]# innobackupex --user=root --password=你自己密码 /backup/mysql/ #大量输出备份文件
#备份输出信息保存到文件
[root@node1 ~]# innobackupex --user=root --password=密码 /backup/mysql/ 2>> /backup/mysql/backup.log

[root@node1 ~]# ll /backup/mysql/
总用量 52
drwxr-x---. 5 root root   193 612 12:02 2023-06-12_12-02-24
drwxr-x---. 5 root root   193 612 12:10 2023-06-12_12-10-05
-rw-r--r--. 1 root root 51120 612 12:10 backup.log
[root@node1 ~]# ls /backup/mysql/2023-06-12_12-02-24/
backup-my.cnf   ibdata1  performance_schema  xtrabackup_checkpoints  xtrabackup_logfile
ib_buffer_pool  mysql    sys                 xtrabackup_info
#不使用时间戳创建目录
[root@node1 ~]# innobackupex --user=root --password=密码 --no-timestamp /backup/mysql/nostamp/ 2>> /backup/mysql/backup.log
[root@node1 ~]# ls /backup/mysql/
2023-06-12_12-02-24  2023-06-12_12-10-05  backup.log  nostamp


数据还原

#innobackupex -copy-back不会覆盖已存在的文件。而且还原时需要先关闭服务,如果服务是启动的,那么就不能还原到 datadir

[root@node1 ~]# systemctl stop mysqld
[root@node1 ~]# rm -rf /var/lib/mysql/* #模拟数据崩溃
[root@node1 ~]# innobackupex --copy-back /backup/mysql/2023-06-12_12-02-24/ 2>>/backup/mysql/copyback.log

[root@node1 ~]# ll /var/lib/mysql
总用量 12324
-rw-r-----. 1 root root      350 612 12:55 ib_buffer_pool
-rw-r-----. 1 root root 12582912 612 12:55 ibdata1
drwxr-x---. 2 root root     4096 612 12:55 mysql
drwxr-x---. 2 root root     8192 612 12:55 performance_schema
drwxr-x---. 2 root root     8192 612 12:55 sys
-rw-r-----. 1 root root      425 612 12:55 xtrabackup_info

[root@node1 ~]# chown -R mysql:mysql /var/lib/mysql #重新授权
[root@node1 ~]# systemctl start mysqld
[root@node1 ~]# mysql -uroot -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

增量备份

增量备份的实现,依赖于innodb 页上面的 LSN(log sequence number),每次对数据库的修改
都会导致 LSN 自增。增量备份会复制指定 LSN<日志序列号>之后的所有数据页。

  • 查看完整备份LSN

    [root@node1 ~]# innobackupex --user=root --password=密码 /backup/mysql/
    [root@node1 ~]# cat /backup/mysql/2023-06-12_13-38-21/xtrabackup_checkpoints 
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 2767400
    last_lsn = 2767409
    compact = 0
    recover_binlog_info = 0
    flushed_lsn = 2767409
    
    
  • 以全备创建增量备份以某个文件时间为时间戳创建第一个增量备份

    [root@node1 ~]# ll /backup/mysql/
    总用量 0
    drwxr-x---. 5 root root 193 612 13:47 2023-06-12_13-47-06
    
    
  • 进入数据库,创建文件,查看LSN

    mysql> create database test_db;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use test_db;
    Database changed
    mysql>  create table user_tb(id int,name varchar(20));
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> insert into user_tb values(1,'zhangsan');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> \q
    Bye
    
    
    [root@node1 ~]# innobackupex --user=root --password=密码 --incremental /backup/mysql/ --incremental-basedir=/backup/mysql/2023-06-12_13-47-06/
    
    
[root@node1 ~]# innobackupex --user=root --password= 密码  --incremental --incremental-basedir=/backup/mysql/2023-06-12_13-47-06/ /backup/mysql/ 2>>/backup/mysql/backup.log 

  [root@node1 ~]# cat /backup/mysql/2023-06-12_14-11-53/xtrabackup_checkpoints 
  backup_type = incremental
  from_lsn = 2767400
  to_lsn = 2771841
  last_lsn = 2771850
  compact = 0
  recover_binlog_info = 0
  flushed_lsn = 2771850
  • 恢复数据准备全量备份

    innobackupex --apply-log --redo-only /backup/mysql/2023-06-12_13-47-06/ 2>>/backup/mysql/copyback.log
    
  • 应用第一次增量备份到全量备份

    innobackupex --apply-log --redo-only /backup/mysql/2023-06-12_13-47-06/ --incremental-dir=/backup/mysql/2023-06-12_14-11-53
    2>>/backup/mysql/copyback.log
    
    #发现全量备份last_lsn与增量备份相同
    [root@node1 ~]# cat /backup/mysql/2023-06-12_13-47-06/xtrabackup_checkpoints 
    backup_type = log-applied
    from_lsn = 0
    to_lsn = 2771841
    last_lsn = 2771850
    compact = 0
    recover_binlog_info = 0
    flushed_lsn = 2771850
    
    
  • 备份整体做一次apply操作

    innobackupex --apply-log /backup/mysql/2023-06-12_13-47-06/ 
    2>>/backup/mysql/copyback.log
    
  • 停止服务移除数据目录

    [root@node1 ~]# systemctl stop mysqld
    [root@node1 ~]# rm -rf /var/lib/mysql/*
    
    
  • 使用–copy-back参数恢复拷贝到data目录

     innobackupex --copy-back /backup/mysql/2023-06-12_13-47-06/ 
    2>/backup/mysql/copyback.log
    
  • 验证数据完整性

    [root@node1 ~]# ls -l /var/lib/mysql
    总用量 122920
    -rw-r-----. 1 root root      350 612 14:38 ib_buffer_pool
    -rw-r-----. 1 root root 12582912 612 14:38 ibdata1
    -rw-r-----. 1 root root 50331648 612 14:38 ib_logfile0
    -rw-r-----. 1 root root 50331648 612 14:38 ib_logfile1
    -rw-r-----. 1 root root 12582912 612 14:38 ibtmp1
    drwxr-x---. 2 root root     4096 612 14:38 mysql
    drwxr-x---. 2 root root     8192 612 14:38 performance_schema
    drwxr-x---. 2 root root     8192 612 14:38 sys
    drwxr-x---. 2 root root       58 612 14:38 test_db
    -rw-r-----. 1 root root      502 612 14:38 xtrabackup_info
    -rw-r-----. 1 root root        1 612 14:38 xtrabackup_master_key_id
    #授权启动
    [root@node1 ~]# chown -R mysql:mysql /var/lib/mysql/
    [root@node1 ~]# systemctl start mysqld
    
    
  • 进入数据库,验证数据是否恢复

    mysql> use test_db;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    mysql> select* from user_tb;
    +------+----------+
    | id   | name     |
    +------+----------+
    |    1 | zhangsan |
    +------+----------+
    
    --成功!
    
    
    (1)增量备份需要使用参数--incremental指定需要备份到哪个目录,使用incremental-dir指定全备目
    录;
    (2)进行数据备份时,需要使用参数--apply-log redo-only先合并全备数据目录数据,确保全备数据目录数据的一致性;
    (3)再将增量备份数据使用参数--incremental-dir合并到全备数据当中;
    (4)最后通过最后的全备数据进行恢复数据,注意,如果有多个增量备份,需要逐一合并到全备数据
    当中,再进行恢复。
    

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

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

相关文章

STM32开发——智能小车(循迹、避障、测速)

目录 1.循迹小车 1.1CubeMX配置 1.2函数代码 2.避障小车 3.小车测速 1.循迹小车 需求&#xff1a;用左右轮实现PWM调速、红外传感器获取道路信息改变方向。 左边红外D0——PB12 右边红外D0——PB13 1.1CubeMX配置 1.2函数代码 motor.c代码 #include "gpio.h"…

TCP三挥四握

TCP三挥四握 TCP最关键的三个步骤&#xff1a;建立连接、数据传输、释放连接&#xff0c;这里的三次握手实现的是服务端和客户端建立连接&#xff1b;四次握手实现的是服务端和客户端释放连接。 三次握手&#xff1a; 建立数据连接 TCP连接需要三次握手的原因&#xff1a; 三次…

【Free】基于主从博弈的主动配电网阻塞管理

目录 1 主要内容 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 《基于主从博弈的主动配电网阻塞管理》文献介绍&#xff1a;主要采用一种配电网节点边际电价统一出清的主从博弈双层调度框架。上层框架解决用户在负荷聚合商引导下的用电成本最小化问题&#xff0…

力扣题库刷题笔记18--四数之和

1、题目如下&#xff1a; 2、个人Python代码实现&#xff1a; 首先看到这题就会想到两种方式&#xff0c;一是四层循环暴力破解&#xff0c;二就是基于前面的三数之和外面加加一层嵌套。 先看一下暴力破解&#xff1a; 这里可以看到&#xff0c;当数据量足够大时&#xff0c;依…

Openresty原理概念篇(十)为什么 lua-resty-core 性能更高一些

一 为什么 lua-resty-core 性能更高一些 ① 回顾 lua-resty-core和lua-nginx-module各自都有哪些API? --> 看下面两个仓库的文档 lua-nginx-module lua-resty-core 下面&#xff1a;一起看下Lua C API和FFI 的实现有何不同之处,这样可以对它们的性能有个直观认识…

14. python从入门到精通——GUI编程

目录 常用的GUI框架 wxPython&#xff1a;比较常用 PyQt6&#xff1a;比较常用 Kivy Flexx Tkinter 安装PyQt5 要开发PyQt5程序需要安装三个模块&#xff1a; 安装命令&#xff1a; 安装 安装命令&#xff1a; window安装&#xff1a; PyCharm软件安装&#xff1a…

Android跳转具体应用权限管理,三种方式

背景&#xff1a;Android越来越安全合规&#xff0c;在应用里&#xff0c;需要给用户所有可选择和取消的明确方式。 比如&#xff1a;设置了权限&#xff0c;也要给用户关闭权限的入口。被要求在应用的设置里&#xff0c;提供权限管理入口。 解决方式有三&#xff1a; 方式一…

ansible实训-Day2(ansible基本问题及部署安装)

一、前言 该篇是对ansible实训第二天内容的归纳总结&#xff0c;主要包括ansible的一些基本问题以及ansible的部署安装。 二、理论部分 Q1&#xff1a;什么是ansible Ansible是一种自动化IT工具&#xff0c;它可以帮助管理和自动化IT基础架构。使用Ansible&#xff0c;管理员…

神仙级编程神器,吹爆!

Visual Studio 编程领域公认的“最强IDE”&#xff0c;Visual Studio是目前最流行的Windows平台应用程序的集成开发环境&#xff0c;提供了高级开发工具、调试功能、数据库功能和创新功能&#xff0c;帮助在各种平台上快速创建当前最先进的应用程序&#xff0c;开发新的程序。 …

界面控件DevExpress ASP.NET中文 - 如何自定义编辑表单运行时布局?

在DevExpress ASP.NET控件v19.2版本中就针对ASP. NET WebForms和MVC平台的ASP. NET GridView和CardView控件添加了一个主要增强功能。 DevExpress ASP.NET v23.1正式版下载(Q技术交流&#xff1a;523159565&#xff09; 当您使用预定义的或 自定义的编辑表单时&#xff0c;经…

网易兑换礼包码分析

🍋前言 由于C站版权太多,所有的爬虫相关均为记录,不做深入! 接到了一个项目大概是电商老板想弄一个自动化工具,方便自己处理买家买的兑换码,一个一个的兑换有点累人,代码写到一半才发现由于自己的原因分析错了,刚刚开始我以为他的验证码是在html上的,就像这样 <…

SpringBoot02:运行原理初探

目录 一、运行原理探究 1、pom.xml文件 1.1、父依赖 1.2、启动器Spring-boot-starter 2、主启动类 2.1、默认的主启动类&#xff1a; 2.2、分析主启动类注解&#xff1a;SpringBootApplication 1、Target(ElementType.TYPE) 2、Retention(RetentionPolicy.RUNTIME) 3…

【C语言初阶(3)】循环语句:for 循环

文章目录 1. 语法结构2. for 语句的执行流程3. for 循环中的 break 和 continue3.1 for 循环中的 break3.2 for 循环中的 continue 4. for 循环语句的循环控制变量5. for 循环的变种5.1 for( ; ; )5.2. for 循环的嵌套5.3 使用多个变量控制循环 6. for 循环笔试题 1. 语法结构 …

【读书笔记】《数据结构C语言版》

目录 第一章 线性表 第二章 栈和队列 第三章 字符串 第四章 广义表 第五章 树 第六章 图 第七章 查找 第八章 内排序 第一章 线性表 一个线性表是n个数据元素的优先序列线性表可分为顺序存储结构&#xff08;数组&#xff09;和链式存储结构&#xff08;链表&#xff…

安科瑞WHD智能型温湿度控制器

安科瑞WHD智能型温湿度控制器 安科瑞 崔丽洁

前端Vue自定义发送短信验证码弹框popup 实现剩余秒数计数 重发短信验证码

前端Vue自定义发送短信验证码弹框popup 实现剩余秒数计数 重发短信验证码&#xff0c; 请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13207 效果图如下&#xff1a; 实现代码如下: # cc-codeDialog #### 使用方法 使用方法 <!-- show:是…

【uniapp】uniapp反向代理解决跨域问题

背景介绍 前段时间&#xff0c;在拿uniapp开发的时候&#xff0c;出现了跨域问题&#xff0c;按理说跨域应该由后端解决&#xff0c;但既然咱前端可以上&#xff0c;我想就上了&#xff08;顺手装个13&#xff09; 什么是跨域 出于浏览器的同源策略&#xff0c;在请求时&…

React 简单实现 v-if和v-show的元素控制效果

react中并没有直接的想模板引擎那样的命令可以直接控制元素展示 但是 我们了解了 v-if和v-show之后 还是大有文章的 我们在 项目的 src下创建 components 文件夹 创建dom.jsx 编写代码如下 import React from "react" export default class dom extends React.Comp…

Ubuntu查看显卡信息

查看显卡信息&#xff0c;终端输入 lspci | grep VGA 输出结果 0000:65:00.0 VGA compatible controller: NVIDIA Corporation Device 24b0 (rev a1) 发现是十六进制码&#xff0c;进入网址PCI Devices查询&#xff0c;输入 24b0 并点击 Jump&#xff0c;得到结果 显卡型号…