前言:
为什么需要压缩备份?我们都清楚,物理备份最大的缺点就是备份文件体积大,因此对于线上的较大数据库的备份结果进行压缩十分有必要,毕竟节省磁盘空间就是为企业节省成本。
备份:
使用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] ...donextrabackup: 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]# lltotal 8660-rw-r-----. 1 root root 470 Sep 7 21:24 backup-my.cnf.qpdrwxr-x---. 2 root root 4096 Sep 7 21:24 demo01drwxr-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.qpdrwxr-x---. 2 root root 4096 Sep 7 21:24 mysqldrwxr-x---. 2 root root 4096 Sep 7 21:24 performance_schemadrwxr-x---. 2 root root 4096 Sep 7 21:24 sbtestdrwxr-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]# lltotal 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.qpdrwxr-x---. 2 root root 4096 Sep 7 21:28 demo01drwxr-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.qpdrwxr-x---. 2 root root 4096 Sep 7 21:28 mysqldrwxr-x---. 2 root root 12288 Sep 7 21:28 performance_schemadrwxr-x---. 2 root root 4096 Sep 7 21:28 sbtestdrwxr-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 reportReporting MySQL serversMySQL server from group: mysqld1 is running
总结:
按照步骤来,问题不大。