MySQL使用xtrabackup备份和恢复教程

news2024/11/13 10:05:22

1、xtrabackup说明

xtrabackup是percona开源的mysql物理备份工具。
xtrabackup 8.0支持mysql 8.0版本的备份和恢复。
xtrabackup 2.4支持mysql 5.7及以下版本的备份和恢复。
这里我以xtrabackup 8.0为例讲解备份和恢复的具体操作方法。
xtrabackup 2.4版本的使用上和8.0版本相差并不大。
官网: https://github.com/percona/percona-xtrabackup

1.1、备份过程说明

在 XtraBackup 工具的备份过程中,默认情况下是不会锁定整个数据库的表的。XtraBackup 使用了多版本并发控制(MVCC)来确保备份期间数据库的一致性,并避免对数据库的读取和写入操作造成影响。

在备份过程中,XtraBackup 会先执行 LOCK INSTANCE FOR BACKUP 操作,这个操作会获得全局锁(Global Lock),但它的持有时间非常短暂,只是为了确保备份的一致性而进行的。在获取全局锁期间,XtraBackup 将不会执行任何其他操作。

一旦获得了全局锁,XtraBackup 就会释放该锁,并转而使用多版本并发控制(MVCC)来读取数据库的数据,这意味着备份期间数据库的读取和写入操作不会被阻塞。

这种备份方式称为 “Online Backup”,它允许在备份过程中继续对数据库进行读写操作,因此不会影响数据库的正常运行。由于备份期间不会锁定整个数据库表,所以备份过程对数据库的性能影响相对较小。

2、安装 Percona XtraBackup(XtraBackup)

wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
xtrabackup  --version

在这里插入图片描述

3、 Mysql测试环境

3.1、安装部署mysql版本 8.0.21

部署过程忽略
在这里插入图片描述

3.2、写入一些测试数据

进入数据库

/opt/apps/mysql/bin/mysql -uroot -p -S /opt/data/data_16303/mysql.sock

执行SQL语句

create database school character set utf8;
create table school.student(
学号 char(20), 
姓名 char(20), 
性别 char(5), 
手机号 int(11), 
通信地址 char(50));
ALTER TABLE school.student MODIFY COLUMN 手机号 BIGINT;
insert into school.student values('NSD2023002','蛇精','女',1389999999,'上海'),
 ('NSD181003','爷爷','男',1387777777,'长白山');
 select * from school.student;

在这里插入图片描述
附加Python写入更多的测试数据

import random
import string
import pymysql
import time

# MySQL数据库配置
db_config = {
    "host": "172.16.11.1",
    "port": 16303,
    "user": "mync",
    "password": "bR5!eA7~bA",
    "database": "school",
}

# 生成随机字符串
def generate_random_string(length):
    letters = string.ascii_letters
    return ''.join(random.choice(letters) for i in range(length))

# 生成随机数据
def generate_random_data():
    students = [
        {
            "学号": f"NSD{random.randint(100000, 999999)}",
            "姓名": generate_random_string(5),
            "性别": random.choice(["男", "女"]),
            "手机号": "1" + ''.join(random.choice(string.digits) for _ in range(10)),  # 生成11位数字字符串
            "通信地址": generate_random_string(10),
        }
        for _ in range(5)  # 更改要插入的随机记录数
    ]
    return students

# 将随机数据插入MySQL数据库
def insert_random_data(data):
    try:
        # 连接到MySQL数据库
        conn = pymysql.connect(**db_config)
        cursor = conn.cursor()

        # 插入数据到表中
        insert_query = "INSERT INTO school.student (学号, 姓名, 性别, 手机号, 通信地址) VALUES (%s, %s, %s, %s, %s)"
        for student in data:
            values = (
                student["学号"],
                student["姓名"],
                student["性别"],
                student["手机号"],
                student["通信地址"],
            )
            cursor.execute(insert_query, values)

        # 提交更改并关闭连接
        conn.commit()
        cursor.close()
        conn.close()
        print("数据插入成功。")
    except pymysql.Error as error:
        print(f"错误:{error}")
        if conn and conn.open:
            cursor.close()
            conn.close()

if __name__ == "__main__":
    try:
        while True:
            # 生成随机数据
            random_data = generate_random_data()

            # 将随机数据插入表中
            insert_random_data(random_data)

            # 等待一段时间,例如5秒
            time.sleep(5)

    except KeyboardInterrupt:
        print("手动停止数据插入。")

4、全量各种备份操作

4.1、本地全量备份

4.1.1、将整个数据库备份到本地的指定目录。

mkdir  -p /data/backup/
/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir=/opt/data/data_16303 --target-dir=/data/backup/ --port=16303 2> /tmp/xtrabackup.log

参数说明:

/usr/bin/xtrabackup: 这是执行 XtraBackup 工具的路径。
backup:发起全量备份
--slave-info:记录slave复制位点信息。
-uroot: 这是连接 MySQL 数据库时使用的用户名。
-p: 这是连接 MySQL 数据库时使用的密码选项,在命令中没有指定具体的密码值,所以执行命令时会提示您输入密码。
-S /opt/data/data_16303/mysql.sock: 这指定了 MySQL 服务器的 Unix 套接字路径。这个选项用于指定连接到 MySQL 服务器的套接字。
--datadir=/opt/data/data_16303: 这是 MySQL 数据目录的路径,XtraBackup 将从该路径读取数据库文件进行备份。
--target-dir=/data/backup/: 这是备份数据输出目录的路径。XtraBackup 将备份的数据输出到指定的目录中。
--port=16303:指定数据库端口
2> /tmp/xtrabackup.log: 这部分将标准错误输出 (stderr) 重定向到 /tmp/xtrabackup.log 文件。

4.1.2、执行命令之后,查看日志信息

在这里插入图片描述
在这里插入图片描述
可以观察到xtrabackup备份过程中的重要操作。比如何时锁表、何时解锁、何时开始备份、何时完成备份、备份是否成功等。

图中可以看到 completed OK!: 说明备份过程已成功完成。

4.1.3、查看备份出来的文件

在这里插入图片描述
每个文件的解释:

backup-my.cnf: 备份期间使用的 MySQL 配置文件。
ibdata1: InnoDB 存储引擎的系统表空间文件。它包含了表结构、数据和索引等信息。
mysql-bin.000005: 二进制日志文件,用于记录数据库的更改操作,以支持数据复制和恢复。
performance_schema: MySQL 的性能架构表,用于存储性能监控数据。
slave-bin.index: 从服务器的二进制日志索引文件,记录了从服务器的复制日志文件名。
undo_001: InnoDB 存储引擎的回滚段文件,用于支持事务的回滚操作。
xtrabackup_binlog_info: 备份期间的二进制日志信息,包括文件名和位置等。
xtrabackup_info: 备份的元数据信息,包括备份开始和结束时间、备份类型等。
xtrabackup_slave_info: 备份期间的主从复制信息,记录了主服务器的位置等信息。
ib_buffer_pool: InnoDB 存储引擎的缓冲池文件,用于缓存数据页。
mysql: MySQL 数据库的目录,其中可能包含其他表和数据文件。
mysql.ibd: MySQL 系统表的表空间文件。
school: 数据库中名为 "school" 的数据库的目录,其中可能包含其他表和数据文件。
sys: MySQL 的系统库,包含了系统视图和存储过程等。
undo_002: InnoDB 存储引擎的回滚段文件,用于支持事务的回滚操作。
xtrabackup_checkpoints: 备份期间生成的检查点信息,用于增量备份。
xtrabackup_logfile: 备份期间生成的日志文件。
xtrabackup_tablespaces: 备份期间生成的表空间信息,用于支持 InnoDB 表的恢复。

4.2、备份到远程主机

xtrabackup支持流式备份,备份文件本地不落盘,直接备份到远程主机,避免单个主机故障导致数据库和备份文件同时丢失。
本地主机跟远程主机提前做好SSH免密

/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock  --datadir=/opt/data/data_16303 --stream=xbstream --target-dir=/data/backup/ --port=16303 2> /tmp/xtrabackup.log  | ssh root@1.1.1.1 "cat -  > /data/backup/backup.s1"

命令执行后,由于做了SSH免密,只需输入MySQL的root密码。
在这里插入图片描述
命令解释:

这个命令执行了一个数据库备份操作,并将备份数据通过SSH传输到另一台远程主机。
/usr/bin/xtrabackup: 这是执行备份操作的命令。
--backup: 这是xtrabackup的选项之一,表示执行备份操作。
--slave-info: 这是xtrabackup的选项之一,表示在备份数据时包含复制相关的信息,以便在进行复制恢复时使用。
-uroot: 这是连接MySQL数据库的用户名,这里使用root用户进行连接。
-p: 这是连接MySQL数据库时的密码选项,命令中没有指定密码,因此在运行命令后,需要手动输入MySQL的密码。
-S /opt/data/data_16303/mysql.sock: 这是连接MySQL数据库时指定的UNIX套接字文件路径,用于指定数据库的连接方式。
--datadir=/opt/data/data_16303: 这是MySQL数据库的数据目录路径,指定要备份的数据库的数据目录。
--stream=xbstream: 这是xtrabackup的选项之一,表示将备份数据流式传输给stdout,以便在管道中传递到远程主机。
--target-dir=/data/backup/: 这是备份数据输出的目标目录路径。
--port=16303: 这是连接MySQL数据库时使用的端口号。
2> /tmp/xtrabackup.log: 这部分将标准错误输出重定向到/tmp/xtrabackup.log文件中,以便记录备份过程中可能出现的错误和警告。
|: 这是管道符号,它将前面命令的输出作为后面命令的输入。
ssh root@1.1.1.1: 这是SSH命令,用于远程登录到IP地址为1.1.1.1的主机,并使用root用户进行连接。
"cat - > /data/backup/backup.s1": 这部分是在远程主机上执行的命令,cat用于将标准输入(即前面备份命令传输的数据流)输出到/data/backup/backup.s1文件中。

4.3、压缩备份文件

可以在备份服务器上进行压缩,也可以在远程服务器上进行压缩。
压缩软件可以使用gzip,也可以使用pigz。pigz支持并行压缩和并行解压缩,可以加快压缩和解压的速度。

4.3.1、备份服务器上进行压缩

大概需求:
使用 Percona XtraBackup 工具备份 MySQL 数据库,连接到位于 /opt/data/data_16303 目录下的 MySQL 实例(使用用户名 “root”),备份的同时获取复制信息,备份数据输出到 /data/backup/ 目录下,并将备份数据进行压缩,压缩后的文件名为 backup1.gz。

/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir=/opt/data/data_16303 --target-dir=/data/backup/ --port=16303 2> /tmp/xtrabackup.log  | gzip - > /data/backup/backup1.gz

命令解释:

/usr/bin/xtrabackup: 这是实际执行的备份工具的路径。
--backup: 这是 Percona XtraBackup 工具的选项之一,表示进行备份操作。
--slave-info: 这是 Percona XtraBackup 工具的选项之一,表示在备份的时候,也要获取复制信息。通常在配置了 MySQL 主从复制时使用,以确保备份数据的一致性。
-uroot: 这是连接 MySQL 数据库的用户名,这里使用了 "root" 用户。
-p: 这是一个选项,表示在连接数据库时需要输入密码。由于没有指定密码,系统会提示输入密码后才能继续执行。
-S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径,用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。
--datadir=/opt/data/data_16303: 这是指定 MySQL 数据目录的路径,即数据库文件所在的位置。
--target-dir=/data/backup/: 这是指定备份文件输出的目录路径。在这里,备份文件将会输出到 /data/backup/ 目录下。
--port=16303: 这是指定要连接的 MySQL 实例的端口号,这里指定为 16303。
2> /tmp/xtrabackup.log: 这是将标准错误输出(stderr)重定向到 /tmp/xtrabackup.log 文件中,用于记录备份过程中的错误信息。
| gzip - > /data/backup/backup1.gz: 这是将备份数据通过管道传送到 gzip 命令中,并将压缩后的数据输出到 /data/backup/backup1.gz 文件中。

4.3.2、发送到远程服务器压缩

大概需求
使用 Percona XtraBackup 工具备份 MySQL 数据库,连接到位于 /opt/data/data_16303 目录下的 MySQL 实例(使用用户名 “root”),备份的同时获取复制信息,备份数据通过 SSH 传输到位于 IP 地址为 “1.1.1.1” 的远程服务器,并在远程服务器上进行压缩保存,压缩后的文件名为 backup1.gz。

/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir=/opt/data/data_16303 --target-dir=/data/backup/ --port=16303 2> /tmp/xtrabackup.log  | ssh root@1.1.1.1 "gzip - > /data/backup/backup1.gz"

命令解释:

/usr/bin/xtrabackup: 这是实际执行的备份工具的路径。
--backup: 这是 Percona XtraBackup 工具的选项之一,表示进行备份操作。
--slave-info: 这是 Percona XtraBackup 工具的选项之一,表示在备份的时候,也要获取复制信息。通常在配置了 MySQL 主从复制时使用,以确保备份数据的一致性。
-uroot: 这是连接 MySQL 数据库的用户名,这里使用了 "root" 用户。
-p: 这是一个选项,表示在连接数据库时需要输入密码。由于没有指定密码,系统会提示输入密码后才能继续执行。
-S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径,用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。
--datadir=/opt/data/data_16303: 这是指定 MySQL 数据目录的路径,即数据库文件所在的位置。
--target-dir=/data/backup/: 这是指定备份文件输出的目录路径。在这里,备份文件将会输出到 /data/backup/ 目录下。
--port=16303: 这是指定要连接的 MySQL 实例的端口号,这里指定为 16303。
2> /tmp/xtrabackup.log: 这是将标准错误输出(stderr)重定向到 /tmp/xtrabackup.log 文件中,用于记录备份过程中的错误信息。
|: 这是管道符号,用于将前面命令的输出传递给后面的命令。
ssh root@1.1.1.1: 这是通过 SSH 登录到远程服务器,其中 "root" 是远程服务器的用户名,"1.1.1.1" 是远程服务器的 IP 地址。
"gzip - > /data/backup/backup1.gz": 这是在远程服务器上执行的命令,通过管道接收来自前面命令的备份数据,并将其压缩后保存到远程服务器的 /data/backup/backup1.gz 文件中。

4.4、备份到云端(OSS)

xtrabackup工具中有一个xbcloud程序,可以将数据库直接备份到S3对象存储中,本地不落盘。
本次演示备份到阿里云OSS

4.4.1、部署ossutil工具

参考文章:阿里云ossutil使用

验证命令是否安装成功

./ossutil64  ls

在这里插入图片描述

4.4.2、创建一个命名管道

mkfifo /data/backup/backup0625.xbstream
ls -l /data/backup/backup0625.xbstream

在这里插入图片描述

4.4.3、执行备份命令

将备份的输出重定向到步骤 4.4.2 创建的命名管道。

/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir=/opt/data/data_16303 --stream=xbstream --target-dir=/data/backup/ --port=16303 2>/data/backup/xtrabackup.log   > /data/backup/backup0625.xbstream

命令解释:
其余参数参考以上步骤

> /data/backup/backup0625.xbstream: 以 xbstream 格式流式输出备份数据重定向到 /data/backup/backup0625.xbstream 文件中,用于保存备份数据的 xbstream 文件。

4.4.4、使用ossutil工具将备份文件上传到OSS

ossutil64 cp /data/backup/backup0625.xbstream  oss://ycdbbackup

解释命令:

ossutil64: 这是实际执行的 OSS 命令行工具
cp: 这是 ossutil64 工具的一个子命令,用于复制文件或目录。
/data/backup/backup0625.xbstream: 这是本地的文件路径,指定了要上传的备份文件 backup0625.xbstream 所在的位置。
oss://ycdbbackup: 这是 OSS 存储桶的路径,指定了上传文件的目标位置。在这里,ycdbbackup 是 OSS 存储桶的名称,文件将会上传到该存储桶中。

5、增量备份操作

xtrabackup支持增量备份,在做增量备份之前,需要先做一个全量备份,xtrabackup会基于innodb page的lsn号来判断是否需要备份一个page,如果page lsn大于上次备份的lsn号,就需要备份该page。

5.1、进行一次全量备份。

使用 Percona XtraBackup 工具备份 MySQL 数据库,并将备份数据以流式 xbstream 格式进行压缩,然后保存到 /data/backup/full/backup_full.gz 文件中。

/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock  --datadir=/opt/data/data_16303 --stream=xbstream --target-dir /data/backup/full --port=16303 --extra-lsndir=/data/backup/full 2>/data/backup/full/backup_full.log | gzip -  > /data/backup/full/backup_full.gz

在这里插入图片描述
各参数命令解释:

/usr/bin/xtrabackup: 这是实际执行的备份工具的路径。
--backup: 这是 Percona XtraBackup 工具的选项之一,表示进行备份操作。
--slave-info: 这是 Percona XtraBackup 工具的选项之一,表示在备份的时候,也要获取复制信息。通常在配置了 MySQL 主从复制时使用,以确保备份数据的一致性。
-uroot: 这是连接 MySQL 数据库的用户名,这里使用了 "root" 用户。
-p: 这是一个选项,表示在连接数据库时需要输入密码。由于没有指定密码,系统会提示输入密码后才能继续执行。
-S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径,用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。
--datadir=/opt/data/data_16303: 这是指定 MySQL 数据目录的路径,即数据库文件所在的位置。
--stream=xbstream: 这是一个选项,指定备份数据以 xbstream 格式进行流式输出。xbstream 格式支持并行处理和压缩,适用于备份大型数据库。
--target-dir /data/backup/full: 这是指定备份文件输出的目录路径。在这里,备份文件将会输出到 /data/backup/full 目录下。
--port=16303: 这是指定要连接的 MySQL 实例的端口号,这里指定为 16303。
--extra-lsndir=/data/backup/full: 这是指定备份过程中产生的日志文件(LSN文件)的存放目录。LSN文件包含备份信息和复制信息。
2>/data/backup/full/backup_full.log: 这是将标准错误输出(stderr)重定向到 /data/backup/full/backup_full.log 文件中,用于记录备份过程中的错误信息。
|: 这是管道符号,用于将前面命令的输出传递给后面的命令。
gzip - > /data/backup/full/backup_full.gz: 这是将备份数据通过管道传送到 gzip 命令中,并将压缩后的数据输出到 /data/backup/full/backup_full.gz 文件中。

综合命令解释:
这个命令的含义是:使用 Percona XtraBackup 工具备份 MySQL 数据库,连接到位于 /opt/data/data_16303 目录下的 MySQL 实例(使用用户名 “root”),备份的同时获取复制信息,并以 xbstream 格式流式输出备份数据,备份数据输出到 /data/backup/full 目录中,并将备份数据进行压缩,压缩后的文件名为 backup_full.gz。同时,将错误信息输出到 /data/backup/full/backup_full.log 文件中。

5.1.1、测试写入新的数据

全量备份完之后,测试写入新的数据,使用Python 脚本模拟写入。

在这里插入图片描述

5.2、发起增量备份

使用 Percona XtraBackup 工具进行增量备份,将增量备份数据以流式 xbstream 格式进行压缩,并保存到 /data/backup/inc1/backup_inc1.gz 文件中。

5.2.1、在全量备份的基础上做增量备份

mkdir /data/backup/inc1
/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir=/opt/data/data_16303 --stream=xbstream --target-dir /data/backup/inc1 --port=16303 --extra-lsndir=/data/backup/inc1 --incremental-basedir=/data/backup/full 2>/data/backup/inc1/backup_inc1.log | gzip -  > /data/backup/inc1/backup_inc1.gz

参数解释:

/usr/bin/xtrabackup: 这是实际执行的备份工具的路径。
--backup: 这是 Percona XtraBackup 工具的选项之一,表示进行备份操作。
--slave-info: 这是 Percona XtraBackup 工具的选项之一,表示在备份的时候,也要获取复制信息。通常在配置了 MySQL 主从复制时使用,以确保备份数据的一致性。
-uroot: 这是连接 MySQL 数据库的用户名,这里使用了 "root" 用户。
-p: 这是一个选项,表示在连接数据库时需要输入密码。由于没有指定密码,系统会提示输入密码后才能继续执行。
-S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径,用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。
--datadir=/opt/data/data_16303: 这是指定 MySQL 数据目录的路径,即数据库文件所在的位置。
--stream=xbstream: 这是一个选项,指定备份数据以 xbstream 格式进行流式输出。xbstream 格式支持并行处理和压缩,适用于备份大型数据库。
--target-dir /data/backup/inc1: 这是指定备份文件输出的目录路径。在这里,增量备份文件将会输出到 /data/backup/inc1 目录下。
--port=16303: 这是指定要连接的 MySQL 实例的端口号,这里指定为 16303。
--extra-lsndir=/data/backup/inc1: 这是指定备份过程中产生的日志文件(LSN 文件)的存放目录。LSN 文件包含备份信息和复制信息。
--incremental-basedir=/data/backup/full: 这是指定增量备份的基准目录,即之前已经完成的完整备份(full backup)的目录路径。这里是指定增量备份基于 /data/backup/full 目录下的完整备份。
2>/data/backup/inc1/backup_inc1.log: 这是将标准错误输出(stderr)重定向到 /data/backup/inc1/backup_inc1.log 文件中,用于记录备份过程中的错误信息。
|: 这是管道符号,用于将前面命令的输出传递给后面的命令。
gzip - > /data/backup/inc1/backup_inc1.gz: 这是将增量备份数据通过管道传送到 gzip 命令中,并将压缩后的数据输出到 /data/backup/inc1/backup_inc1.gz 文件中。

5.2.2、在上一次增量备份的基础上进行增量备份

使用 Percona XtraBackup 工具进行第二次增量备份,将增量备份数据以流式 xbstream 格式进行压缩,并保存到 /data/backup/inc2/backup_inc2.gz 文件中。
需要注意的是,恢复增量备份时,需要增量备份前的全量备份,以及该增量备份和全量备份之间的所有增量备份。

我这边的上一次增量备份目录是 /data/backup/inc1

mkdir /data/backup/inc2
/usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir=/opt/data/data_16303 --stream=xbstream --target-dir /data/backup/inc2 --port=16303 --extra-lsndir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1 2>/data/backup/inc2/backup_inc2.log | gzip -  > /data/backup/inc2/backup_inc2.gz

命令参数解释:

/usr/bin/xtrabackup: 这是实际执行的备份工具的路径。
--backup: 这是 Percona XtraBackup 工具的选项之一,表示进行备份操作。
--slave-info: 这是 Percona XtraBackup 工具的选项之一,表示在备份的时候,也要获取复制信息。通常在配置了 MySQL 主从复制时使用,以确保备份数据的一致性。
-uroot: 这是连接 MySQL 数据库的用户名,这里使用了 "root" 用户。
-p: 这是一个选项,表示在连接数据库时需要输入密码。由于没有指定密码,系统会提示输入密码后才能继续执行。
-S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径,用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。
--datadir=/opt/data/data_16303: 这是指定 MySQL 数据目录的路径,即数据库文件所在的位置。
--stream=xbstream: 这是一个选项,指定备份数据以 xbstream 格式进行流式输出。xbstream 格式支持并行处理和压缩,适用于备份大型数据库。
--target-dir /data/backup/inc2: 这是指定备份文件输出的目录路径。在这里,第二次增量备份文件将会输出到 /data/backup/inc2 目录下。
--port=16303: 这是指定要连接的 MySQL 实例的端口号,这里指定为 16303。
--extra-lsndir=/data/backup/inc2: 这是指定备份过程中产生的日志文件(LSN 文件)的存放目录。LSN 文件包含备份信息和复制信息。
--incremental-basedir=/data/backup/inc1: 这是指定增量备份的基准目录,即上一次已经完成的增量备份(inc1 backup)的目录路径。这里是指定第二次增量备份基于 /data/backup/inc1 目录下的增量备份,如果上次备份的目录是其他,就需要更改。
2>/data/backup/inc2/backup_inc2.log: 这是将标准错误输出(stderr)重定向到 /data/backup/inc2/backup_inc2.log 文件中,用于记录备份过程中的错误信息。
|: 这是管道符号,用于将前面命令的输出传递给后面的命令。
gzip - > /data/backup/inc2/backup_inc2.gz: 这是将增量备份数据通过管道传送到 gzip 命令中,并将压缩后的数据输出到 /data/backup/inc2/backup_inc2.gz 文件中。

6、恢复全量备份

恢复全量备份大致可以分成以下几步:解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。

6.1、删除测试机器上的数据库

由于之前的实验做了全量备份,所以我本次可以直接删除库,方便后续验证恢复。

在这里插入图片描述
删除之后停掉mysql服务

6.2、解压文件

如果备份时使用了xbstream,需要先解压备份文件。
我们备份时使用了–stream=xbstream和gzip压缩,先使用gunzip接解压缩,再使用xbstream将文件提取出来。

gunzip backup_full.gz
在这里插入图片描述

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

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

相关文章

PX4从放弃到精通(二十九):传感器冗余机制

文章目录 前言一、parametersUpdate二、imuPoll三、 put四、 confidence五、 get_best 前言 PX4 1.13.2 一个人可以走的更快,一群人才能走的更远,可加文章底部微信名片 代码的位置如下 PX4冗余机制主要通过传感读数错误计数和传感器的优先级进行选优 …

解决[Vue Router warn]: No match found for location with path “/day“问题

首先是升级vue-router4.0后会警告[Vue Router warn]: No match found for location with path "/day" 找了许久解决方案如下: 一、404页面不需要再异步路由后边添加,直接放到静态路由里即可 二、要注意不能写name,否则会刷新默认…

Parameter ‘roleList‘ not found.

Parameter roleList not found. Available parameters are [arg1, arg0, param1, param2] 多半是Mapper层传入多个参数的时候,没有加Param注解,导致BindException错误

ORA-01187 ORA-01110

ORA-01187: cannot read from file because it failed verification tests ORA-01110: data file 201: ‘/u01/app/oracle/oradata/CNDB/temp01.dbf’ 查询临时文件是存在的 重建临时数据文件 删除临时文件: alter database tempfile /u01/app/oracle/oradata…

56. 合并区间 排序

Problem: 56. 合并区间 文章目录 思路Code 思路 对数组排序,按照左端点从小到大排序。初始化Merged,将第一个区间放入。遍历intervals ,如果当前区间的左端点比merged最后一个区间的右端点大,不重合,直接将该区间加入最后&#xf…

《零基础入门学习Python》第070讲:GUI的终极选择:Tkinter7

上节课我们介绍了Text组件的Indexs 索引和 Marks 标记,它们主要是用于定位,Marks 可以看做是特殊的 Indexs,但是它们又不是完全相同的,比如在默认情况下,你在Marks指定的位置中插入数据,Marks 的位置会自动…

指针的基础应用(数组的颠倒和排序,二维数组的表示)

1.数组的颠倒&#xff1a;若有10个数字&#xff0c;那么数组的颠倒即 a[0]与a[9]交换,a[1]与a[8]交换&#xff0c;a[2]与a[7]交换&#xff0c;......a[4]与a[5]交换&#xff0c;所以到a[4]就颠倒完毕&#xff0c;即 (n-1)/2 若不用指针代码如下 #include<stdio.h>voi…

交互式AI技术与模型部署:使用Gradio完成一项简单的交互式界面

下面的这段代码使用Gradio库创建了一个简单的交互式界面。用户可以输入名称、选择是早上还是晚上、拖动滑动条来选择温度&#xff0c;然后点击"Launch"按钮&#xff0c;界面会显示相应的问候语和摄氏度温度。例如&#xff0c;如果用户输入"John"&#xff0…

iperf3 编译安装及网讯WX1860千兆网口测试

iperf3 编译安装及网讯1860千兆网口测试 编译安装 安装包下载地址:https://github.com/esnet/iperf/archive/refs/tags/3.8.tar.gz 将安装包iperf-3.8.tar.gz拷贝测试系统盘桌面,使用如下命令进行编译安装: tar zxvf iperf-3.8.tar.gz cd iperf-3.8 ./configure make s…

LeetCode-222-完全二叉树的节点个数

一&#xff1a;题目描述&#xff1a; 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节…

点餐系统测试报告

文章目录 一、项目介绍项目简介功能介绍 二、测试计划1 功能测试功能测试用例发现的 BUG 和 解决方法注册功能上传图片功能 2 自动化测试3 性能测试 一、项目介绍 项目简介 该项目是一个门店点餐系统&#xff0c;采用前后端分离的方式实现&#xff0c;后端框架是SSM&#xff…

R-并行计算

本文介绍在计算机多核上通过parallel包进行并行计算。 并行计算运算步骤&#xff1a; 加载并行计算包&#xff0c;如library(parallel)。创建几个“workers”,通常一个workers一个核&#xff08;core&#xff09;&#xff1b;这些workers什么都不知道&#xff0c;它们的全局环…

第一次后端复习整理(JVM、Redis、反射)

1. JVM 文章仅为自身笔记 详情查看一篇文章掌握整个JVM&#xff0c;JVM超详细解析&#xff01;&#xff01;&#xff01; 1.1 什么是JVM jvm是Java虚拟机 1.2 Java文件的编译过程 程序员编写代码形成.java文件经过javac编译成.class文件再通过JVM的类加载器进入运行时数据…

Java云电子病历源码:电子病历在线编辑

SaaS模式Java版云HIS系统的子系统云电子病历系统源码&#xff0c;本系统采用前后端分离模式开发和部署&#xff0c;支持电子病历四级。 电子病历系统主要为医院住院部提供医疗记录依据&#xff0c;协助医务人员在医疗活动过程中通过信息化手段生成的文字、图表、图形、数据、影…

华为数通HCIP-EVPN基础

MP-BGP MP-BGP&#xff08;Multiprotocol Extensions for BGP-4&#xff09;在RFC4760中被定义&#xff0c;用于实现BGP-4的扩展以允许BGP携带多种网络层协议&#xff08;例如IPv6、L3VPN、EVPN等&#xff09;。这种扩展有很好的后向兼容性&#xff0c;即一个支持MP-BGP的路由…

Java Swing Mysql实现的电影票订票管理系统

Java swing mysql实现的电影票订票管理系统&#xff0c;主要实现的功能有&#xff1a;用户端&#xff1a;登录注册、查看电影信息、选择影院场次、选座购票、查看自己的影票、评价电影等功能。管理员&#xff1a;登录、电影管理、影院管理、场次管理、影票管理等功能。 需要源…

echarts统计图x轴文字过长,以省略号显示,鼠标经过提示全部内容

效果图如下 主要代码如下&#xff1a; //1.js代码内加入extension方法&#xff0c;chart参数是echarts实例 function extension(chart) {// 注意这里&#xff0c;是以X轴显示内容过长为例&#xff0c;如果是y轴的话&#xff0c;需要把params.componentType xAxis改为yAxis/…

Shell脚本学习-read命令

Shell变量可以直接赋值或者脚本传参的方式&#xff0c;还可以使用echo命令从标准输入中获得&#xff0c;read为bash内置命令。 [rootvm1 ~]# type echo echo is a shell builtin常用参数&#xff1a; -p prompt&#xff1a;设置提示信息&#xff0c;我们看help内容的信息&…

学习笔记|百度文心千帆大模型平台测试及页面交互简易代码

目前百度文心一言的内测资格申请相当拉胯&#xff0c;提交申请快3个月&#xff0c;无任何音讯。不知道要等到什么时候。 百度适时开放了百度文心千帆大模型平台&#xff0c;目前可以提交申请测试&#xff0c;貌似通过的很快&#xff0c;已取得测试申请资格&#xff0c;可以用起…

产品经理如何平衡用户体验与商业价值?

近期负责前端产品设计工作的小李忍不住抱怨&#xff1a;公司总是要求客户第一&#xff0c;实现客户良好体验&#xff0c;但在实际操作过程中&#xff0c;面向用户 体验提升的需求&#xff0c;研发资源计划几乎很难排上&#xff0c;资源都放在公司根据业务价值排序的需求…