解压腾讯DB冷备的xb文件

时间:2024-02-22 15:04:15
腾讯的DB备份是采用extrabackup的方式,并且下载后的文件是.xb后缀,这里看些怎么解压到sql文件。
 
想要解压xb文件,就要使用‘xbstream’指令,这个指令是跟extrabackup配套的,系统里默认没有需要自己安装:
extrabackup的下载地址为:
本次下载的是红框中的版本!
 
下载之后解压,解压后就能通过绝绝对路径使用相关命令了:
[root@VM_0_2_centos bin]# ll
total 714940
-rwxr-xr-x 1 root root   9229808 Feb 26  2019 xbcloud
-rwxr-xr-x 1 root root      3020 Feb 26  2019 xbcloud_osenv
-rwxr-xr-x 1 root root   9324864 Feb 26  2019 xbcrypt
-rwxr-xr-x 1 root root   9549720 Feb 26  2019 xbstream
-rwxr-xr-x 1 root root 703241544 Feb 26  2019 xtrabackup
[root@VM_0_2_centos bin]# pwd
/root/percona-xtrabackup-8.0.5-Linux-x86_64/bin
 
这里看到有很多指令,我们尝试使用‘xbstream’解压xb文件:
/root/percona/bin/xbstream -x -C ios < ios.xb
[root@VM_0_2_centos dbdata]# ll
drwxr-xr-x 2 root root       4096 Sep 23 02:10 ios
-rw-r--r-- 1 root root 1005775565 Sep 20 03:31 ios.xb
我们在xb文件的同级目录创建了ios目录,此时使用如下指令:
[root@VM_0_2_centos dbdata]# /root/percona/bin/xbstream -x -C ios < ios.xb
[root@VM_0_2_centos dbdata]# cd ios
[root@VM_0_2_centos ios]# ll
total 982196
-rw-r----- 1 root root 1005761185 Sep 23 02:10 cdb-pez9chj6_backup_20190920112840.sql.qp
这里看到xb文件被解压成了.sql.qp文件。
这里.qp文件就是乱码的,还需要再次解压,才能变成我们需要的sql文件!
 
这里我们需要使用‘qpress’指令,同时qpress也是系统默认没有安装的指令,需要手动安装:
 
[root@VM_0_2_centos ~]# tar -xvf qpress-11-linux-x64.tar
qpress
此时就出来了‘qpress’指令,同时还有另外一个包:qpress-1.1-3-x86_64.pkg.tar
解压后会出来一个‘usr’目录,这里面的bin下面也有我们想想要的指令。
 
OK,指令出来了,下面尝试解压:
/root/usr/bin/qpress -d cdb-doxuyubk_backup_20190920112729.sql.qp .
报错,说少库,也就是前面需要升级gcc的报错,还有个是少glibc的库报错!
此时,升级gcc:
[root@VM_0_2_centos dbdata]# strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
知道出现需要的库版本。
 
glibc的升级的话,就需要注意了!!!
[root@VM_0_2_centos dbdata]# strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
 
这里知道2.13,但我们需要的是2.14!怎么升级?
下载安装包:
百度云盘下载地址:https://pan.baidu.com/s/1YGia4YD45s42xMq9VapJow
提取密码:nejp
xz -d glibc-2.14.tar.xz        ##xz文件的解压方式
tar -xvf glibc-2.14.tar
cd glibc-2.14
mkdir build && cd build
../configure --prefix=/usr/local/glic214
make -j4
make install
此时在:
[root@VM_0_2_centos glic214]# ll
total 28
drwxr-xr-x  2 root root 4096 Sep 20 12:44 bin
drwxr-xr-x  2 root root 4096 Sep 20 12:44 etc
drwxr-xr-x 22 root root 4096 Sep 20 12:44 include
drwxr-xr-x  4 root root 4096 Sep 20 12:44 lib
drwxr-xr-x  3 root root 4096 Sep 20 12:44 libexec
drwxr-xr-x  2 root root 4096 Sep 20 12:44 sbin
drwxr-xr-x  5 root root 4096 Sep 20 12:44 share
[root@VM_0_2_centos glic214]# pwd
/usr/local/glic214
安装好了!
重新建立库的软连接:
[root@VM_0_2_centos dbdata]# find / -name libc.so.6
/root/glibc-2.14/build/libc.so.6
/usr/local/glic214/lib/libc.so.6
/lib64/libc.so.6
/lib/libc.so.6
临时修改环境变量
[root@uatblockchain01 build]# export LD_LIBRARY_PATH=/usr/local/glic214/lib:$LD_LIBRARY_PATH
[root@uatblockchain01 build]# echo $LD_LIBRARY_PATH
/usr/local/glic214/lib:
删除libc-2.12.so之前的软链接
[root@uatblockchain01 ~]# unlink /lib64/libc.so.6
或者直接执行
[root@uatblockchain01 ~]# rm -f /lib64/libc.so.6
 
如果上面删除命令执行后,导致该机器的很多shell命令无法执行!甚至于机器无法登陆!报错如下:
error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
    
注意:千万不要关闭当前的终端窗口,因为此时机器可能无法登陆了。只能在当前终端窗口下进行紧急修复,执行指令:
[root@uatblockchain01 ~]# ldconfig
 
然后做/lib64/libc.so.6新的软链接,软链接到libc-2.14.so
[root@uatblockchain01 lib64]# ln -s libc-2.14.so /lib64/libc.so.6
[root@uatblockchain01 lib64]# ll libc.so.6
lrwxrwxrwx 1 root root 12 Apr  8 03:50 libc.so.6 -> libc-2.14.so
此时我们再看看glibc支持的版本:
[root@VM_0_2_centos dbdata]# strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_PRIVATE
 
OK,到2.14了!
此时咱们再尝试解压.qp文件:
[root@VM_0_2_centos ios]# /root/usr/bin/qpress -d cdb-pez9chj6_backup_20190920112840.sql.qp .
[root@VM_0_2_centos ios]# ll
total 3955072
-rw-r--r-- 1 root root 3044223183 Sep 23 02:34 cdb-pez9chj6_backup_20190920112840.sql
-rw-r----- 1 root root 1005761185 Sep 23 02:10 cdb-pez9chj6_backup_20190920112840.sql.qp
 
此时sql文件就出来了!
 
握草!费了多大事!