安装XtraBackup
官方文档: https://docs.percona.com/percona-xtrabackup/8.0/
https://www.percona.com/downloads#percona-xtrabackup
Percona XtraBackup
A hot backup solution for MySQL
Select Product
Package Download Options:
percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17-minimal.tar.gz
percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17-minimal.tar.gz.sho256sum
percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17.tar.gz
percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17.tar.gz.sho256sum
User Manual Documentation
# 创建安装目录sudomkdir-p /usr/local/xtrabackup# 解压到安装目录sudotar-xzvf percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17.tar.gz -C /usr/local/xtrabackup --strip-components=1# 创建符号链接到系统 PATHsudoln-sf /usr/local/xtrabackup/bin/* /usr/local/bin/# 验证安装xtrabackup --version# ls bin/ xbcloud xbcloud_osenv xbcrypt xbstream xtrabackup各个文件的具体作用如下:
xbcloud: 与流式备份相结合,将备份存储到云服务的对象存储上。xbcloud_osenv: 对 xbcloud 进行了二次封装,可自动读取 OpenStack 环境中的 OS_xxx 变量。xbcrypt: 用来加解密。xbstream: 用来解压流式备份集。xtrabackup: 大家常用的备份恢复工具。
创建备份用户
备份用户需要以下权限:
RELOAD:用于执行 FLUSH TABLES WITH READ LOCK 和 FLUSH NO_WRITE_TO_BINLOG TABLES,必需权限。
REPLICATION CLIENT:用于执行 SHOW MASTER STATUS,必需权限。如果是在从库进行备份,还需要执行 SHOW SLAVE STATUS。
BACKUP_ADMIN:用于执行 LOCK INSTANCE FOR BACKUP,必需权限。在 MySQL 5.7 中无需设置。
PROCESS:用于执行 SHOW ENGINE INNODB STATUS,SHOW PROCESSLIST,必需权限。
SYSTEM_VARIABLES_ADMIN:增量备份时执行 SET GLOBAL mysqlbackup_backupid=xxx 操作,非必需权限。在 MySQL 5.7 中无需设置。
SUPER:非必需权限。两种场景下需要:
- 指定了
--kill-long-queries-timeout,需要 KILL 慢查询。 - 从库备份指定了
--safe-slave-backup,需要重启复制。
- 指定了
SHOW VIEW:在 XtraBackup 8.0 中,会通过下面这个 SQL 来判断备份实例中是否存在 MyISAM 表。如果有则加全局读锁。对于一个普通用户,查询 INFORMATION_SCHEMA.TABLES,只能看到 information_schema 库中的表信息。如果要查看其它表,需要该表级别权限,常用的是 SELECT 权限,但 SELECT 权限能读取表中的数据,不满足合规要求。所以就选择了 SHOW VIEW 这个既能满足需求,又无实际影响的表级别权限。在 MySQL 5.7 中无需设置。
SELECTCOUNT(*)FROMinformation_schema.tablesWHEREengine='MyISAM'ORengine='RocksDB'如果使用了 Page Tracking 来进行增量备份,还需要 mysql.component 的查询权限。在 MySQL 5.7 中无需设置。
如果指定了
--history,还需要 PERCONA_SCHEMA.xtrabackup_history 的 SELECT, INSERT, CREATE, ALTER 权限。
具体的授权语句如下:
CREATEUSER`backup_user`@`localhost`IDENTIFIEDBY`backup_pass`;GRANTRELOAD,PROCESS,SHOWDATABASES,REPLICATIONCLIENT,SHOWVIEWON*.*TO`backup_user`