PXC从完整备份中恢复指定表
PXC 从完整备份中恢复指定的表
备份服务器
备份文件处理
# 切换到备份目录下
cd /data/backups/full/
# 解压文件,使用gzip压缩的
gunzip mysql-23_yl_2021-06-29.gz
# 切换到临时目录
cd /tmp
# 创建临时文件夹
mkdir -pv outputdir
# 使用xbstream解压出来很多.qp文件
xbstream -x < /data/backups/full/mysql-23_yl_2021-06-29 -C ./outputdir/
# 把需要恢复的文件拷贝到数据库服务器上,
scp yl_user.idb.qp 172.34.21.23:~
数据库服务器
# 解压qp文件
# .qp结尾的压缩文件,需要安装qpress工具,因为innobackupex在解压时默认使用该工具
# 解压完之后就能看到 yl_user.idb 文件
innobackupex --decompress ./
数据库操作
随便登录一台机器
mysql -uroot -p
-- 切换数据库
use yl;
-- 备份数据表
XXXXX
-- 删除数据表
drop table yl_user;
-- 创建数据表
CREATE TABLE XXXXXX
以下操作需要在所有节点执行,不知道是不是这种恢复方式不会同步的问题
-- 修改全局变量 pxc_strict_mode
SET global pxc_strict_mode = PERMISSIVE ;
-- 加写锁,确保安全
lock tables yl_user write;
-- 丢弃表空间
alter table yl_user discard tablespace;
拷贝数据文件
拷贝数据文件到mysql目录下,并且修改权限
cp yl_user.ibd /data/mysql/yl/
chown -R mysql:mysql /data/mysql/yl/yl_user.ibd
切换回数据库
-- 载入表空间
alter table yl_user import tablespace;
-- 查看数据恢复情况
select count(1) from yl_user;
-- 解锁
unlock tables;
-- 修改全局变量
SET global pxc_strict_mode = ENFORCING ;
参考连接
- https://www.cnblogs.com/gomysql/p/6600616.html
- https://blog.csdn.net/weixin_39705435/article/details/110863294