.xb文件 mysql备份

软件准备:要安装两个软件
(1) Percona Xtrabackup
(2) qpress
mysql对应版本的xtrabackup,不同服务器安装不同的版本
mysql 5.1 – xtrabackup2.0以上
mysql5.6 --xtrabackup 2.2以上
mysql5.7 --xtrabackup2.4以上
mysql8 --xtrabackup8以上

安装 xtrabackup

我这里mysql版本是8.0.17
mysql8.0只能使用xtrabackup8.0
下载附件percona-xtrabackup-80-8.0.11-1.el7.x86_64.rpm

#下载
# wget https://repo.percona.com/yum/release/7/RPMS/x86_64/percona-xtrabackup-80-8.0.11-1.el7.x86_64.rpm

#安装
yum localinstall percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm

#校验
rpm -qa | grep -i xtrabackup
rpm -ql percona-xtrabackup-80

xtrabackup --version

qbpress

xtrabackup --compress 备份压缩使用
下载附件qpress-11-linux-x64.tar

#下载附件忽略此步骤
#wget http://www.quicklz.com/qpress-11-linux-x64.tar

#解压
tar -xvf qpress-11-linux-x64.tar

#复制
cp ./qpress /usr/bin

创建mysql备份用账号

创建具有完整备份所需的最低权限的数据库用户
用户密码可按需更改
数据库用户名: backup
数据库用户密码: backup@BACKUP2022
授权操作IP: localhost

CREATE USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY 'backup@BACKUP2022'; 

GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backup'@'localhost'; 

GRANT SELECT ON performance_schema.log_status TO 'backup'@'localhost';

FLUSH PRIVILEGES;

定时备份脚本

#! /bin/bash

#删除历史
find /data/wxcepbak/xtrabackup/backup/ -mtime +2 -type f -name "*.xbstream" -exec rm -rf {} \;

#备份
xtrabackup --user=backup --password=backup@BACKUP2022 --backup --stream=xbstream --compress --compress-threads=4 --target-dir=/data/wxcepbak/xtrabackup/backup/ > /data/wxcepbak/xtrabackup/backup/backup_`date +\%Y\%m\%d`.xbstream

远程COPY传输到备份机器存档

注意: 不用用操作系统root账号, 我这里创建了一个 wxcepbak 账号指向copy job

#! /bin/bash
#远程copy
nohup scp -P 22 /data/wxcepbak/xtrabackup/backup/backup_`date +\%Y\%m\%d`.xbstream wxcepbak@10.128.7.130:/backup/xtrabackup/xtream/ &

mysql恢复实例

mysql官网下载mysql-8.0.17-el7-x86_64.tar.gz
安装位置预览

[sunmj@localhost mysql3316]$ pwd
/home/sunmj/mysql/mysql3316
[sunmj@localhost mysql3316]$ ll
总用量 729216
drwxr-xr-x.  7 sunmj root       148 614 17:29 3316
-rwxr-xr-x.  1 sunmj root      1881 613 17:19 my.cnf.bak
drwxr-xr-x. 11 sunmj root       194 613 17:17 mysql
-rw-r--r--.  1 sunmj root 746682358 613 17:15 mysql-8.0.17-el7-x86_64.tar.gz
-rw-r--r--.  1 sunmj root     18168 614 09:18 mysql.out
-rw-------.  1 sunmj root      1575 614 10:53 nohup.out
-rw-r--r--.  1 sunmj root       548 613 17:47 readme.txt
[sunmj@localhost mysql3316]$ 

my.cnf

[client]
port = 3316
socket = /home/sunmj/mysql/mysql3316/3316/mysql.sock
[mysql]
no-auto-rehash
[mysqld]
user = sunmj
port = 3316
socket = /home/sunmj/mysql/mysql3316/3316/mysql.sock
basedir = /home/sunmj/mysql/mysql3316/3316/
datadir = /home/sunmj/mysql/mysql3316/3316/data
pid-file = /home/sunmj/mysql/mysql3316/3316/mysql.pid
relay-log = /home/sunmj/mysql/mysql3316/3316/relay-bin
relay-log-info-file = /home/sunmj/mysql/mysql3316/3316/relay-log.info
server-id = 13
lower_case_table_names=0
[mysqld_safe]
log-error = /home/sunmj/mysql/mysql3316/3316/mysql.err
pid-file = /home/sunmj/mysql/mysql3316/3316/mysql.pid

cd /home/sunmj/mysql/mysql3316/

# 安装

#解压
tar -zxvf mysql-8.0.17-el7-x86_64.tar.gz
mv mysql-8.0.17-el7-x86_64 mysql

#初始化
./mysql/bin/mysqld  --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --initialize-insecure  --user=sunmj --datadir=/home/sunmj/mysql/mysql3316/3316/data/ --lc-messages-dir=./mysql/share/english/

#启动
./mysql/bin/mysqld --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --lc-messages-dir=./mysql/share/english/

#更改密码
./mysql/bin/mysqladmin -S /home/sunmj/mysql/mysql3316/3316/mysql.sock -u root password 123@456 

#连接
./mysql/bin/mysql -u root -p 123@456 -S /home/sunmj/mysql/mysql3316/3316/mysql.sock

#数据恢复
#恢复使用mysql恢复实例及端口3316数据库实例

#首先关闭数据库(冷恢复)
./mysql/bin/mysqladmin -uroot -p123@456 -P 3316 -S /home/sunmj/mysql/mysql3316/3316/mysql.sock shutdown

#清空data
cd /home/sunmj/mysql/mysql3316/3316
mv data data_`date +%Y%m%d`
mkdir data

xtrabackup --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --user=root --prepare --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

xtrabackup --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --user=root --copy-back --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

#恢复验证

cd /home/sunmj/mysql/mysql3316/

#检查 data目录归属用户 用户归属不对执行下方命令
#chown -R sunmj:root ./data

#mysql恢复实例重启启动
./mysql/bin/mysqld --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --lc-messages-dir=./mysql/share/english/

#连接 使用备份数据账户密码登录
./mysql/bin/mysql -u root -p root@ROOT456 -S /home/sunmj/mysql/mysql3316/3316/mysql.sock

备份与恢复命令汇总

默认使用数据库默认配置

#全量备份
xtrabackup  --user=backup --password=backup@BACKUP2022 --backup --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

#压缩备份 
xtrabackup  --user=backup --password=backup@BACKUP2022 --backup --compress --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

#增加线程数
xtrabackup  --user=backup --password=backup@BACKUP2022 --backup --compress --compress-threads=4 --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

#解压压缩备份
xtrabackup --decompress=1 --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

#流式备份
xtrabackup --user=backup --password=backup@BACKUP2022 --backup --stream=xbstream --compress --compress-threads=4 --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/stream_`date +%Y%m%d` > backup_`date +%Y%m%d`.xbstream

#解压压缩备份
xbstream -x <  backup_`date +%Y%m%d`.xbstream -C /home/sunmj/xtrabackup/xtrabackup-8.0.11/stream_`date +%Y%m%d`


#数据恢复
#恢复使用mysql恢复实例及端口3316数据库实例

#首先关闭数据库(冷恢复)
./mysql/bin/mysqladmin -uroot -p123@456 -P 3316 -S /home/sunmj/mysql/mysql3316/3316/mysql.sock shutdown

#清空data
cd /home/sunmj/mysql/mysql3316/3316
mv data data_`date +%Y%m%d`
mkdir data

xtrabackup --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --user=root --prepare --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

xtrabackup --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --user=root --copy-back --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/full_`date +%Y%m%d`

#恢复验证

cd /home/sunmj/mysql/mysql3316/

#检查 data目录归属用户 用户归属不对执行下方命令
#chown -R sunmj:root ./data

#mysql恢复实例重启启动
./mysql/bin/mysqld --defaults-file=/home/sunmj/mysql/mysql3316/3316/my.cnf --lc-messages-dir=./mysql/share/english/

#连接 使用备份数据账户密码登录
./mysql/bin/mysql -u root -p root@ROOT456 -S /home/sunmj/mysql/mysql3316/3316/mysql.sock

远程备份(仅供参考)

需配置ssh免密登录

#ssh免密
echo "192.168.66.101 initnode" >> /etc/hosts
ssh-keygen # 一路回车
ssh-copy-id initnode

xtrabackup --defaults-file=/etc/my.cnf --user=databak  -S /tmp/mysql.sock --parallel=2 --backup --stream=xbstream --target-dir=/home/sunmj/xtrabackup/xtrabackup-8.0.11/stream_`date +%Y%m%d` | ssh root@initnode \ "cat - > /data/backup/xtra_full_`date +%Y%m%d%H%M%S`.xbstream"
### 处理 MySQL 5.7 xb 文件的方法 #### 背景信息 xb文件通常指的是Percona XtraBackup工具备份产生的文件。这些文件用于实现MySQL数据库的热备和快速恢复操作[^1]。 #### 准备工作 为了能够处理xb文件,需先确认已安装并配置好XtraBackup工具。如果尚未安装,则可以通过官方文档指导完成安装过程。对于Linux环境下的yum包管理器用户来说,可以利用`yum -y install percona-xtrabackup-24`来安装对应版本的XtraBackup软件[^3]。 #### 解压与准备还原 假设已经获取到了压缩形式存在的xb备份文件(例如`.tar.gz`),那么第一步就是解压缩该文件至指定位置: ```bash tar zxvf backup-full.tar.gz -C /path/to/restore/ ``` 此命令会把备份中的所有内容提取出来放置于目标路径下,其中包含了必要的元数据以及实际的数据页副本等重要组成部分。 #### 应用日志重做 由于xtrabackup备份过程中可能会截断事务日志,在正式执行恢复之前还需要应用增量的日志记录以确保数据一致性。这一步骤可通过如下指令达成: ```bash innobackupex --apply-log /path/to/restore/ ``` 这条语句的作用在于预演即将发生的变更而不会立即影响到正在运行的服务实例;它使得后续真正的恢复动作更加高效和平滑。 #### 停止现有服务并替换原有数据目录 在进行最终的数据迁移前,请务必停止现有的MySQL服务进程以免造成冲突或损坏风险。接着将旧有的data目录移走作为备份保存,并链接新的来自xb文件所代表的位置成为新的活跃存储区域: ```bash service mysqld stop mv /var/lib/mysql /var/lib/mysql_old cp -r /path/to/restore/backup /var/lib/mysql chown -R mysql:mysql /var/lib/mysql ``` 上述脚本片段展示了如何安全地切换至新近恢复过来的数据集合上,同时保持权限设置不变以便顺利重启服务。 #### 启动服务验证状态 最后重新激活MySQL服务器组件并通过客户端工具连接测试其健康状况: ```bash service mysqld start mysql -u root -p ``` 通过以上步骤即可成功处理由percona xtrabackup生成的xb格式备份文件,从而达到保护业务连续性和灾难恢复能力的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值