主要步骤:
- 本地 Centos8.2 环境下自建 mysql8.0.25
- 下载安装 qpress、Percona XtraBackup
- 下载数据库物理备份文件
- 执行备份恢复
一、本地安装 MySQL8.0.25
这里使用的是 docker 运行的 创建相关目录
mkdir -pv /data/mysql/ {data,conf}
创建配置文件,可以运行一个 MySQL 容器,从容器中拷贝出来
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Custom config should go here
!includedir /etc/mysql/conf.d/
运行容器
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -v /etc/localtime:/etc/localtime:ro -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf -p 3306:3306 -d mysql:8.0.25
二、 下载安装 qpress、Percona XtraBackup
- 安装 qpress
yum install -y qpress
- 安装 Percona XtraBackup 对于 MySQL 5.7,需要下载及安装 Percona XtraBackup 2.4 及以上版本,MySQL8 需要安装 Percona XtraBackup8,本文使用的是 MySQL8,所以需要下载 Percona XtraBackup8 下载地址
# 上传官网下载的二进制包
tar xf percona-xtrabackup-8.0.25-17-Linux-x86_64.glibc2.12.tar.gz
cp percona-xtrabackup-8.0.25-17-Linux-x86_64.glibc2.12/bin/* /usr/bin/
三、下载数据库备份物理文件
自行下载不做演示
四、执行备份恢复
#创建存放数据目录
mkdir data
# 将备份文件解包到data目录
xbstream -x -p 4 < 备份文件.qp -C data
# 解压备份文件
xtrabackup --decompress --remove-original --parallel=4 --target-dir=./data/
# 应用日志
xtrabackup --prepare --target-dir=./data/
注意:避免出现版本问题,需要修改解压后的 backup-my.cnf 文件,注释掉自建数据库不支持的参数
# This MySQL options file was generated by innobackupex.
# The MySQL server
[mysqld]
innodb_checksum_algorithm=crc32
innodb_log_checksums=1
innodb_data_file_path=ibdata1:128M:autoextend
innodb_log_file_size=1048576000
innodb_page_size=16384
innodb_undo_directory=./
innodb_undo_tablespaces=2
server_id=2497588870
innodb_log_checksums=ON
innodb_redo_log_encrypt=OFF
innodb_undo_log_encrypt=OFF
server_uuid=d28d00b3-250f-11ed-87d8-fa163e6bd119
master_key_id=0
rds_xa_crash_safe=ON
停止数据库容器,修改 MySQL 数据库配置文件,以及修改 root 账号密码与原数据库密码一致,并将 data 目录与容器内/var/lib/mysql 进行挂载,启动数据库,验证数据恢复