Xtrabackup是Percona发布的一款物理备份工具,通常将直接复制数据文件作为备份手段的方式称为物理备份。相比逻辑备份而言速度更快、服务器负载也更低,并且备份期间不会锁表(MyISAM引擎依然存在FTWRL),备份期间不用间断业务,如果备份期间数据发生变化也会通过redolog保持数据一致,并且支持增量备份。只不过在进行单表备份和恢复时非常麻烦,这种场景建议用逻辑备份。
二、Xtrabackup安装1、Percona官网推荐使用Yum方式安装,只需要配置好仓库地址即可
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm yum install percona-xtrabackup-24.x86_64 #mysql 8以前都是使用该版本2、如果是下载的rpm包手动安装,如果出现“ libev.so.4()(64bit) is needed by percona-xtrabackup-2.3.4-1.el7.x86_64”这样的报错,只需要配置好EPEL的yum源,再安装libev即可,如图:
3、安装好Xtrabackup后会提供给用户2给备份工具,分别是xtrabackup和innobackup。xtrabackup主要针对innodb表来做备份,而innobackupex是为了兼容老版本的非innod表备份,对xtrabackup进行了一次封装,查看innobackupex会发现它是xtrabackup的软连接,用innobackup备份innodb表时会自动调用xtrabackup。xtrabackup在8.0版本已经不再支持innobackup
三、innobackupex常用选项· --defaults-file=:指定my.cnf配置文件路径,如/etc/my.cnf。该选项必须是第一个选项,它会根据配置文件查找数据路径
· --user=:执行备份操作的MySQL用户(非系统用户),该用户需要有MySQL的相关权限
· --password=:MySQL用户的密码
· --databases:指定要备份的数据库,多个数据库以空格隔开,如"db1 db2",在指定某数据库时也可以只指定其中的某张表(MySQL需要配置innodb_file_per_table = 1)
· --no-timestamp:使用这个选项后,备份时不会创建一个以时间戳命名的目录
· --compress:压缩备份数据,可以达到好几十倍的压缩率。恢复时需在apply-log之前增加--decompress解压步骤
· --compress-threads=8:启用压缩备份时开启的压缩线程数
· --stream:使用xbstream或tar流备份,使用此选项时备份数据将以指定流格式输出到标准输出上,通常用它实现本机不落盘的异地备份
· --parallel=4:备份所用的线程数
· --slave-info :在从库进行备份时加上该参数后会在备份目录下生成xtrabackup_slave_info文件,该文件记录了主库的binlog position和GTID信息而非进行备份的从库的信息。这样在使用从库备份进行恢复或者部署新的从库时都可以找到正确的主库position。如果主库使用的传统复制模式并且slave_parallel_workers不为0,则该选项无法使用,备份下来的数据也无法部署为新的从库。
· --safe-slave-backup:检测从库在备份期间是否有打开临时表(保证数据一致性),如果没有打开临时表就stop SQL thread开始备份,备份完后再start SQL thread。如果有打开的临时表就会等待--safe-slave-backup-timeout超时