xtrabackup 8.0安装
本篇文章内容基于文章中的各个软件版本
介绍
Percona XtraBackup是全球唯一的开源免费MySQL热备份软件,可为InnoDB和XtraDB 数据库执行非阻塞备份。使用Percona XtraBackup,您可以获得以下好处:
- 快速可靠地完成备份
- 备份期间不间断的事务处理
- 节省磁盘空间和网络带宽
- 自动备份验证
- 由于更快的恢复时间,更长的正常运行时间
Percona XtraBackup为所有版本的Percona Server for MySQL和MySQL制作MySQL热备份。它执行流式、压缩和增量MySQL 备份。
PS:XtraBackup 8.0版本与Mysql8.0配套,并移除innobackupex命令
yum安装
- 下载地址
https://www.percona.com/downloads/XtraBackup/LATEST/
- 下载安装
#下载rpm包
wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.25-17/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.25-17.1.el7.x86_64.rpm
#安装
yum install -y percona-xtrabackup-80-8.0.25-17.1.el7.x86_64.rpm
#查看
rpm -qa |grep xtrabackup
其他安装方式
- 详见官网
更多安装方式
安装后的工具
安装后有xtrabackup、xbcloud、xstream、xbcrypt、xbcloud_osenv、xbrlapi
xtrabackup备份
备份流程
工具
Xtrabackup中主要包含两个工具:
xtrabackup:是用于热备innodb,xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。
此版本中已移除innobackupex命令
常用选项:
--host 指定主机
--user 指定用户名
--password 指定密码
--port 指定端口
--databases 指定数据库
--sorcket 指定启动文件
--backup 指明操作为备份操作
--incremental 创建增量备份
--incremental-basedir 指定包含完全备份的目录
--incremental-dir 指定包含增量备份的目录
--apply-log 对备份进行预处理操作
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
--redo-only 不回滚未提交事务
--copy-back 恢复备份目录
备份恢复
- 全备命令
xtrabackup --defaults-file=/etc/my.cnf --backup --databases=test --user=root --password=1234 --compress --compress-threads=4 --target-dir=/backup/full/01 --socket=/var/lib/mysql/mysql.sock
# 压缩 --compress
# 加速压缩 --compress-threads
- 基于全备的增量备份操作
xtrabackup --defaults-file=/etc/my.cnf --backup --databases=test --user=root --password=1234 --compress --compress-threads=4 --target-dir=/backup/increment/01 --incremental-basedir=/backup/full/01 --socket=/var/lib/mysql/mysql.sock
全部备份恢复(基于全备)
- 关闭数据库
service mysqld stop
- 清空mysql的数据目录(清空前请先备份相关目录)
- 恢复数据(将全备复制到数据目录下)
#解压缩
xtrabackup --decompress --target-dir=/backup/full/01
#删除压缩文件 --remove-original 解压后压缩文件和数据文件共存,若不想保存压缩文件,添加此命令删除
#恢复数据
xtrabackup --copy-back --target-dir=/backup/full/01
- 为目录添加权限
chmod -R 777 文件夹
参数-R是递归的意思
777表示开放所有权限
chmod +x 某文件
如果给所有人添加可执行权限:chmod a+x 文件名;
如果给文件所有者添加可执行权限:chmod u+x 文件名;
如果给所在组添加可执行权限:chmod g+x 文件名;
如果给所在组以外的人添加可执行权限:chmod o+x 文件名
- 启动mysql服务
service mysqld start
增量备份恢复
- 关闭数据库
service mysqld stop
- 清空mysql的数据目录(清空前请先备份相关目录)
- 准备全量备份的恢复文件
xtrabackup --prepare --apply-log-only --target-dir=/backup/full/01
#--prepare 表示准备
#--apply-log-only 表示不回滚事务 解释详见 https://blog.csdn.net/ActionTech/article/details/101695649
- 将增量备份文件加载至全量备份文件中
xtrabackup --prepare --target-dir=/backup/full/01 --incremental-dir=/backup/increment/01
apply-log-only在最后的一份备份文件准备时不需要设置
- 恢复数据(将全备复制到数据目录下)
xtrabackup --copy-back --target-dir=/backup/full/01
- 为目录添加权限
chmod -R 777 文件夹
- 启动mysql服务
service mysqld start
遇到的问题
- Error: failed to execute query ‘LOCK INSTANCE FOR BACKUP’: 1227 (42000) Access denied; you need (at least one of) the BACKUP_ADMIN privilege(s) for this operation
通过看报错信息,发现是没有 BACKUP_ADMIN 权限导致的。
授权:
grant BACKUP_ADMIN on *.* to 'root'@'%';
刷新:
FLUSH PRIVILEGES;
- Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: 无法打开共享对象文件: 没有那个文件或目录 at - line 1535.
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘1234’;
- qpress: 未找到命令
安装解压缩工具
下载地址:http://www.quicklz.com/
解压
tar xvf qpress-11-linux-x64.tar
拷贝到/usr/bin
cp qpress /usr/bin
授权
chmod 755 /usr/bin/qpress