mysql备份工具innobackupex压缩备份以及还原压缩备份

前言:

为什么需要压缩备份?我们都清楚,物理备份最大的缺点就是备份文件体积大,因此对于线上的较大数据库的备份结果进行压缩十分有必要,毕竟节省磁盘空间就是为企业节省成本(前一篇文章已经写到不压缩的备份案例,感兴趣可以看一下)。


备份:

使用innobackupxe进行备份,选项可以使用innobackupex  --help的方式查看各个选项的意思。

[root@centos7 ~]# innobackupex --defaults-file=/root/innobackupex.cnf --user=root --password=root --compress --compress-threads=4 --stream=xbstream --parallel=5 -S /tmp/mysql.sock1 /innobackup_dir/ > /innobackup_dir/backup.xbstream
....省略其它输出
190907 21:00:53 [00] Compressing and streaming 
190907 21:00:53 [00]        ...done
xtrabackup: Transaction log of lsn (2242984) to (2242993) was copied.
190907 21:00:53 completed OK!##表示备份完毕

参数介绍:
--defaults-file:指定用于备份的.cnf配置文件
--user:备份数据库用户名
--password:备份数据库密码
--compress :表示本次备份进行压缩
--compress-threads=4 :表示启动四个线程进行压缩
--stream=xbstream : 表示使用流的方式进行压缩,并指定使用xbstream工具
--parallel=5 : 启动5个线程进行备份
-S /tmp/mysql.sock1 表示本地socket登录
最终的效果是:将文件备份到innobackup_dir目录中后,>压缩为/innobackup_dir/backup.xbstream

如果想备份后直接传递到备份存储机器上:
[root@centos7 ~]# innobackupex --defaults-file=/root/innobackupex.cnf --user=root --password=root --compress --compress-threads=4 --stream=xbstream --parallel=5 -S /tmp/mysql.sock1 /innobackup_dir/ | ssh root@ip "xbstream -x -C /data/mysql/backupdir"
(传输的前提是,机器之间打通免密登录)

查看备份结果:

[root@centos7 innobackup_dir]# ls -lh backup.xbstream 
-rw-r--r--. 1 root root 166M Sep  7 21:14 backup.xbstream
##备份结果就是一个文件,体积明显小了很多

恢复:

解压:

[root@centos7 outputdir]# mkdir -pv outputdir
[root@centos7 outputdir]# xbstream -x < /innobackup_dir/backup.xbstream -C /outputdir/
解压的结果(相当于tar,只是把一个大包打开了而已,并没有真正解压):
[root@centos7 outputdir]# ll
total 8660
-rw-r-----. 1 root root     470 Sep  7 21:24 backup-my.cnf.qp
drwxr-x---. 2 root root    4096 Sep  7 21:24 demo01
drwxr-x---. 2 root root    4096 Sep  7 21:24 employees
-rw-r-----. 1 root root   11480 Sep  7 21:24 ib_buffer_pool.qp
-rw-r-----. 1 root root  601282 Sep  7 21:24 ibdata1.qp
drwxr-x---. 2 root root    4096 Sep  7 21:24 mysql
drwxr-x---. 2 root root    4096 Sep  7 21:24 performance_schema
drwxr-x---. 2 root root    4096 Sep  7 21:24 sbtest
drwxr-x---. 2 root root   12288 Sep  7 21:24 sys
-rw-r-----. 1 root root 2213603 Sep  7 21:24 undo001.qp
-rw-r-----. 1 root root  596797 Sep  7 21:24 undo002.qp
-rw-r-----. 1 root root 5384066 Sep  7 21:24 undo003.qp
-rw-r-----. 1 root root     102 Sep  7 21:24 xtrabackup_binlog_info.qp
-rw-r-----. 1 root root     144 Sep  7 21:24 xtrabackup_checkpoints
-rw-r-----. 1 root root     555 Sep  7 21:24 xtrabackup_info.qp
-rw-r-----. 1 root root     394 Sep  7 21:24 xtrabackup_logfile.qp
有很多.qp结尾的压缩文件,需要安装qpress工具,因为innobackupex在解压时默认使用该工具
[root@centos7 outputdir]#  yum install qpress
真正解压:
[root@centos7 outputdir]# innobackupex --decompress ./ ##默认从/usr/local/bin寻找qpress解压
解压结果:
190907 21:28:40 completed OK!
[root@centos7 outputdir]# ll
total 53776
-rw-r--r--. 1 root root      487 Sep  7 21:28 backup-my.cnf
-rw-r-----. 1 root root      470 Sep  7 21:24 backup-my.cnf.qp
drwxr-x---. 2 root root     4096 Sep  7 21:28 demo01
drwxr-x---. 2 root root     4096 Sep  7 21:28 employees
-rw-r--r--. 1 root root    27956 Sep  7 21:28 ib_buffer_pool
-rw-r-----. 1 root root    11480 Sep  7 21:24 ib_buffer_pool.qp
-rw-r--r--. 1 root root 12582912 Sep  7 21:28 ibdata1
-rw-r-----. 1 root root   601282 Sep  7 21:24 ibdata1.qp
drwxr-x---. 2 root root     4096 Sep  7 21:28 mysql
drwxr-x---. 2 root root    12288 Sep  7 21:28 performance_schema
drwxr-x---. 2 root root     4096 Sep  7 21:28 sbtest
drwxr-x---. 2 root root    20480 Sep  7 21:28 sys
-rw-r--r--. 1 root root  9437184 Sep  7 21:28 undo001
-rw-r-----. 1 root root  2213603 Sep  7 21:24 undo001.qp
-rw-r--r--. 1 root root  7340032 Sep  7 21:28 undo002
-rw-r-----. 1 root root   596797 Sep  7 21:24 undo002.qp
-rw-r--r--. 1 root root 16777216 Sep  7 21:28 undo003
-rw-r-----. 1 root root  5384066 Sep  7 21:24 undo003.qp
-rw-r--r--. 1 root root       15 Sep  7 21:28 xtrabackup_binlog_info
-rw-r-----. 1 root root      102 Sep  7 21:24 xtrabackup_binlog_info.qp
-rw-r-----. 1 root root      144 Sep  7 21:24 xtrabackup_checkpoints
-rw-r--r--. 1 root root      606 Sep  7 21:28 xtrabackup_info
-rw-r-----. 1 root root      555 Sep  7 21:24 xtrabackup_info.qp
-rw-r--r--. 1 root root     2560 Sep  7 21:28 xtrabackup_logfile
-rw-r-----. 1 root root      394 Sep  7 21:24 xtrabackup_logfile.qp

修改outputdir为对应的库的名称,并修改原库为另外的一个名称,修改新库的权限

[root@centos7 /]# mv data1 data1_backup
[root@centos7 /]# mv outputdir/ data1
[root@centos7 /]# chown mysql.mysql data1 -R
##启动实例,发现能正常启动,至此,数据库恢复完毕
[root@centos7 /]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is running

 

总结:

      按照步骤来,问题不大。

你可能感兴趣的:(MySQL)