运维实战:Xtrabackup备份与还原

article/2025/10/27 0:26:23

目录

运维实战:percona-xtrabackup备份与还原

一、工作原理

二、版本区别

三、Xtrabckup特点及限制

3.1 特点

3.2 限制

四、xtrabckup安装(mariadb5.5  xtrabckup 2.4)

4.1 rpm安装xtrabackup

4.2 xtrabackup的rpm包含哪些内容

4.2.1 xtrabackup主要的两个工具

4.3 查看MariaDB的存储版本及存储引擎

五、Xtrabackup增量备份及还原实战

5.1 测试环境介绍

5.2 Xtrabackup 使用

5.2.1 Xtrabackup 增量备份

5.3 Xtrabackup恢复演练

5.3.1 模拟故障

5.3.2 数据恢复

5.3.3 备份生成的文件

5.3.4 Innobackup常用参数


运维实战:percona-xtrabackup备份与还原

      Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎进行热备,对Myisam引擎实现几乎热备。


一、工作原理

       在InnoDB内部会维护一个redo日志文件,叫做事务日志文件。Xtrabackup所有的备份操作是基于日志序列号(LSN)实现的。通过判断LSN的变化从而做增量备份。

LSN:可以判断当前所处的位置点,及LSN变化表示数据发生修改。

二、版本区别

  

Xtrabckup版本MySQL版本支持
8.08.0
2.45.7,5.6,5.5
2.35.6,5.5
2.25.5

                                                                                             图1. 版本支持

 

三、Xtrabckup特点及限制

3.1 特点

  1. 备份过程快速、可靠;
  2. 备份过程不会打断正在执行的事务;
  3. 能够支持压缩功能,解压磁盘空间和流量;
  4. 自动失效备份检验;
  5. 还原速度快;

3.2 限制

  1. xtrabckup的高级功能使用,需要开启独立表空间(innodb_file_per_table=ON);
  2. xtrabckup对于Myisam不能实现实际意义上的热备,只能支持温备;

 

四、xtrabckup安装(mariadb5.5  xtrabckup 2.4)

4.1 rpm安装xtrabackup

 官方下载地址:https://www.percona.com/downloads/Percona-XtraBackup-2.4/

                                           

                                                                                 图4.1  xtrabckup的版本

4.2 xtrabackup的rpm包含哪些内容

/usr/bin/innobackupex
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/lib64/xtrabackup/plugin/keyring_file.so
/usr/lib64/xtrabackup/plugin/keyring_vault.so
/usr/share/doc/percona-xtrabackup-24-2.4.16
/usr/share/doc/percona-xtrabackup-24-2.4.16/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz

4.2.1 xtrabackup主要的两个工具

/usr/bin/innobackupex # 封装了xtrabackup,同时可以备份MyISAM数据表;/usr/bin/xtrabackup   # 只能备份InnoDB和XtraDB两种数据表;

4.3 查看MariaDB的存储版本及存储引擎

MariaDB [(none)]> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                                        | YES          | NO   | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                     | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)MariaDB [(none)]> SYSTEM mysql --version
mysql  Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1

五、Xtrabackup增量备份及还原实战

5.1 测试环境介绍

[root@www ~]# grep ^innodb /etc/my.cnf
innodb_file_per_table = ON# 进入数据库
MariaDB [(none)]> CREATE DATABASE db1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> SHOW CREATE DATABASE db1;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)MariaDB [(none)]> USE db1;
Database changedMariaDB [db1]> CREATE TABLE tb1(id int(10))ENGINE=InnoDB;
Query OK, 0 rows affected (0.00 sec)MariaDB [db1]> DESC tb1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(10) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec) MariaDB [db1]> SHOW TABLE STATUS\G
*************************** 1. row ***************************Name: tb1Engine: InnoDBVersion: 10Row_format: CompactRows: 0Avg_row_length: 0Data_length: 16384
Max_data_length: 0Index_length: 0Data_free: 10485760Auto_increment: NULLCreate_time: 2019-11-11 11:58:56Update_time: NULLCheck_time: NULLCollation: utf8_general_ciChecksum: NULLCreate_options:Comment:
1 row in set (0.00 sec)MariaDB [db1]> INSERT INTO tb1 VALUES(1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0MariaDB [db1]> SELECT * FROM tb1;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)

5.2 Xtrabackup 使用

[root@www ~]# mkdir /backup
# 创建备份目录;[root@www ~]# innobackupex --uesr=root /backup/
-----
-----
191111 15:05:19 completed OK!
# 全备,尾行为成功提示;[root@www 2019-11-11_15-23-19]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1604444
last_lsn = 1604444
compact = 0
recover_binlog_info = 0
flushed_lsn = 1604444
# 查看备份状态;

5.2.1 Xtrabackup 增量备份

MariaDB [db1]> INSERT INTO tb1 VALUES(4),(5),(6);
MariaDB [db1]> SELECT * FROM tb1;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
+------+
6 rows in set (0.00 sec)
# 有意增加几行数据;[root@www ~]# innobackupex --uesr=root --incremental /backup/ --incremental-basedir=/backup/2019-11-11_15-23-19/
--------------
--------------
--------------
xtrabackup: Transaction log of lsn (1605583) to (1605583) was copied.
191111 15:24:51 completed OK!
# 基于之前一次全量做增量;[root@www 2019-11-11_15-24-49]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1604444
to_lsn = 1605583
last_lsn = 1605583
compact = 0
recover_binlog_info = 0
flushed_lsn = 1605583
# 查看增量的备份状态;

5.3 Xtrabackup恢复演练

5.3.1 模拟故障

[root@www ~]# rm -fr /var/lib/mysql/*
# 删除所有数据文件;

5.3.2 数据恢复

恢复过程

1. 准备全量备份
innobackup --apply-log --redo-only 全备数据2.合并增量备份
innobackup --apply-log --redo-only 全备数据 --incremental-dir=增量13.如果有多个增量则依次合并
innobackup --apply-log --redo-only 全备数据 --incremental-dir=增量{N}4.还原主分支全备
innobackupex --copy-back 全备数据

开始恢复

注意:MySQL在做增量恢复操作时应该注意提交事务继续提交,未提交事务不能回滚!!!

[root@www ~]# innobackupex --user=root --apply-log --redo-only /backup/2019-11-11_15-23-19/
# 准备全备;[root@www ~]# innobackupex --user=root --apply-log --redo-only /backup/2019-11-11_15-23-19/ --incremental-dir=/backup/2019-11-11_15-24-49/
----------
----------
----------
191111 15:41:47 completed OK!
# 将增量合并到主干上;[root@www ~]# cat /backup/2019-11-11_15-23-19/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 1605583
last_lsn = 1605583
compact = 0
recover_binlog_info = 0
flushed_lsn = 1605583
# 检查主干数据的LSN;[root@www ~]# innobackupex --user=root --copy-back /backup/2019-11-11_15-23-19/
---------
---------
---------
191111 15:45:34 completed OK![root@www mysql]# ll
总用量 18452
drwxr-x--- 2 root root       35 11月 11 15:45 db1
-rw-r----- 1 root root 18874368 11月 11 15:45 ibdata1
drwxr-x--- 2 root root     4096 11月 11 15:45 mysql
drwxr-x--- 2 root root     4096 11月 11 15:45 performance_schema
drwxr-x--- 2 root root       20 11月 11 15:45 test
-rw-r----- 1 root root       26 11月 11 15:45 xtrabackup_binlog_pos_innodb
-rw-r----- 1 root root      529 11月 11 15:45 xtrabackup_info
-rw-r----- 1 root root        1 11月 11 15:45 xtrabackup_master_key_id
[root@www mysql]#  chown -R mysql. mysqlMariaDB [db1]> SELECT * FROM tb1;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
+------+
# 检测恢复后的数据;

5.3.3 备份生成的文件

xtrabackup_checkpoints 
# 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;xtrabackup_binlog_info
# mysql服务器当前正在使用的二进制日志文件及备份这一刻为止二进制日志事件位置;
xtrabackup_binlog_pos_innodb# 二进制日志文件用于InnoDB或者XtraDB表的二进制日志文件的当前位置点;xtrabackup_binary
# 备份中用到的xtrabackup的可执行文件;backup-my.cnf
# 备份命令用到的配置选项信息;

5.3.4 Innobackup常用参数

--host
# 指定主机--user
# 指定用户名--password
# 指定密码--port
# 指定端口--databases
# 指定数据库--incremental
# 创建增量备份--incremental-basedir
# 指定包含完全备份的目录--incremental-dir
# 指定包含增量备份的目录   --redo-only
# 不回滚未提交事务--copy-back
# 恢复备份目录--stream=tar
# 输出格式以tar方式输出数据流--target-dir=/backups
# 指明备份后的文件存放路径--apply-log
# 对备份进行预处理操作

 


http://chatgpt.dhexx.cn/article/6XQxGEiv.shtml

相关文章

FileNotFoundException: jdcbc.properties (系统找不到指定的文件) 该问题的解决方法

一般遇到这种问题都是我们将properties文件创建在模块下面了, 这时候,由于默认访问路径在项目下面, 所以此时我们应该加上当前模块的路径, 即可解决这个问题

pykmip测试

开源路径:https://github.com/OpenKMIP 创建key并加解密 import ssl from kmip.pie.client import ProxyKmipClient, enums from kmip.pie import objectsclient ProxyKmipClient(hostname127.0.0.1,port5696,cert/home/nxy/PyKMIP/bin/client_cert.pem,key/home/nxy/PyKMIP…

开始使用KMIP4J

开始使用KMIP4J 密钥管理互操作协议(KMIP)的开源实现 KMIP定义了密钥生命周期管理系统(KLMS)和其客户之间的沟通。一些公司已经使用专有的KMIP实现,这些KMIP实现使用不同的编程语言,但是到现在为止&#xf…

KMIP4J数据处理流程

Kmip1.0测试环境介绍:http://blog.csdn.net/lihuayong/article/details/25098093 1 测试环境整体结构 系统的结构是基于客户端-服务器体系结构(见下图)。红色水平虚线显示了KMIP1.0库和测试环境的边界。实现的测试环境由一个客户端和服务器端…

KMIP1.0环境搭建

开发环境:MyEclipse 10 JDK:jdk1.7 Tomcat:apache-tomcat-7.0.6 数据库:H2嵌入式数据库 下载java 实现的KIMP1.0版本的源码包和相关的jar包文件。 下载地址:http://sourceforge.net/projects/kmip4j/files/KMIP4J-V1.0…

kmip4j_KMIP4J入门

kmip4j 有关管理数据安全性和合规性的电子书 组织难以确定多个合规性任务的优先级,并创建数据安全策略来满足这些要求并保护其最敏感的数据。 您可以下载eBook, 管理合规性并保护企业数据 ,以了解在企业数据保护策略中有效管理合规性要求和保护数据的六个基本步骤。 “加密…

KMIP协议/TTLV格式解码

文章目录 KMIP协议官方文档手动解析TTLV格式请求响应 自动解析解析请求和响应 KMIP协议官方文档 KMIP协议官方文档:http://docs.oasis-open.org/kmip/spec/ 打开是这样的,在我写这篇文章的时候 KMIP更新到了1.4版本 以下KIMIP1.0协议为例: …

导入pfx证书

本文分享从Micrsoft Manange Console(简写为 MMC)中导入PFX证书的内容,您可以按住“Windows R”,从Run对话框中输入mmc,打开MMC界面。 一:添加管理单元(snap-in) 从File主菜单中选…

关于pfx证书和cer证书

Pfx证书,同时包含了公钥信息和私钥信息(用私钥加密进行签名证明是本人签名,用公钥解密对签名进行进行验证,证明签名的合法性) PFX也称为PKCS#12(Public Key Cryptography Standards #12,公钥密码技术标准#…

OpenSSL 生成pfx

OpenSSL 生成pfx Window需要安装OpenSSL(需要下载),Linux自带OpenSSL工具(无需安装) Window下载地址: 1. 官网 2. 上传了一份到csdn Window 命令 # 生成私钥 "D:\Program Files\OpenSSL-Win64\bi…

pfx 证书 转 jks 证书

今天在tomcat 配置 https pfx 证书时 总是配置失败 很是 头疼 &#xff0c;配置参数如下&#xff1a; <Connector port"443" protocol"org.apache.coyote.http11.Http11Protocol" SSLEnabled"true"maxThreads"150" scheme"ht…

通过openssl生成pfx证书

通过centos7上自带的openssl工具来生成。首先创建一个pfxcert目录。然后进入此目录。 1.生成.key文件&#xff08;内含被加密后的私钥&#xff09;&#xff0c;要求输入一个自定义的密码 [rootlocalhost cert]# openssl genrsa -des3 -out server.key 2048 Generating RSA priv…

windows合成pfx

思路 通过openssl工具合成pfx 步骤 1、通常情况下&#xff0c;开发人员的电脑都会安装git version软件&#xff0c;没有的话可以安装一个 2、安装好之后&#xff0c;回到桌面&#xff0c;鼠标右键-git bash here ,可以打开如下窗口 3、输入openssl回车&#xff0c;再输入…

服务器pfx文件如何导入,linux 导入pfx 证书

linux 导入pfx 证书 内容精选 换一换 单击“开始”,运行框输入“MMC”,回车。在MMC控制台菜单栏中单击“文件”,选择“添加/删除管理单元”。在“添加或删除管理单元”对话框,选择“可用管理单元”区域的“证书”。单击“添加”添加证书。在“证书管理”对话框,选择“计算…

.pfx 证书和 .cer 证书

证书系列&#xff1a; 1&#xff1a;.pfx 证书和 .cer 证书 2&#xff1a;导入pfx证书 通常情况下&#xff0c;作为文件形式存在的证书一般有三种格式&#xff1a; 第一种&#xff1a;带有私钥的证书&#xff0c;由Public Key Cryptography Standards #12&#xff0c;PKCS#1…

JavaDoc生成API详解

一、综述 1.1 简介 Javadoc 是 Java 自带的一种工具&#xff0c;其可以从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说&#xff0c;只要在编写程序时以一套特定的标记【Tag】作注释&#xff0c;在程序编写完成后&#xff0c;通过Javadoc…

IDEA生成JavaDoc文档

1.第一步&#xff1a;首先创建一个新的文件夹。 2.第二步&#xff1a;选中所要生成的包。 3.第三步&#xff1a;点击顶部工具&#xff08;Tools&#xff09;菜单&#xff0c;并选择生成javadoc&#xff08;Generate JavaDoc&#xff09;这个选项。 4.第四部&#xff1a;①然后会…

两种方法生成javaDoc文档

如果生成javaDoc文档 一.使用命令行命令生成javaDoc文档 在文件位置打开cmd命令 回车打开 2.javadoc 参数 Java文件 -encoding UTF-8&#xff1a;编码为UTF-8 -charset UTF-8 &#xff1a;字符级编码为UTF-8 作用&#xff1a;避免出现乱码 3.生成Doc文档 4.查看生成文档 …

Javadoc生成的详细操作教程

文章目录 Javadoc文档一、什么是Javadoc文档二、Javadoc文档注释三、常用注释文档标记四、Javadoc选项说明4.1 选项说明4.2 标记的顺序4.3 可以多次使用标记 五、命令生成doc文档5.1 测试所在的目录结构5.2 命令生成Javadoc文档步骤方式一&#xff1a;单个或多个.java文件生成d…

Javadoc注释编写入门

Javadoc简介 Javadoc是Sun Microsystems为Java语言创建的文档生成器&#xff0c;在Javadoc推出之前&#xff0c;程序开发者往往需要为每一个程序单独创建并更新一个文档&#xff0c;这种做法耗时耗力且极不方便&#xff0c;Javadoc的主要优点就是在于能够根据源代码的注释&…