MySQL物理备份基础知识(基于xtrabackup2.4版本)

一 版本说明:

1、xtrabackup2.4可以备份5.1,5.5,5.6,5.7版本的MySQL,不能备份MySQL8.0及以上版本,
2、如果要备份MySQL8.x版本,使用xtrabackup8.0版本(xtrabackup8.0.12以前版本不支持MySQL8.0.20及以后版本的备份),
所以建议使用xtrabackup8.0.12及以上版本,另外xtrabackup8.x只能备份MySQL8.X系列,不能备份MySQL5.X版本

二 xtrabackup8.0.12相比之前版本有哪些新特性:

1、支持系统表空间加密
2、支持LZ4加密算法(--compress=lz4   --compress-threads=N).

三 xtrabackup2.4介绍:

1、备份步骤

1)开始记录redo log 的LSN
2) copy innodb表数据文件,与此同时,一个后台进程监视redo log的变化,将变化写入redo log 的备份文件
3)当innodb数据文件备份完成后,加FLUSH TABLES WITH READ LOCK,备份non-innodb 文件(lock table with backup 代替FTWRL锁,不过只对于percona server 5.6+)
4) non-innodb文件备份完成后,记录当时的binlog位置,这时备份redo log进程还在
5)完成redo log备份,释放FTWRL锁,完成备份

2、安装

当前最新版本2.4.20
https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
1) 解压
2) 设置环境变量
    vim /etc/profile
    export PATH=$PATH:/usr/local/mysql/bin:/tools/percona-xtrabackup-2.4.20-Linux-x86_64/bin
    source /etc/profile

3、先决条件

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
       'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;

4、备份场景

1) 全量备份
2)增量备份
3)压缩备份
4)加密备份

5、使用说明

 innobackupex
 innobackupex是xtrabackup的软链接。Innobackupex仍然支持2.2版本所有功能和语法,但现在已被废弃,并将在下一个主要版本中删除。
 xtrabackup
 一个编译的C二进制文件,它提供了备份整个MySQL数据库实例的功能,包括MyISAM、InnoDB和XtraDB表。
 xbcrypt
 用于加密和解密备份文件的实用程序。
 xbstream
 允许流和从xbstream格式提取文件的实用程序。
 xbcloud
 实用程序,用于从/到云下载和上传xbstream存档的全部或部分。
 
 强烈推荐使用xtrabackup工具进行日常备份。

6、xtrabackup主要选项

1)--backup
   执行备份必须的选项

2)--target-dir
   指定备份到该目录,如果不存在目录,会自动创建(注意不能是级联目录都不存在)
   
3)DSN(-h -P -u -p -S)   
   指定ip,port,user,password,socket等
   

4)以下两个参数控制当系统中出现长事务时xtrabackup执行FTWRL锁的行为

--ftwrl-wait-threshold=SECONDS 依赖于--ftwrl-wait-timeout=SECONDS,默认值60s,当--ftwrl-wait-timeout=0时,该参数不生效
--ftwrl-wait-timeout=SECONDS,默认值0,表示不关注长事务,直接执行FTWRL锁。如果非0,表示xtrabackup通过show processlist的方式,获取是否存在sql已经执行超过--ftwrl-wait-threshold 的值,如果超过了,
   则在执行FTWRL锁之前等待--ftwrl-wait-timeout时间,如果该sql未执行完成,xtrabackup进程退出备份。如果一个慢sql刚刚开始执行,执行时间还未超过--ftwrl-wait-threshold 的值,
   那么xtrabackup还是会执行FTWRL锁,这时候执行FTWRL还是会被block住。
   


5) --apply-log-only 
   增量备份时,在prepare阶段应用redo日志
   
6)--binlog-info
   此选项控制xtrabackup备份工具应如何检索与备份对应二进制日志坐标,一般备份无需指定该参数,默认即可
   OFF: 不获取binlog坐标,不会生成xtrabackup_binlog_info文件
   ON: 遍历binlog文件获取坐标,生成xtrabackup_binlog_info文件
   LOCKLESS:目前只在Percona Server实现,官方MySQL版本不支持该值
   AUTO:默认值,在ON和LOCKLESS之间自动选择,优先选择LOCKLESS,如果不支持LOCKLESS,那么选择ON

7)--compress
   此选项告诉xtrabackup使用指定的压缩算法压缩所有输出数据,包括事务日志文件和元数据文件。 目前唯一支持的算法是quicklz,
   结果文件具有qpress存档格式,如*.qp格式
   
8)--compress-threads=#
   此选项指定xtrabackup用于并行数据压缩的工作线程数。 此选项默认为1。 并行压缩可以与并行文件复制--parallel一起使用。 
   例如, --parallel=4 --compress --compress-threads=2 将创建4个I/O线程,这些线程将读取数据并将其管道到2个压缩线程。


9)--copy-back
   将先前备份的所有文件从备份目录复制到实例的数据目录。
   
10)--move-back
   将先前备份的所有文件从备份目录move到实例的数据目录。

11)--databases=#
 此选项指定应备份的数据库和表列表。 该选项接受表单“databasename1[.table_name1]databasename2[.table_name2]...”的列表]

12)--databases-exclude=name
 不包括基于名称的数据库,操作方式与--databases相同,但匹配的名称不包括在备份中。 请注意,此选项比--databases具有更高的优先级。

13)--databases-file=#
 此选项指定文件的路径,该文件包含应备份的数据库和表列表。 该文件可以包含表单databasename1[.table_name1]的列表元素,每行一个元素。

14)--decompress
    解压.qp文件,可以跟--parallel配合使用,采用多线程解压

15)--defaults-file=[MY.CNF]
    指定my.cnf的路径
    
16)--export
    用来恢复单个表
    
17)--parallel=#
    采用多线程备份,可以搭配copy-back,--decompress
    
18)--prepare
    应用redlo日志,达到数据一致性
    
19)--safe-slave-backup
当指定时,xtrabackup将在运行FLUSH TABLES WITH READ LOCK之前停止从SQL线程,并等待直到SHOW状态中的Slave_open_temp_tables为零才开始备份。 
如果没有打开的临时表,将进行备份,否则将启动和停止SQL线程,直到没有打开的临时表。 如果Slave_open_temp_tables在xtrabackup-safe-slave-backup-timeout秒后没有变为零,
则备份将失败。 备份完成后将重新启动从SQL线程。这个选项是为了处理复制临时表问题而实现的,row格式不存在该问题。  
    
20)--slave-info
此选项在备份从服务器时非常有用。 它打印主服务器的二进制日志位置。 它还将二进制日志坐标写入xtrabackup_slave_info文件,作为Change MASTER命令。 
可以通过xtrabackup_slave_info文件中的二进制日志位置的CHANGE MASTER命令来设置此主服务器的新从服务器。

21)--throttle=#
用来限制带宽,默认大小10MB, 如果--throttle=1表示带宽为10MB/S
posted @ 2020-08-24 17:13  茁壮的小草  阅读(584)  评论(0编辑  收藏  举报